AWS CloudFront でクライアントソフトから IAM ユーザが invalidation(キャッシュクリア) を発行するには?
AWS の CloudFront を使用していて S3 へのアップロードなどに
IAM ユーザを使用した場合にクライアントソフト側でエラーが発生して
クライアントソフトから invalidation が行えないということがあったので調べてみました。
CloudFront の API リファレンスを眺めたり Cyberduck のソースや Jets3t のソースまで追っかけました。
下記のポリシー設定を IAM ユーザかグループに追加することで
IAM ユーザから CloudBerry や Cyberduck を使用して invalidation を発行できました。
(S3 へのアクセスはフル権限になっていますが、状況合わせて変更してください。)
CloudFront-contents_operator-201105220704
{ "Statement": [ { "Action": [ "s3:ListAllMyBuckets" ], "Effect": "Allow", "Resource": "arn:aws:s3:::*" }, { "Action": [ "cloudfront:CreateInvalidation", "cloudfront:GetDistribution", "cloudfront:GetStreamingDistribution", "cloudfront:GetDistributionConfig", "cloudfront:GetInvalidation", "cloudfront:ListInvalidations", "cloudfront:ListStreamingDistributions", "cloudfront:ListDistributions" ], "Effect": "Allow", "Resource": "*" } ] }
AWS の S3 や CloudFront のクライアントソフトでは invalidation がいまいち使いにくいです。
AWS の Java SDK は CloudFront 非対応なのが泣けてくる…