web-dev-qa-db-ja.com

CloudFront S3アクセスが拒否されました

S3(S3_User)を管理する権限を持つアカウントと、Cloud Front(Cloud_Front_User)を管理する権限を持つアカウントがあります。

これで、S3_Userを使用してバケット「bucketname」を作成し、Origin my S3バケットを使用してCloud_Front_Userを使用してディストリビューションを作成しました。

Cloudfrontを介してリソースにアクセスしようとすると、これが表示されます

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>555667558C0B2698</RequestId>
<HostId>
QP0y2/XTsJqItm815aDsdoLTF853zMeEPUAykvxjzdFfU1WwfXHioa6CeLWmc96RDVJopBu+eLE=
</HostId>
</Error>

これを設定しました: http://cl.ly/image/1s0I1H3A3p1N

[保存]をクリックすると、しばらくすると、S3バケットにIDを設定できなかったというエラーメッセージが表示されます。これは、CLoudFrontを "Cloud_Front_User"で、S3を "S3_User"で管理しているためだと思います。では、CloudFrontがs3にアクセスできるようにバケットにS3ポリシーを手動で設定するにはどうすればよいですか?

S3バケットポリシー

{
    "Version": "2012-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": " Grant a CloudFront Origin Identity access to support private content",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E780000000000"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::socialacademy/*"
        }
    ]
}

enter image description here

6
sparkle

URLの変更を解決しました

[〜#〜] from [〜#〜]

http://ID.cloudfront.net/bucket/uploads/academy/logo/1/logo.jpg

[〜#〜] to [〜#〜]

http://ID.cloudfront.net/uploads/academy/logo/1/logo.jpg

3
sparkle

このソリューションを参照してください。

https://havecamerawilltravel.com/photographer/how-allow-public-access-Amazon-bucket

Amazon S3バケットへのパブリックアクセスを許可する方法誰もがAmazon S3バケット内のファイルをダウンロードしたり開いたりできるようにする場合は、次のようにします。

アマゾンウェブサービス

  1. このコードをコピーして、バケットポリシーエディタのポップアップに貼り付けます。 「YOUR-BUCKET-NAME」を完全なバケット名に置き換える必要があります。

ポリシーの例:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowPublicRead",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*"
    }
  ]
}
1
James Selleck