授予 AWS Amplify 对 S3 的访问权限

问题描述 投票:0回答:1

我正在尝试将文件从 AWS Amplify 同步到 S3。

我收到访问被拒绝错误。

这是我的 S3 政策:

{
    "Version": "2012-10-17",
    "Id": "Policy1546414473940",
    "Statement": [
        {
            "Sid": "AwsAmplifyAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:amplify:eu-west-3:0000000000:apps/0000000000"
            },
            "Action":  [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
                ],
            "Resource": "arn:aws:s3:::MY_BUCKET"
        },
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::MY_BUCKET/*"
        }
    ]
}

有什么建议吗?

amazon-s3 aws-amplify
1个回答
0
投票

如果您要访问 Amplify 创建和管理的存储桶,则可以通过

amplify
CLI 工具向 lambda 或前端授予权限。您似乎正在尝试访问您在 Amplify 外部创建的 S3 存储桶。

如果是这种情况,以下内容可能会有所帮助:

我的存储桶策略看起来像这样:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSESPuts",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::MYBUCKET/*",
            "Condition": {
                "StringEquals": {
                    "aws:Referer": "013456012345"
                }
            }
        }
    ]
}

需要访问存储桶的 AWS Amplify 托管 Lambda 有一个如下所示的

custom-policies.json
文件:

[
  {
    "Action": [
      "s3:GetObject"
    ],
    "Resource": "arn:aws:s3:::MYBUCKET/*",
  }
]

如果您需要其他权限,请添加它们。请注意,“listBucket”资源只是存储桶(无 /),但 get/put 是存储桶的内容,因此您可以拼出路径详细信息(或 /)。

© www.soinside.com 2019 - 2024. All rights reserved.