以下のカスタムポリシーを使用すると、cyberduckを使用して大きなファイル(1G以上)をアップロードすると、次のエラーが発生します
ファイルアクセスが拒否されました。サポートが必要な場合は、Webホスティングサービスプロバイダーにお問い合わせください
ただし、小さなファイル(約2億)のアップロードは問題ではありません。また、cyberduckと同じログイン資格情報を使用して新しいフォルダーとファイルを作成することにも問題はありません。だから私は間違いなく読み取り/書き込みアクセス権を持っています。
また、事前定義されたポリシー(AmazonS3FullAccess)を追加すると、大きなファイルのアップロードも正常に機能します。私はここで少し迷っています。ポリシーで大きなファイルのアップロードをどのように制限していますか?何が足りないのですか?
私の方針
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::photoshoot2016"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::photoshoot2016/*"
}
]
}
AmazonS3FullAccessポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
調べてみると、Amazonは1億を超えるすべてのファイルにマルチパートアップロードを使用することを推奨していることがわかりました( http://docs.aws.Amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html )。私はサイバーダックが行われていると思います。
最終的に私がしなければならなかったのは、マルチパートアップロードを有効にするために不足している権限(ListMultipartUploadPartsとListBucketMultipartUploads)を追加することです。今、私のポリシーは次のようになります
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListMultipartUploadParts",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::photoshoot2016"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::photoshoot2016/*"
}
]
}
REST.GET.UPLOADSに対して多くの「AccessDenied243」エラーが発生したバケットロギングを有効にすることで、主な手がかりを見つけました。 AmazonのPolicySimulatorは、何が欠けていて、どこに配置すべきかを理解するのにも非常に役立ちました。