異なるクライアントに属するサーバー S3 バケットがあります。アプリケーションで AWS SDK for PHP を使用して、写真を S3 バケットにアップロードしています。正確には AWS SDK for Laravel 4 を使用していますが、この特定の実装に問題があるとは思いません。
問題は、サーバーが FullS3Access を使用している AWS ユーザーに写真をアップロードしない限り、バケットにアップロードされないことです。Access Denied! と表示されます。最初に問題のバケットへのフル アクセスのみを許可してみましたが、すべてのバケットを一覧表示する機能を追加する必要があることに気付きました。これはおそらく、SDK が資格情報を確認するために試みていることですが、まだうまくいかないためです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::clientbucket"
]
}
]
}
このアプリケーションがすべての S3 バケットにアクセスして機能することは、セキュリティ上の大きな懸念事項です。