【发布时间】:2018-11-01 07:14:36
【问题描述】:
这最终将被更改为管理音频文件而不是图像。
我已按照指南进行操作,但必须遗漏一些内容,因为我在尝试列出对象时仍然收到拒绝访问错误。
我在 S3 上创建了一个存储桶 - 它不是公共存储桶 - 地区是欧盟(伦敦)所以 eu-west-2 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>
访问控制列表仅显示具有列表、写入、读取存储桶和写入存储桶权限的帐户(一长串数字/字母)的访问权限。
在 Amazon Cognito 控制台中,我有一个身份池,虽然我相信我只会使用未经身份验证的身份,但身份池具有分配给未经身份验证和身份验证的角色?
未经身份验证的角色具有以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::thisusesmybucketname/*"
]
}
]
}
然后在我的网站上做:
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.243.1.min.js"></script>
<script type="text/javascript">
function getHtml(template) {
return template.join('\n');
}
var albumBucketName = 'myactualname';
var IdentityPoolId = 'eu-west-2:lotsofcharacters';
AWS.config.update({
region: 'eu-west-2',
credentials: new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId,
})
});
var s3 = new AWS.S3({
apiVersion: '2006-03-01',
params: {Bucket: albumBucketName},
});
listAlbums();
function listAlbums() {
s3.listObjects({Delimiter: '/'}, function(err, data) {
if (err) {
console.log(err.message);
//return alert('There was an error listing your albums: ' + err.message);
} else {
// we never get here
}
});
}
</script>
我在这里错过了什么吗?如果我回到存储桶并为读/写设置公共访问权限,那么一切正常 - 但是我理解这样做是错误的方法,因为它向使用我的 AWS 的任何人/每个人开放?
谢谢!
【问题讨论】:
标签: amazon-web-services amazon-s3