我正在尝试将文件从 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/*"
}
]
}
有什么建议吗?
如果您要访问 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 是存储桶的内容,因此您可以拼出路径详细信息(或 /)。