みなさん、こんにちは。
よくいただくご質問について、まとめてみました。

ユーザに直接ポリシーを割り当てるよりは、ロールで対応することが推奨されますが、
どうしてもこのやり方でやりたい!という方向けです。

前提条件

・決まった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」にアクセスしてみます。設定通り、アクセスできないことが分かります。

まとめ

いかがでしたでしょうか。とりあえず試してみたいという方にとって、お役に立てれば幸いです。