aws-sdk使用STS凭据上载-403错误
aws-sdk upload with STS credentials - 403 error
我一直在尝试设置亚马逊的STS(安全令牌服务),为客户端上传到S3创建临时凭据。
使用IAM用户生成的访问密钥,我可以使代码正常工作,但当我交换出访问密钥/密钥,然后添加会话令牌时,我会得到403 Forbidden。S3访问日志不记录该尝试。
在STS方面,我通过node.js的aws-sdk生成凭据,使用与上面相同的IAM用户,sdk愉快地生成STS凭据:
let sts = new AWS.STS({apiVersion: '2011-06-15'});
sts.assumeRole({
RoleArn: 'arn:aws:iam::[REMOVED]:role/[REMOVED]',
RoleSessionName: [REMOVED (generated by concatenating a few ids)]
DurationSeconds: 60 * 20,
}, (err, data)=>{
//callback handling
});
上传测试代码:
var AWS = require('aws-sdk');
// Load the stream
var fs = require('fs');
var body = fs.createReadStream('./helloworld.txt');
AWS.config.update({
region: 'ap-southeast-2',
accessKeyId: '[REMOVED]',
secretAccessKey: '[REMOVED]',
sessionToken: '[REMOVED]'
});
// Upload the stream
var s3 = new AWS.S3();
s3.putObject({
Body: body,
Bucket: '[REMOVED]',
Key: 'helloworld.txt'
}, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
aws-sdk版本:2.4.8node.js:4.2.3
我已经使用IAM模拟器测试了它所假设的角色策略,它说这很好。尝试在浏览器端和服务器端使用sdk上传。
我打开了S3 CORS(用于调试),以确保那里没有发生任何奇怪的事情:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>0</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
<ExposeHeader>x-amz-request-id</ExposeHeader>
<ExposeHeader>x-amz-id-2</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
<AllowedHeader>x-amz-acl</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我打开了S3策略(再次进行调试):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"[REMOVED]"
]
}
]
}
有什么想法吗?
原来缺少的配置是bucket本身的ACL,原始ACL允许我的根帐户进行所有更改,我猜代码所在的IAM帐户继承了某种权限。
为上传/删除添加此额外行已成功。
配置更改的屏幕截图
相关文章:
- 通过CSV文件上载更新数据库表
- 带有凭据的角度文件上载(CORS)不起作用
- 将文档上载到Web API
- 使用AJAX将文件上载到服务器
- Uploadify-随机表单数据's已返回上载表单
- 需要帮助处理XML HTTP文件上载请求
- 更改精细上载中的错误消息
- 使用Javascript中的Dropbox Core API将文件上载到Dropbox
- JQuery文件上载未检测到动态添加的输入
- 通过将文件上载到ASHX处理程序来实现SSE(服务器发送的事件)
- 阻止浏览器缓存上载的图像
- 带有附加信息的文件的上载处理程序
- 调用JavaScript函数后,文件上载字段重置
- 仅为文本文件筛选文件上载
- SVG使用Javascript将文件上载到DOM就绪元素
- 将 FormData 对象放入数组中以从不同的输入文件上载文件
- 是否可以将 ASP.NET Web 应用程序上载到 VMware 上的虚拟 2008 服务器上
- 如何将文本上载为具有输入类型文件的表单中的文本文件
- 表单文件中已上载mp3的标题
- aws-sdk使用STS凭据上载-403错误