【问题标题】:Initialize Node aws with profile使用配置文件初始化节点 aws
【发布时间】:2021-01-01 20:07:52
【问题描述】:

我正在尝试从 S3 存储桶中读取数据,目前我有代码:

var AWS = require('aws-sdk');
AWS.config.update({accessKeyId: 'myAccesID', secretAccessKey: 'superRandomSecretKey', region: 'us-west-2'});
var s3 = new AWS.S3();

var params = {
 Bucket: 'my-bucket',
 Delimiter: '/'
}

s3.listObjects(params, function (err, data) {
 if(err)throw err;
 console.log(data);
});

但是我得到了Access Denied,我知道我的命名配置文件可以工作,因为我可以使用aws cli 命令列出我的文件:

aws s3 ls s3://my-bucket --recursive --profile  my-named-profile

那么,如何使用命名配置文件初始化我的aws 实例?

【问题讨论】:

  • 如果是它的实例,为什么不对实例使用 IAM 角色,而不是硬编码凭证?
  • 这是我的问题

标签: node.js amazon-web-services amazon-s3


【解决方案1】:

从实例访问 S3 的推荐方法是通过 IAM roles for Amazon EC2。

基本角色可能只包含 AWS 托管策略 AmazonS3ReadOnlyAccess:

将角色附加到您的实例后,您无需为aws-sdk 执行任何特殊操作即可使用它。 SDK 会自动识别它。因此,您可能是:

var AWS = require('aws-sdk');

var s3 = new AWS.S3();

var params = {
 Bucket: 'my-bucket',
 Delimiter: '/'
}

s3.listObjects(params, function (err, data) {
 if(err)throw err;
 console.log(data);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 2014-09-15
    • 1970-01-01
    • 2016-11-04
    • 2015-10-17
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    相关资源
    最近更新 更多