CLIでVPCエンドポイントを作成するときに、エンドポイントポリシーのJSONをどうやって渡せばいいのかを悩んだので、そのメモ書きです。
JSONの文字列をシェルの変数に投入してあげるという解決策です。
実行例
AWS_PROFILE=default
POLICY='
{
"Statement": [
{
"Action": "*",
"Effect": "Allow",
"Resource": "*",
"Principal": "*"
}
]
}'
aws --profile ${AWS_PROFILE} ec2 create-vpc-endpoint \
--vpc-endpoint-type Interface \
--vpc-id vpc-f1dcfc96 \
--subnet-ids subnet-cde80585 subnet-0bf40020 subnet-742e712f \
--security-group-ids sg-beca3fc2 \
--service-name com.amazonaws.ap-northeast-1.sqs \
--policy-document "${POLICY}";
解説
ミソは、エンドポイントのポリシーをシェル変数(ここでは、POLICY)に登録して、--policy-document の引数に "${POLICY}"と入れること。
引数に入れる"${POLICY}"は、必ずダブルクォーテーションで括ること。(bashのコマンド文字列解析時に、JSONの途中のスペースを引数の区切りと誤認するのを回避するため)