web-dev-qa-db-ja.com

サイバーダックを使用した大きなファイルのs3ファイルアクセスが拒否されました

以下のカスタムポリシーを使用すると、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": "*"
    }
  ]
}
1
user1525248

調べてみると、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は、何が欠けていて、どこに配置すべきかを理解するのにも非常に役立ちました。

2
user1525248