設定値の指定
手順に必要な設定値を変数に格納をします。
1. レプリケーション元S3バケット名
レプリケーション元S3バケット名を指定します。
変数の設定:
S3_BUCKET_PREFIX_SOURCE='handson-cli-s3-replication-replication-source'
コマンド:
AWS_ID=$( \
aws sts get-caller-identity \
--query 'Account' \
--output text \
) \
&& echo ${AWS_ID}
結果(例):
変数の設定:
S3_BUCKET_SOURCE="${S3_BUCKET_PREFIX_SOURCE}-${AWS_ID}" \
&& echo ${S3_BUCKET_SOURCE}
結果(例):
handson-cli-s3-replication-replication-source-XXXXXXXXXXXX
2. レプリケーション先S3バケット名
レプリケーション先S3バケット名を指定します。
変数の設定:
S3_BUCKET_PREFIX_DESTINATION='handson-cli-s3-replication-replication-destination'
コマンド:
AWS_ID=$( \
aws sts get-caller-identity \
--query 'Account' \
--output text \
) \
&& echo ${AWS_ID}
結果(例):
変数の設定:
S3_BUCKET_DESTINATION="${S3_BUCKET_PREFIX_DESTINATION}-${AWS_ID}" \
&& echo ${S3_BUCKET_DESTINATION}
結果(例):
handson-cli-s3-replication-replication-destination-XXXXXXXXXXXX
3. IAMロール名
IAMロール名を指定します。
変数の設定:
IAM_ROLE_NAME='handson-cli-s3-replication-replication-role'
4. S3バケットレプリケーション設定ドキュメントファイル用ディレクトリ
S3バケットレプリケーション設定ドキュメントファイルが存在するディレクトリを指定します。
変数の設定:
DIR_S3_BUCKET_REPLICATION_DOC="${HOME}/environment/conf-handson-cli-s3-replication"
ディレクトリが存在することを確認します。
コマンド:
ls -d ${HOME}/environment/conf-handson-cli-s3-replication
結果(例:存在する場合):
${HOME}/environment/conf-handson-cli-s3-replication
存在しない場合は作成します。
コマンド:
mkdir -p ${HOME}/environment/conf-handson-cli-s3-replication
5. S3バケットレプリケーション設定ドキュメントファイル名
S3バケットレプリケーション設定ドキュメントファイル名を指定します。
変数の設定:
FILE_S3_BUCKET_REPLICATION_DOC="${DIR_S3_BUCKET_REPLICATION_DOC}/${S3_BUCKET_SOURCE}-s3-bucket-replication.json" \
&& echo ${FILE_S3_BUCKET_REPLICATION_DOC}
結果(例):
${HOME}/environment/conf-handson-cli-s3-replication/handson-cli-s3-replication-replication-source-XXXXXXXXXXXX-s3-bucket-replication.json
各変数に正しい設定値が格納されていることを確認します。
変数の確認:
cat << END
# 1. S3_BUCKET_SOURCE:"handson-cli-s3-replication-replication-source-XXXXXXXXXXXX"
S3_BUCKET_SOURCE="${S3_BUCKET_SOURCE}"
# 2. S3_BUCKET_DESTINATION:"handson-cli-s3-replication-replication-destination-XXXXXXXXXXXX"
S3_BUCKET_DESTINATION="${S3_BUCKET_DESTINATION}"
# 3. IAM_ROLE_NAME:"handson-cli-s3-replication-replication-role"
IAM_ROLE_NAME="${IAM_ROLE_NAME}"
# 4. DIR_S3_BUCKET_REPLICATION_DOC:"${HOME}/environment/conf-handson-cli-s3-replication"
DIR_S3_BUCKET_REPLICATION_DOC="${DIR_S3_BUCKET_REPLICATION_DOC}"
# 5. FILE_S3_BUCKET_REPLICATION_DOC:"${HOME}/environment/conf-handson-cli-s3-replication/handson-cli-s3-replication-replication-source-XXXXXXXXXXXX-s3-bucket-replication.json"
FILE_S3_BUCKET_REPLICATION_DOC="${FILE_S3_BUCKET_REPLICATION_DOC}"
END
処理の実行
IAMロールのARNを取得します。
コマンド:
IAM_ROLE_ARN=$( \
aws iam get-role \
--role-name ${IAM_ROLE_NAME} \
--query 'Role.Arn' \
--output text \
) \
&& echo ${IAM_ROLE_ARN}
結果(例):
arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-s3-replication-replication-role
S3バケットレプリケーション設定ファイルを作成します。
変数の確認:
cat << ETX
# FILE_S3_BUCKET_REPLICATION_DOC:"${HOME}/environment/conf-handson-cli-s3-replication/handson-cli-s3-replication-replication-source-XXXXXXXXXXXX-s3-bucket-replication.json"
FILE_S3_BUCKET_REPLICATION_DOC="${FILE_S3_BUCKET_REPLICATION_DOC}"
# IAM_ROLE_ARN:"arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-s3-replication-replication-role"
IAM_ROLE_ARN="${IAM_ROLE_ARN}"
# S3_BUCKET_DESTINATION:"handson-cli-s3-replication-replication-destination-XXXXXXXXXXXX"
S3_BUCKET_DESTINATION="${S3_BUCKET_DESTINATION}"
ETX
レプリケーション設定ドキュメントを作成します。
コマンド:
cat << EOF > ${FILE_S3_BUCKET_REPLICATION_DOC}
{
"Role": "${IAM_ROLE_ARN}",
"Rules": [
{
"Status": "Enabled",
"Priority": 1,
"DeleteMarkerReplication": { "Status": "Disabled" },
"Filter" : { "Prefix": ""},
"Destination": {
"Bucket": "arn:aws:s3:::${S3_BUCKET_DESTINATION}"
}
}
]
}
EOF
cat ${FILE_S3_BUCKET_REPLICATION_DOC}
結果(例):
{
"Role": "arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-s3-replication-replication-role",
"Rules": [
{
"Status": "Enabled",
"Priority": 1,
"DeleteMarkerReplication": { "Status": "Disabled" },
"Filter" : { "Prefix": ""},
"Destination": {
"Bucket": "arn:aws:s3:::handson-cli-s3-replication-replication-destination-XXXXXXXXXXXX"
}
}
]
}
JSONファイルを作成したら、フォーマットが壊れてないか必ず確認します。
コマンド:
cat ${FILE_S3_BUCKET_REPLICATION_DOC} \
| python3 -m json.tool \
> /dev/null
結果(例):
完了確認
「S3バケットレプリケーション設定ドキュメント"${HOME}/environment/conf-handson-cli-s3-replication/handson-cli-s3-replication-replication-source-XXXXXXXXXXXX-s3-bucket-replication.json"が存在する。」ことを確認します。
コマンド:
ls ${FILE_S3_BUCKET_REPLICATION_DOC}
結果(例):
${HOME}/environment/conf-handson-cli-s3-replication/handson-cli-s3-replication-replication-source-XXXXXXXXXXXX-s3-bucket-replication.json