設定値の確認
各変数に正しい設定値が格納されていることを確認します。
変数の確認:
cat << END
# 1. DIR_AWS_POLICY_DOCUMENT:"${HOME}/conf-handson-awspolicy-1st/IdentityBasedPolicy"
DIR_AWS_POLICY_DOCUMENT="${DIR_AWS_POLICY_DOCUMENT}"
# 2. FILENAME_AWS_POLICY_DOCUMENT:"IdentityBasedPolicy"
FILENAME_AWS_POLICY_DOCUMENT="${FILENAME_AWS_POLICY_DOCUMENT}"
# 3. DIR_AWS_POLICY_STATEMENT_DOC:"${HOME}/conf-handson-awspolicy-1st/IdentityBasedPolicy/statement-S3BucketListAndGetLocation"
DIR_AWS_POLICY_STATEMENT_DOC="${DIR_AWS_POLICY_STATEMENT_DOC}"
END
各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。
もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。
処理の実行
ポリシードキュメントを作成します。
変数の設定:
FILE_AWS_POLICY_DOCUMENT_YAML="${DIR_AWS_POLICY_DOCUMENT}/${FILENAME_AWS_POLICY_DOCUMENT}.yaml" \
&& echo ${FILE_AWS_POLICY_DOCUMENT_YAML}
結果(例):
/home/cloudshell-user/conf-handson-awspolicy-1st/IdentityBasedPolicy/IdentityBasedPolicy.yaml
変数の確認:
cat << END
# FILE_AWS_POLICY_DOCUMENT_YAML:"${HOME}/conf-handson-awspolicy-1st/IdentityBasedPolicy/IdentityBasedPolicy.yaml"
FILE_AWS_POLICY_DOCUMENT_YAML="${FILE_AWS_POLICY_DOCUMENT_YAML}"
# DIR_AWS_POLICY_STATEMENT_DOC:"${HOME}/conf-handson-awspolicy-1st/IdentityBasedPolicy/statement-S3BucketListAndGetLocation"
DIR_AWS_POLICY_STATEMENT_DOC="${DIR_AWS_POLICY_STATEMENT_DOC}"
END
コマンド:
cat << EOF > ${FILE_AWS_POLICY_DOCUMENT_YAML}
---
Version: '2012-10-17'
Statement:
EOF
for i in $( ls ${DIR_AWS_POLICY_STATEMENT_DOC}/*.txt ); do \
cat ${i} | sed '/^$/d' >> ${FILE_AWS_POLICY_DOCUMENT_YAML}; \
done
cat ${FILE_AWS_POLICY_DOCUMENT_YAML}
結果(例):
---
Version: '2012-10-17'
Statement:
- Sid: 'S3BucketListAndGetLocation'
Effect: 'Allow'
Action:
- s3:ListBucket
- s3:GetBucketLocation
Resource: arn:aws:s3:::*
ポリシードキュメントをYAML形式からJSON形式に変換します。
変数の設定:
FILE_AWS_POLICY_DOCUMENT_JSON="${DIR_AWS_POLICY_DOCUMENT}/${FILENAME_AWS_POLICY_DOCUMENT}.json" \
&& echo ${FILE_AWS_POLICY_DOCUMENT_JSON}
結果(例):
/home/cloudshell-user/conf-handson-awspolicy-1st/IdentityBasedPolicy/IdentityBasedPolicy.json
変数の確認:
cat << END
# FILE_AWS_POLICY_DOCUMENT_YAML:"${HOME}/conf-handson-awspolicy-1st/IdentityBasedPolicy/IdentityBasedPolicy.yaml"
FILE_AWS_POLICY_DOCUMENT_YAML="${FILE_AWS_POLICY_DOCUMENT_YAML}"
# FILE_AWS_POLICY_DOCUMENT_JSON:"${HOME}/conf-handson-awspolicy-1st/IdentityBasedPolicy/IdentityBasedPolicy.json"
FILE_AWS_POLICY_DOCUMENT_JSON="${FILE_AWS_POLICY_DOCUMENT_JSON}"
END
コマンド:
cat ${FILE_AWS_POLICY_DOCUMENT_YAML} \
| python -c "import yaml; import json; import sys; \
print(json.dumps(yaml.safe_load(sys.stdin)))" \
| jq \
> ${FILE_AWS_POLICY_DOCUMENT_JSON}
cat ${FILE_AWS_POLICY_DOCUMENT_JSON}
結果(例):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3BucketListAndGetLocation",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::*"
}
]
}
コマンド:
cat ${FILE_AWS_POLICY_DOCUMENT_JSON} \
| python3 -m json.tool \
> /dev/null
結果(例):