はじめに
検証でAWS ElasticBeanstalkでアプリを立てた後、整理のため削除した。
S3を確認したところバケットも作成されていたので、削除したところ、アクセス権限がないため削除できなかった。
改めてElasticBeanstalkの作成プロセスを理解するために備忘録として残しておきます。
結論
S3バケットが作成されていることを知らなかったのが原因でした。
ちゃんと作成プロセスを把握しよう。
ElasticBeanstalkの作成プロセス
公式ドキュメントの記載によると、ElasticBeanstalkを作成したらS3バケットが環境を作成した各リージョンに対して作成されるようです。
ElasticBeanstalkの削除プロセス
公式ドキュメントの記載には、自動的に削除されるものと手動で削除しないといけないものがあるようです。
大部分の関連オブジェクトなどは削除されるのですが、不要なストレージコストを避けるのであれば中身を確認してしっかり削除することをオススメします。
バケットポリシーを確認する
S3バケットが作成されると同時にバケットポリシーも付与されます。
バケットの誤った削除を防止するための目的でポリシーが適用されているようです。
Elastic Beanstalk Amazon S3バケットの削除
以下、付与されていたバケットポリシーです。
s3:DeleteBucketに対するアクセス拒否が入っていますので、このアクセス権限を削除するかバケットポリシーを削除しましょう。
これでバケットは削除できました。
※{AWS AccountId}はAWSアカウントに置き換えて読んでください
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "eb-ad78f54a-f239-4c90-adda-49e5f56cb51e",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{AWS AccountId}:role/aws-elasticbeanstalk-ec2-role"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::elasticbeanstalk-ap-northeast-1-{AWS AccountId}/resources/environments/logs/*"
},
{
"Sid": "eb-af163bf3-d27b-4712-b795-d1e33e331ca4",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{AWS AccountId}:role/aws-elasticbeanstalk-ec2-role"
},
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::elasticbeanstalk-ap-northeast-1-{AWS AccountId}",
"arn:aws:s3:::elasticbeanstalk-ap-northeast-1-{AWS AccountId}/resources/environments/*"
]
},
{
"Sid": "eb-58950a8c-feb6-11e2-89e0-0800277d041b",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::elasticbeanstalk-ap-northeast-1-{AWS AccountId}"
}
]
}