IAMポリシ"handson-cli-s3-notification-S3ObjectPutPolicy"のポリシドキュメントを作成します。
作業に必要なパラメータを変数に格納をします。
1. ポリシードキュメントファイルディレクトリ
ポリシードキュメントファイル用ディレクトリを指定します。
変数の設定: DIR_IAM_POLICY_DOC="${HOME}/environment/conf-handson-cli-s3"
変数の設定:
DIR_IAM_POLICY_DOC="${HOME}/environment/conf-handson-cli-s3"
ディレクトリが存在することを確認します。
コマンド: ls -d ${DIR_IAM_POLICY_DOC} 結果(例:存在する場合): ${HOME}/environment/conf-handson-cli-s3
コマンド:
ls -d ${DIR_IAM_POLICY_DOC}
結果(例:存在する場合):
${HOME}/environment/conf-handson-cli-s3
存在しない場合は作成します。
コマンド: mkdir -p ${DIR_IAM_POLICY_DOC}
mkdir -p ${DIR_IAM_POLICY_DOC}
2. IAMポリシードキュメント名
IAMポリシードキュメント名を指定します。
変数の設定: IAM_POLICY_DOC_NAME='handson-cli-s3-notification-S3ObjectPutPolicy' 変数の設定: FILE_IAM_POLICY_DOC="${DIR_IAM_POLICY_DOC}/${IAM_POLICY_DOC_NAME}.json" \ && echo ${FILE_IAM_POLICY_DOC} 結果(例): ${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json
IAM_POLICY_DOC_NAME='handson-cli-s3-notification-S3ObjectPutPolicy'
FILE_IAM_POLICY_DOC="${DIR_IAM_POLICY_DOC}/${IAM_POLICY_DOC_NAME}.json" \ && echo ${FILE_IAM_POLICY_DOC}
結果(例):
${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json
3. S3バケット名
S3バケット名を指定します。
変数の設定: S3_BUCKET_PREFIX='handson-cli-s3-notification' コマンド: AWS_ID=$( \ aws sts get-caller-identity \ --query 'Account' \ --output text \ ) \ && echo ${AWS_ID} 結果(例): XXXXXXXXXXXX 変数の設定: S3_BUCKET_NAME="${S3_BUCKET_PREFIX}-${AWS_ID}" \ && echo ${S3_BUCKET_NAME} 結果(例): handson-cli-s3-notification-XXXXXXXXXXXX
S3_BUCKET_PREFIX='handson-cli-s3-notification'
AWS_ID=$( \ aws sts get-caller-identity \ --query 'Account' \ --output text \ ) \ && echo ${AWS_ID}
XXXXXXXXXXXX
S3_BUCKET_NAME="${S3_BUCKET_PREFIX}-${AWS_ID}" \ && echo ${S3_BUCKET_NAME}
handson-cli-s3-notification-XXXXXXXXXXXX
各変数に正しいパラメータ値が格納されていることを確認します。
変数の確認: cat << END # 1. DIR_IAM_POLICY_DOC:"${HOME}/environment/conf-handson-cli-s3" DIR_IAM_POLICY_DOC="${DIR_IAM_POLICY_DOC}" # 2. FILE_IAM_POLICY_DOC:"${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json" FILE_IAM_POLICY_DOC="${FILE_IAM_POLICY_DOC}" # 3. S3_BUCKET_NAME:"handson-cli-s3-notification-XXXXXXXXXXXX" S3_BUCKET_NAME="${S3_BUCKET_NAME}" END
変数の確認:
cat << END # 1. DIR_IAM_POLICY_DOC:"${HOME}/environment/conf-handson-cli-s3" DIR_IAM_POLICY_DOC="${DIR_IAM_POLICY_DOC}" # 2. FILE_IAM_POLICY_DOC:"${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json" FILE_IAM_POLICY_DOC="${FILE_IAM_POLICY_DOC}" # 3. S3_BUCKET_NAME:"handson-cli-s3-notification-XXXXXXXXXXXX" S3_BUCKET_NAME="${S3_BUCKET_NAME}" END
IAMポリシドキュメントを作成します。
変数の確認: cat << EOF # FILE_IAM_POLICY_DOC:"${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json" FILE_IAM_POLICY_DOC="${FILE_IAM_POLICY_DOC}" # S3_BUCKET_NAME:"handson-cli-s3-notification-XXXXXXXXXXXX" S3_BUCKET_NAME="${S3_BUCKET_NAME}" EOF コマンド: cat << EOF > ${FILE_IAM_POLICY_DOC} { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::${S3_BUCKET_NAME}/*" } ] } EOF cat ${FILE_IAM_POLICY_DOC} 結果(例): { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::handson-cli-s3-notification-XXXXXXXXXXXX/*" } ] } JSONファイルを作成したら、フォーマットが壊れてないか必ず確認します。 コマンド: cat ${FILE_IAM_POLICY_DOC} \ | python3 -m json.tool \ > /dev/null 結果(例): (出力なし) 注釈 エラーが出力されなければOKです。
cat << EOF # FILE_IAM_POLICY_DOC:"${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json" FILE_IAM_POLICY_DOC="${FILE_IAM_POLICY_DOC}" # S3_BUCKET_NAME:"handson-cli-s3-notification-XXXXXXXXXXXX" S3_BUCKET_NAME="${S3_BUCKET_NAME}" EOF
cat << EOF > ${FILE_IAM_POLICY_DOC} { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::${S3_BUCKET_NAME}/*" } ] } EOF cat ${FILE_IAM_POLICY_DOC}
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::handson-cli-s3-notification-XXXXXXXXXXXX/*" } ] }
JSONファイルを作成したら、フォーマットが壊れてないか必ず確認します。
cat ${FILE_IAM_POLICY_DOC} \ | python3 -m json.tool \ > /dev/null
(出力なし)
注釈
エラーが出力されなければOKです。
「IAMポリシードキュメント"${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json"が存在する。」ことを確認します。
コマンド: ls ${FILE_IAM_POLICY_DOC} 結果(例): ${HOME}/environment/conf-handson-cli-s3/handson-cli-s3-notification-S3ObjectPutPolicy.json
ls ${FILE_IAM_POLICY_DOC}