不久前,我实现了一个 PDF 上传功能,其中我的前端调用我的后端,它在 Amazon 的 JavaScript SDK 中调用 getSignedUrl()
来获取一个 URL,前端应该能够使用 PUT
请求上传文件。
这已经工作了一段时间了,今天,我尝试实现类似的功能来上传图像(到不同的 S3 存储桶)。不幸的是,虽然看起来设置相同,但 PUT
上传导致
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId><!-- A request ID --></RequestId>
<HostId><!-- A host ID --></HostId>
</Error>
这并没有真正的帮助,所以现在我正在尝试找出最好的调试方法。
我检查过的:
s3::GetObject
上的资源是指这个新桶 PUT
请求发送相同的 HTTP header OPTIONS
请求也是如此 我还能检查什么?
最佳答案
所以有 one thing 我没有正确检查:
我从 AWS Lambda 函数生成了 URL,我必须为其添加 IAM 策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<bucket name>/*"
}
]
}
关于amazon-web-services - 如何使用预签名 URL 调试 S3 上传?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48687729/