みなさん、こんにちは。
よくいただくご質問について、まとめてみました。
ユーザに直接ポリシーを割り当てるよりは、ロールで対応することが推奨されますが、
どうしてもこのやり方でやりたい!という方向けです。
前提条件
・決まったIAMアカウントから複数ある中の同じAWSアカウントの特定S3バケットにアクセスしたい。
・オブジェクトのPUTなども行いたい。
対応方法
(1)テスト用のユーザにIAMポリシーを紐づけます。
ポリシーは以下のように設定します。※my-bucketは適宜、ご利用になるS3バケット名に読み替えてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
(2)ポリシーをアタッチしたIAMユーザでAWSマネジメントコンソールにログインしてみます。
ここでは、S3バケットの一覧が見える設定をしていないので、このような状態が表示されます。
(3)S3バケットの一覧も見たい!場合は、以下のようなポリシーにアップデートします。※ sunnycloud-2023010601-02は適宜ご利用になるバケット名に置き換えをお願いします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::sunnycloud-2023010601-02",
"arn:aws:s3:::sunnycloud-2023010601-02/*"
]
}
]
}
(4)再度、コンソールからアクセスしてみます。
無事に作成しておいた2つのバケットが確認できました。
(5)アクセス権がある「sunnycloud-2023010601-02」にアクセスしてみます。
(6)ファイルをアップロードしてみます。
(7)ここでは、「test.txt」をアップロードしました。
無事にアップロードが成功してオブジェクトとして、保存されています。
(8)念のためアクセス権を設定していない「sunnycloud-2023010601-01」にアクセスしてみます。設定通り、アクセスできないことが分かります。
まとめ
いかがでしたでしょうか。とりあえず試してみたいという方にとって、お役に立てれば幸いです。