メインコンテンツまでスキップ

Amazon S3のアップローダー/ダウンローダー

logo

Amazon S3にファイルをアップロードしたり、ダウンロードしたりするためのテンプレートです。

AWSのアクセスキーとシークレットが必要です。

紹介動画

概要

想定ユーザー

  • Amazon S3にファイルをアップロードしたり、ダウンロードしたりしたいユーザー。

テンプレート動作

  • 入力
    • シークレット
      • AWS_ACCESS_KEY_ID
      • AWS_SECRET_ACCESS_KEY
    • s3-upload FunctionのEnvironment variables
      • TARGET_S3_URI
        • アップロード先のS3 URI。下記のような値。
          • s3://{bucket-name}/{prefix(folder-name)}/{object-name}
          • s3://{bucket-name}/{object-name}
      • SOURCE_PATH
        • s3-upload FunctionのInputのPathと同一の値。
      • AWS_ACCESS_KEY_ID
        • AWSアクセスキーID。ここでは ${{SECRET.AWS_ACCESS_KEY_ID}} のように指定し、実際の値は対応するシークレットに設定する。
      • AWS_SECRET_ACCESS_KEY
        • AWSシークレットアクセスキー。ここでは ${{SECRET.AWS_SECRET_ACCESS_KEY}} のように指定し、実際の値は対応するシークレットに設定する。
      • AWS_DEFAULT_REGION
        • AWSリージョン。設定は任意。
    • s3-download FunctionのEnvironment variables
      • SOURCE_S3_URI
        • ダウンロード元のS3 URI。下記のような値。
          • s3://{bucket-name}/{prefix(folder-name)}/{object-name}
          • s3://{bucket-name}/{object-name}
      • TARGET_PATH
        • s3-download FunctionのOutputのPathと同一の値。
      • AWS_ACCESS_KEY_ID
        • AWSアクセスキーID。ここでは ${{SECRET.AWS_ACCESS_KEY_ID}} のように指定し、実際の値は対応するシークレットに設定する。
      • AWS_SECRET_ACCESS_KEY
        • AWSシークレットアクセスキー。ここでは ${{SECRET.AWS_SECRET_ACCESS_KEY}} のように指定し、実際の値は対応するシークレットに設定する。
      • AWS_DEFAULT_REGION
        • AWSリージョン。設定は任意。
    • アップロード対象のファイル
      • ファイルをS3にアップロードする場合、POSTリクエストで設定したEndpointにファイルを送信する。
  • Output
    • ダウンロード対象のファイル
      • ファイルをS3からダウンロードする場合、設定したEndpointからGETリクエストでファイルをダウンロードする。
  • Function
    • Amazon S3にファイルをアップロードする。
    • Amazon S3からファイルをダウンロードする。

利用方法

単体での動作確認

  1. Canvasでシークレットとして下記を設定する。
    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
  2. ファイルをS3にアップロードする場合、Canvasで s3-upload FunctionのEnvironment variablesとして下記を設定する。
    • TARGET_S3_URI
      • アップロード先のS3 URI。下記のような値。
        • s3://{bucket-name}/{prefix(folder-name)}/{object-name}
        • s3://{bucket-name}/{object-name}
    • SOURCE_PATH
      • s3-upload FunctionのInputのPathと同一の値。
    • AWS_ACCESS_KEY_ID
      • AWSアクセスキーID。ここでは ${{SECRET.AWS_ACCESS_KEY_ID}} のように指定し、実際の値は対応するシークレットに設定する。
    • AWS_SECRET_ACCESS_KEY
      • AWSシークレットアクセスキー。ここでは ${{SECRET.AWS_SECRET_ACCESS_KEY}} のように指定し、実際の値は対応するシークレットに設定する。
    • AWS_DEFAULT_REGION
      • AWSリージョン。設定は任意。
  3. ファイルをS3からダウンロードする場合、Canvasで s3-download FunctionのEnvironment variablesとして下記を設定する。
    • SOURCE_S3_URI
      • ダウンロード元のS3 URI。下記のような値。
        • s3://{bucket-name}/{prefix(folder-name)}/{object-name}
        • s3://{bucket-name}/{object-name}
    • TARGET_PATH
      • s3-download FunctionのOutputのPathと同一の値。
    • AWS_ACCESS_KEY_ID
      • AWSアクセスキーID。ここでは ${{SECRET.AWS_ACCESS_KEY_ID}} のように指定し、実際の値は対応するシークレットに設定する。
    • AWS_SECRET_ACCESS_KEY
      • AWSシークレットアクセスキー。ここでは ${{SECRET.AWS_SECRET_ACCESS_KEY}} のように指定し、実際の値は対応するシークレットに設定する。
    • AWS_DEFAULT_REGION
      • AWSリージョン。設定は任意。
  4. デプロイボタンを押し、デプロイの完了を待つ。
  5. ファイルをS3にアップロードする場合、下記操作を行う。
    1. /upload Endpointの /file にPOSTリクエストでファイルを送信する。例えば、curlコマンドの場合、下記を実行する。
      curl -X POST https://studio.{env-id}.studio.exabase.ai/{namespace-id}/s3-upload/upload/file \
      -H "Content-Type: multipart/form-data" \
      -F "file=@/path/to/your/file"
    2. Pipelineが実行されると、S3にファイルがアップロードされる。
  6. ファイルをS3からダウンロードする場合、下記操作を行う。
    1. /run-ai Endpointに空のJSONをPOSTするリクエストを送り、Pipelineをキックする。例えば、curlコマンドの場合、下記を実行する。
      curl -X POST https://studio.{env-id}.studio.exabase.ai/{namespace-id}/s3-download/run-dl/ \
      -H "Content-Type: application/json" \
      -d "{}"
    2. Pipelineの処理が完了すると、 output Entityにファイルが送信される。
    3. /download Endpointの /data にGETリクエストを送り、file IDを取得する。例えば、curlコマンドの場合、下記を実行する。
      curl -X GET https://studio.{env-id}.studio.exabase.ai/{namespace-id}/s3-download/download/data \
      -H "Content-Type: multipart/form-data"
      得られるJSONは下記のようになる。
      {
      "data": {
      "fileId":"{your-file-id}",
      "layerId":"",
      "filename":"output",
      "encoding":"7bit",
      "mimeType":"application/octet-stream"
      }
      }
    4. /download Endpointの /file/{file-id} にGETリクエストを送り、ファイルをダウンロードする。例えば、curlコマンドの場合、下記を実行する。
      curl https://studio.{env-id}.studio.exabase.ai/{namespace-id}/s3-download/download/file/{file-id} \
      > {output-file-path}

他のアセットとの連携

  • ファイルをS3にアップロードする場合、 単体での動作確認 と同様に "s3-upload" Workspace のような設定を行い、それを活用して他アセットからアップロードする。
  • ファイルをS3からダウンロードする場合、 単体での動作確認 と同様に "s3-download" Workspace のような設定を行い、それを活用して他アセットからダウンロードする。

関連情報