【问题标题】:[Node JS AWS SDK]Missing credentials on Upload to S3 assuming IAM Role[Node JS AWS SDK]上传到 S3 时缺少凭证(假设 IAM 角色)
【发布时间】:2021-05-02 10:02:28
【问题描述】:

我正在尝试在 S3 存储桶上上传一些文件,它适用于硬编码凭据,但我想通过使用 IAM 角色来进一步提高安全性。

这就是我所做的:

  • 创建一个允许完全访问特定 S3 存储桶的 IAM 角色
  • 将角色添加到运行我的应用程序的 EC2 实例中
  • 使用未指定凭据的 AWS SDK 进行调用(代入角色)
  • 出现错误

这是我用于 S3 交互的代码

const AWS = require('aws-sdk');
const s3 = new AWS.S3();

const options = {
                    Bucket: BUCKET_NAME,
                    Key: /my/key/
                    Body: mybody,
                    ContentType: somecontent,
                    ACL: 'public-read'
                };

return s3.upload(options, (err, data) => {
    if (err) {
        return reject(err);
    }
    //code continue
});

这就是我所拥有的:

CredentialsError: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1

所以我尝试在 ~/.aws/config 和 ~/.aws/credentials 中使用配置文件(我还在 .bashrc 文件中将 AWS_SDK_LOAD_CONFIG 设置为 1 并设置配置文件路径)。

.aws/配置:

[default]
region=myregion
role_arn=myrolearn

还尝试使用文件中的凭据,以便至少它不会出现在代码本身中。

我错过了什么吗?

提前致谢

【问题讨论】:

    标签: node.js amazon-s3 aws-sdk amazon-iam


    【解决方案1】:

    乍一看,您的步骤很好,您的应用程序将从 EC2 实例元数据中接管安全凭证是完全正确的。除此之外,您应该不需要配置任何东西。

    首先,这里有一些调试建议:

    • 你确定你正确地附加了你的角色吗?当您通过 SSH 与 aws sts get-caller-identity 连接时,请尝试通过 AWS-CLI 检查假定的角色。
    • 您的 S3 存储桶是否与您运行的 EC2 在同一区域中创建?
    • AWS_SDK_LOAD_CONFIG 真的导出为true 吗?尝试通过 process.env.AWS_SDK_LOAD_CONFIG 在您的应用中将其注销。

    编辑:您可以尝试使用以下命令编辑您的~/.aws/config

    [default]
    credential_source=Ec2InstanceMetadata
    

    【讨论】:

    • 感谢您的回复,我尝试了aws sts get-caller-identity并得到了Partial credentials found in assume-role, missing: source_profile or credential_source。我还指出我的存储桶位于不同的区域,但在代码或我的配置中精确的事件没有帮助......我仍然想知道为什么我不能从元数据中获取凭据......
    • 非常感谢!现在我添加了这一行!
    • 感谢您 - 我尝试了所有这些。除非我提供 APIKEY 和 SECRET,否则我似乎无法正常工作。我期待 EC2 自动使用 ROLE 访问 dynamodB。你能帮忙吗.. [ec2-user@ip-10-0-1-35 contacts-app]$ aws sts get-caller-identity 无法找到凭据。您可以通过运行“aws configure”来配置凭据。
    猜你喜欢
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 2018-07-30
    相关资源
    最近更新 更多