amazon-web-services - S3 上传通过 CLI 和控制台成功,但通过 SDK 抛出访问被拒绝
问题描述
我可以通过 AWS 控制台和 cli 将文件上传到我的 s3 存储桶,但通过 sdk 拒绝访问。aws sts get-caller-identity
从 cli 和代码中调用,sts.getCallerIdentity()
我可以确认正在使用同一组凭据来执行操作。
上传代码如下:
const aws = require("aws-sdk");
const s3 = new aws.S3();
const sts = new aws.STS();
sts.getCallerIdentity({}, (err, data) => {
// matches result from aws sts get-caller-identity
console.log(data);
});
let bucket = {
Bucket: "my-bucket",
Key: "user@email.com/uuid/Submitted_Put.csv",
Body: "col1,col2,col3\nval1,val2,val3",
Tagging: "TEMPLATE_NAME=my_template_v1.0",
ServerSideEncryption: "aws:kms",
};
s3.putObject(bucket)
.promise()
.then((data) => {
console.log(data.Key);
})
.catch((error) => {
console.log(error);
});
解决方案
因此,这最终成为设置存储桶对象的标记键的权限问题。显然,执行策略需要s3:putObjectTagging
允许额外的操作。
推荐阅读
- php - Centos 6.7 PHP 从 PHP 5.2 升级到 5.6
- excel - VBA用文本值填充可变单元格范围
- android - React Native 调试器:异步存储
- python - 如何同时使用 Selenium 和 Scrapy?
- node.js - (Sequelize) hasOne 关联没有创建外键
- android - 如何使用导航组件打开具有特定片段的另一个活动?
- spring-boot - 不检查请求头参数
- asp.net-mvc - Azure B2C 身份验证在本地重定向,但在 Azure 上托管时不会
- android - 无法更改按钮的背景颜色
- react-native - ExpoKit33 或 React-native 中的 Expo SDK 33 更新错误