ハンズオン(簡易版): AWS CLI基礎 (入力)

1.2. S3オブジェクトのアップロード (scenario-awscli-input-<AWSアカウントID>)

手順の目的

S3バケット"scenario-awscli-input-<AWSアカウントID>"にファイルをアップロードします。

設定値の指定

設定値の指定

手順に必要な設定値を変数に格納をします。

1. 転送対象ファイル

転送ファイル用ディレクトリを指定します。

変数の設定:

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

2. S3バケット名

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>

3. S3オブジェクトキー

S3オブジェクトキーを指定します。

変数の設定:

S3_OBJECT_KEY='test-expires.jpg'

4. S3オブジェクトの有効期限

S3オブジェクトの有効期限を指定します。

変数の設定:

S3_OBJECT_EXPIRES_SECOND_OFFSET='900'

設定値の確認

各変数に正しい設定値が格納されていることを確認します。

変数の確認:

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-expires.jpg"
       S3_OBJECT_KEY="${S3_OBJECT_KEY}"
  # 4. S3_OBJECT_EXPIRES_SECOND_OFFSET:"900"
       S3_OBJECT_EXPIRES_SECOND_OFFSET="${S3_OBJECT_EXPIRES_SECOND_OFFSET}"

END

各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

有効期限の日時を取得します。

コマンド:

S3_OBJECT_EXPIRES_ISO8601=$(
  date -d "${S3_OBJECT_EXPIRES_SECOND_OFFSET} second" \
    '+%Y-%m-%dT%H:%M:%SZ' \
) \
  && echo ${S3_OBJECT_EXPIRES_ISO8601}

結果(例):

2023-08-24T01:23:45Z

S3バケットにファイルを転送します。

変数の確認:

cat << END

  # S3_BUCKET_NAME:"scenario-awscli-input-<AWSアカウントID>"
    S3_BUCKET_NAME="${S3_BUCKET_NAME}"
  # S3_OBJECT_KEY:"test-expires.jpg"
    S3_OBJECT_KEY="${S3_OBJECT_KEY}"
  # FILE_LOCAL:"${HOME}/environment/local-scenario-awscli-input/test.jpg"
    FILE_LOCAL="${FILE_LOCAL}"
  # S3_OBJECT_EXPIRES_ISO8601:"20xx-xx-xxTxx:xx:xxZ"
    S3_OBJECT_EXPIRES_ISO8601="${S3_OBJECT_EXPIRES_ISO8601}"

END

コマンド:

aws s3api put-object \
  --bucket ${S3_BUCKET_NAME} \
  --key ${S3_OBJECT_KEY} \
  --body ${FILE_LOCAL} \
  --expires "${S3_OBJECT_EXPIRES_ISO8601}"

結果(例):

{
  "ETag": "\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\""
}

完了確認

「S3バケット"scenario-awscli-input-<AWSアカウントID>"にオブジェクト"test-expires.jpg"が存在する。」ことを確認します。

コマンド:

aws s3api list-objects-v2 \
  --bucket ${S3_BUCKET_NAME} \
  --query "Contents[?Key == \`${S3_OBJECT_KEY}\` ].Key" \
  --output text

結果(例):

test-expires.jpg

手順の完了

(参考) マネジメントコンソールの確認

  • 左ペインの"バケット"をクリックします。

バケット一覧(画面)

  • 検索欄にバケット名"scenario-awscli-input-<AWSアカウントID>"を入力します。

  • バケット名"scenario-awscli-input-<AWSアカウントID>"(リンク)をクリックします。

バケット詳細画面

  • "オブジェクト"タブを表示します。

オブジェクト(タブ)

  • 検索欄にオブジェクトキー"test-expires.jpg"を入力して、エンターキーを押します。

  • オブジェクト"test-expires.jpg"が表示されていることを確認します。