[Node JS AWS SDK]在IAM角色下上传到S3时缺少凭据



我试图在S3桶上上传一些文件,它与硬编码凭据一起工作,但我想通过使用IAM角色来进一步提高安全性。

我是这样做的:

  • 创建IAM Role,允许对指定S3桶的完全访问
  • 将角色添加到运行我的应用程序的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和~/。(我还在我的.bashrc文件中将AWS_SDK_LOAD_CONFIG设置为1,并设置配置文件路径)。

。aws/配置:

[default]
region=myregion
role_arn=myrolearn

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

我错过了什么吗?

Thanks in advance

你的脚步第一眼就很好&您的应用程序将从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

相关内容

  • 没有找到相关文章

最新更新