首页 > 解决方案 > 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);
        });

标签: amazon-web-servicesamazon-s3upload

解决方案


因此,这最终成为设置存储桶对象的标记键的权限问题。显然,执行策略需要s3:putObjectTagging允许额外的操作。


推荐阅读