バケット内に論理フォルダーを作成したいが、100 バケットを超えないようにしたい。AWS アカウントが 1 つしかないと仮定すると、アップロードされたドキュメントをそれらの 100 個のバケットに分散させたいと考えています。すべてのバケットに IAM ポリシーを適用して、ドキュメントの作成者のみが複数のユーザーを持ち、アップロードされたドキュメントを表示/削除できるようにするためのベスト プラクティスは何ですか?
わかりました。
バケット内に論理フォルダーを作成したいが、100 バケットを超えないようにしたい。AWS アカウントが 1 つしかないと仮定すると、アップロードされたドキュメントをそれらの 100 個のバケットに分散させたいと考えています。すべてのバケットに IAM ポリシーを適用して、ドキュメントの作成者のみが複数のユーザーを持ち、アップロードされたドキュメントを表示/削除できるようにするためのベスト プラクティスは何ですか?
わかりました。
あなたのユースケースを完全に理解しているかどうかはわかりません。ユーザー間でバケットを分散する理由は何ですか?
ユーザーの「ホーム ディレクトリ」に IAM を使用するためのベスト プラクティスについては、AWS Docsを参照してください。
{
"Statement":[{
"Effect":"Allow",
"Action":["s3:PutObject","s3:GetObject","s3:GetObjectVersion",
"s3:DeleteObject","s3:DeleteObjectVersion"],
"Resource":"arn:aws:s3:::my_bucket/home/user_name/*"
}
]
}
@Guyが述べたように、ユーザーごとのフォルダーはユーザーごとのバケットよりも優れていますが、いずれの場合でも、複数のルールではなく 1 つのルールに対してポリシー変数を使用できます。 ドキュメントの例を${aws:username}
参照してください。
あなたの場合、次のようにバケット arn に入れることができると思います。
{
"Statement":[{
"Effect":"Allow",
"Action":["s3:*"],
"Resource":"arn:aws:s3:::bucket-for-${aws:username}/*"
}]
}