CLIコマンドを使うのが本当に好きで、それが私の日常だ。今日は「AWSでS3バケットを作成する方法」と「CLIでS3バケットポリシーを設定する方法」を説明する。始めよう...

まず、AWS_ACCESS_KEYとAWS_SECRET_ACCESS_KEYを設定する必要がある。つまり、事前にaws configureコマンドを実行する必要がある。それができれば先に進める。

まずS3バケットを確認する

最初に、どのバケットがあるかを確認する必要がある。aws s3 lsコマンドを実行すると、既存のバケットが返される。

➜  ~ aws s3 ls
2021-04-26 11:01:32 ercanermis
2021-05-20 19:14:04 ercanermis-aws-ssm-logs
2021-04-26 11:01:43 ercanermis-com
2021-04-26 11:02:08 www-ercanermis-com

S3バケットを作成する

S3バケット作成コマンドもシンプルで簡単だ。aws s3 mbだ。実行して再度バケットを一覧表示しよう。

➜  ~ aws s3 mb s3://hello-this-is-new-bucket
make_bucket: hello-this-is-new-bucket

確認のため、再度すべての既存バケットを一覧表示する。

➜  ~ aws s3 ls
2021-04-26 11:01:32 ercanermis
2021-05-20 19:14:04 ercanermis-aws-ssm-logs
2021-04-26 11:01:43 ercanermis-com
2022-07-17 14:23:29 hello-this-is-new-bucket
2021-04-26 11:02:08 www-ercanermis-com

はい、新しく作成したバケットが表示されている。バケット名はhello-this-is-new-bucketだ。

S3バケットのバケットポリシーを確認する

前のステップでバケットを作成したが、バケットポリシーはどうだろう?まず、既存のポリシーがあるかどうかを確認する必要がある。以下が例だ:

➜  ~ aws s3api get-bucket-policy --bucket hello-this-is-new-bucket

An error occurred (NoSuchBucketPolicy) when calling the GetBucketPolicy operation: The bucket policy does not exist

新しく作成されたバケットにはデフォルトでポリシーがない。では、CLIでポリシーを作成する時間だ。

バケットポリシーを作成する

ポリシーはJSON形式である必要があり、JSONファイルを作成できる。私のバケットポリシーは、secret-folder内のものを除き、すべてのユーザーがhello-this-is-new-bucketから任意のオブジェクトを取得することを許可する。また、AWSアカウント"1234-5678-9012"の"root"ユーザーにputとdeleteの権限を付与する。

my-s3-bucket-policy.json:
{
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": "*",
         "Action": "s3:GetObject",
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/*"
      },
      {
         "Effect": "Deny",
         "Principal": "*",
         "Action": "s3:GetObject",
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/secret-folder/*"
      },
      {
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:root"
         },
         "Action": [
            "s3:DeleteObject",
            "s3:PutObject"
         ],
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/*"
      }
   ]
}

S3バケットにバケットポリシーを設定する

ポリシーの設定も簡単だ。以下で確認できる。

aws s3api put-bucket-policy --bucket hello-this-is-new-bucket --policy file://my-s3-bucket-policy.json

put-bucket-policyコマンドの後、aws cliは出力を出さないが、CLIでバケットポリシーを確認する方法を知っていれば、確認したい場合に実行できる。

この記事を読んでくれて本当にありがとう。Happy coding!