S3バケット"scenario-awscli-input-<AWSアカウントID>"にファイルをアップロードします。
手順に必要な設定値を変数に格納をします。
転送ファイル用ディレクトリを指定します。
変数の設定: DIR_LOCAL="${HOME}/environment/local-scenario-awscli-input"
変数の設定:
DIR_LOCAL="${HOME}/environment/local-scenario-awscli-input"
転送対象ファイルを指定します。
変数の設定: FILE_LOCAL="${DIR_LOCAL}/test.jpg" \ && echo ${FILE_LOCAL} 結果(例): ${HOME}/environment/local-scenario-awscli-input/test.jpg
FILE_LOCAL="${DIR_LOCAL}/test.jpg" \ && echo ${FILE_LOCAL}
結果(例):
${HOME}/environment/local-scenario-awscli-input/test.jpg
S3バケット名を指定します。
変数の設定: S3_BUCKET_PREFIX='scenario-awscli-input' コマンド: aws_account_id=$( \ aws sts get-caller-identity \ --query 'Account' \ --output text \ ) \ && echo ${aws_account_id} 結果(例): <AWSアカウントID> 変数の設定: S3_BUCKET_NAME="${S3_BUCKET_PREFIX}-${aws_account_id}" \ && echo ${S3_BUCKET_NAME} 結果(例): scenario-awscli-input-<AWSアカウントID>
S3_BUCKET_PREFIX='scenario-awscli-input'
コマンド:
aws_account_id=$( \ aws sts get-caller-identity \ --query 'Account' \ --output text \ ) \ && echo ${aws_account_id}
<AWSアカウントID>
S3_BUCKET_NAME="${S3_BUCKET_PREFIX}-${aws_account_id}" \ && echo ${S3_BUCKET_NAME}
scenario-awscli-input-<AWSアカウントID>
S3オブジェクトキーを指定します。
変数の設定: S3_OBJECT_KEY='test-metadata-map.jpg'
S3_OBJECT_KEY='test-metadata-map.jpg'
S3オブジェクトのメタデータを指定します。
変数の設定: STRING_S3_OBJECT_METADATA='{"ServiceName": "MyService1", "UserName": "Bob"}'
STRING_S3_OBJECT_METADATA='{"ServiceName": "MyService1", "UserName": "Bob"}'
各変数に正しい設定値が格納されていることを確認します。
変数の確認: cat << END # 1. FILE_LOCAL:"${HOME}/environment/local-scenario-awscli-input/test.jpg" FILE_LOCAL="${FILE_LOCAL}" # 2. S3_BUCKET_NAME:"scenario-awscli-input-<AWSアカウントID>" S3_BUCKET_NAME="${S3_BUCKET_NAME}" # 3. S3_OBJECT_KEY:"test-metadata-map.jpg" S3_OBJECT_KEY="${S3_OBJECT_KEY}" # 4. STRING_S3_OBJECT_METADATA:"{"ServiceName": "MyService1", "UserName": "Bob"}" STRING_S3_OBJECT_METADATA="${STRING_S3_OBJECT_METADATA}" END
変数の確認:
cat << END # 1. FILE_LOCAL:"${HOME}/environment/local-scenario-awscli-input/test.jpg" FILE_LOCAL="${FILE_LOCAL}" # 2. S3_BUCKET_NAME:"scenario-awscli-input-<AWSアカウントID>" S3_BUCKET_NAME="${S3_BUCKET_NAME}" # 3. S3_OBJECT_KEY:"test-metadata-map.jpg" S3_OBJECT_KEY="${S3_OBJECT_KEY}" # 4. STRING_S3_OBJECT_METADATA:"{"ServiceName": "MyService1", "UserName": "Bob"}" STRING_S3_OBJECT_METADATA="${STRING_S3_OBJECT_METADATA}" END
各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。
S3バケットにファイルを転送します。
変数の確認: cat << END # S3_BUCKET_NAME:"scenario-awscli-input-<AWSアカウントID>" S3_BUCKET_NAME="${S3_BUCKET_NAME}" # S3_OBJECT_KEY:"test-metadata-map.jpg" S3_OBJECT_KEY="${S3_OBJECT_KEY}" # FILE_LOCAL:"${HOME}/environment/local-scenario-awscli-input/test.jpg" FILE_LOCAL="${FILE_LOCAL}" # STRING_S3_OBJECT_METADATA:"{"ServiceName": "MyService1", "UserName": "Bob"}" STRING_S3_OBJECT_METADATA="${STRING_S3_OBJECT_METADATA}" END コマンド: aws s3api put-object \ --bucket ${S3_BUCKET_NAME} \ --key ${S3_OBJECT_KEY} \ --body ${FILE_LOCAL} \ --metadata "${STRING_S3_OBJECT_METADATA}" 結果(例): { "ETag": "\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"" }
cat << END # S3_BUCKET_NAME:"scenario-awscli-input-<AWSアカウントID>" S3_BUCKET_NAME="${S3_BUCKET_NAME}" # S3_OBJECT_KEY:"test-metadata-map.jpg" S3_OBJECT_KEY="${S3_OBJECT_KEY}" # FILE_LOCAL:"${HOME}/environment/local-scenario-awscli-input/test.jpg" FILE_LOCAL="${FILE_LOCAL}" # STRING_S3_OBJECT_METADATA:"{"ServiceName": "MyService1", "UserName": "Bob"}" STRING_S3_OBJECT_METADATA="${STRING_S3_OBJECT_METADATA}" END
aws s3api put-object \ --bucket ${S3_BUCKET_NAME} \ --key ${S3_OBJECT_KEY} \ --body ${FILE_LOCAL} \ --metadata "${STRING_S3_OBJECT_METADATA}"
{ "ETag": "\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"" }
「S3バケット"scenario-awscli-input-<AWSアカウントID>"にオブジェクト"test-metadata-map.jpg"が存在する。」ことを確認します。
コマンド: aws s3api list-objects-v2 \ --bucket ${S3_BUCKET_NAME} \ --query "Contents[?Key == \`${S3_OBJECT_KEY}\` ].Key" \ --output text 結果(例): test-metadata-map.jpg
aws s3api list-objects-v2 \ --bucket ${S3_BUCKET_NAME} \ --query "Contents[?Key == \`${S3_OBJECT_KEY}\` ].Key" \ --output text
test-metadata-map.jpg
S3ダッシュボード( https://console.aws.amazon.com/s3/home )にアクセスします。
左ペインの"バケット"をクリックします。
バケット一覧(画面)
検索欄にバケット名"scenario-awscli-input-<AWSアカウントID>"を入力します。
バケット名"scenario-awscli-input-<AWSアカウントID>"(リンク)をクリックします。
バケット詳細画面
"オブジェクト"タブを表示します。
オブジェクト(タブ)
検索欄にオブジェクトキー"test-metadata-map.jpg"を入力して、エンターキーを押します。
オブジェクト"test-metadata-map.jpg"が表示されていることを確認します。