AWS CLIのページング機能を確認します。
手順に必要な設定値を変数に格納をします。
S3バケット名を指定します。
変数の設定: S3_BUCKET_PREFIX='handson-cli-awscli-output' コマンド: 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} 結果(例): handson-cli-awscli-output-<AWSアカウントID>
変数の設定:
S3_BUCKET_PREFIX='handson-cli-awscli-output'
コマンド:
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}
handson-cli-awscli-output-<AWSアカウントID>
最大出力結果数を指定します。
変数の設定: MAX_ITEMS='100'
MAX_ITEMS='100'
トークン一時ファイル用ディレクトリを指定します。
変数の設定: DIR_TMP="${HOME}/environment/tmp-handson-cli-awscli-output"
DIR_TMP="${HOME}/environment/tmp-handson-cli-awscli-output"
ディレクトリが存在することを確認し、存在しない場合は作成します。
コマンド: ls -d ${DIR_TMP} > /dev/null 2>&1 \ || mkdir -p ${DIR_TMP}
ls -d ${DIR_TMP} > /dev/null 2>&1 \ || mkdir -p ${DIR_TMP}
各変数に正しい設定値が格納されていることを確認します。
変数の確認: cat << END # 1. S3_BUCKET_NAME:"handson-cli-awscli-output-<AWSアカウントID>" S3_BUCKET_NAME="${S3_BUCKET_NAME}" # 2. MAX_ITEMS:"100" MAX_ITEMS="${MAX_ITEMS}" # 3. DIR_TMP:"${HOME}/environment/tmp-handson-cli-awscli-output" DIR_TMP="${DIR_TMP}" END
変数の確認:
cat << END # 1. S3_BUCKET_NAME:"handson-cli-awscli-output-<AWSアカウントID>" S3_BUCKET_NAME="${S3_BUCKET_NAME}" # 2. MAX_ITEMS:"100" MAX_ITEMS="${MAX_ITEMS}" # 3. DIR_TMP:"${HOME}/environment/tmp-handson-cli-awscli-output" DIR_TMP="${DIR_TMP}" END
各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。
トークン一時ファイルを指定します。
変数の設定: FILE_NEXT_TOKEN=${DIR_TMP}/next_token-$$.txt \ && echo ${FILE_NEXT_TOKEN} 結果(例): ${HOME}/environment/tmp-handson-cli-awscli-output/next_token-xxxxx.txt
FILE_NEXT_TOKEN=${DIR_TMP}/next_token-$$.txt \ && echo ${FILE_NEXT_TOKEN}
${HOME}/environment/tmp-handson-cli-awscli-output/next_token-xxxxx.txt
出力を取得します。
コマンド: aws s3api list-objects-v2 \ --bucket ${S3_BUCKET_NAME} \ --max-items ${MAX_ITEMS} \ > ${FILE_NEXT_TOKEN} 結果(例): (出力なし) 注釈 最初の100件とNextトークンの値がファイルに出力されます。
aws s3api list-objects-v2 \ --bucket ${S3_BUCKET_NAME} \ --max-items ${MAX_ITEMS} \ > ${FILE_NEXT_TOKEN}
(出力なし)
注釈
最初の100件とNextトークンの値がファイルに出力されます。
Nextトークンを取得します。
変数の設定: NEXT_TOKEN=$( \ cat ${FILE_NEXT_TOKEN} \ | jp.py 'NextToken' \ | sed 's/"//g' \ ) \ && echo ${NEXT_TOKEN} 結果(例): xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
NEXT_TOKEN=$( \ cat ${FILE_NEXT_TOKEN} \ | jp.py 'NextToken' \ | sed 's/"//g' \ ) \ && echo ${NEXT_TOKEN}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
次の出力を取得します。
コマンド: aws s3api list-objects-v2 \ --bucket ${S3_BUCKET_NAME} \ --max-items ${MAX_ITEMS} \ --starting-token ${NEXT_TOKEN} \ --query 'length(Contents[])' 結果(例): 100
aws s3api list-objects-v2 \ --bucket ${S3_BUCKET_NAME} \ --max-items ${MAX_ITEMS} \ --starting-token ${NEXT_TOKEN} \ --query 'length(Contents[])'
100
ここでは件数のみ取得しています。
取得件数が100であることを確認します。
「S3バケット"handson-cli-awscli-output-<AWSアカウントID>"のオブジェクト一覧を確認できている。」ことを確認します。
処理の実行で取得できていればOKです。