【发布时间】:2017-11-12 01:04:33
【问题描述】:
我正在关注this tutorial,将一个简单的照片上传服务部署到 S3 存储桶。
我使用以下策略创建了一个新角色
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::BUCKET_NAME/*"
]
}
]
}
授予所有授权AWS用户列表和bucket中的读/写访问权限,设置以下CORS
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
生成一个新的 Cognito 身份池并运行上面链接中的脚本。它运行成功,它打开了一个新相册,我可以在 S3 控制台中看到它,但是当我尝试将照片上传到相册时出现错误:
BUCKET_NAME.amazonaws.com/ALBUM_NAME//PHOTO_NAME.jpeg?uploads:1 POST https://BUCKET_NAME.amazonaws.com/ALBUM_NAME//PHOTO_NAME.jpeg?uploads 403 (Forbidden)
当我尝试访问脚本生成的链接时,我得到了这个 XML:
<Error>
<Code>InvalidRequest</Code>
<Message>
Key is not expected for the GET method ?uploads subresource
</Message>
<RequestId>******</RequestId>
<HostId>
******
</HostId>
</Error>
知道为什么会出现这个问题吗?
【问题讨论】:
-
在您的错误消息中,我看到一个双斜杠:
ALBUM_NAME//PHOTO_NAME.jpeg。我建议检查您在脚本中传递的参数是否有额外的斜杠,删除它并重试。 -
@Aditya 这是它在脚本中的显示方式,尽管我尝试将该行更改为 var albumPhotosKey = encodeURIComponent(albumName) + '/';它仍然存在。
标签: amazon-web-services amazon-s3 aws-sdk amazon-cognito amazon-iam