我正在使用nodejs处理云项目。 我必须运行EC2实例,所以已经完成了npm install aws-sdk。
我认为我们必须在运行应用程序之前添加我们的凭据吗?
我无法访问文件夹,因此我创建了一个文件夹并在credentials.txt文件中添加了凭据..
C:\用户\ jessig \ AWS
我一直收到这个错误: {[TimeoutError:配置中缺少凭据] 消息:'缺少配置中的凭据', 代码:' CredentialsError',
我尝试在环境变量中设置Access密钥和密钥但仍然得到相同的错误..
我不知道为什么我找不到.aws \ credentials(Windows)文件夹..
有人可以帮忙吗?
非常感谢 杰施
答案 0 :(得分:15)
正如弗雷德里克所说,硬编码不是AWS推荐的标准,这不是你想要在生产环境中做的事情。但是,出于测试目的和学习目的,它可能是最简单的方法。
由于您的请求特定于AWS EC2,因此这里有一个小例子可以帮助您入门。
要获取Node.js可用的所有方法的列表,请参考此 AWS documentation。
var AWS = require('aws-sdk');
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "accessKey";
AWS.config.secretAccessKey = "secretKey";
AWS.config.region = "us-east-1";
var ec2 = new AWS.EC2();
var params = {
InstanceIds: [ /* required */
'i-4387dgkms3',
/* more items */
],
Force: true
};
ec2.stopInstances(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
答案 1 :(得分:9)
我使用以下编程方式,结合流行的npm配置模块(允许开发与生产等不同的配置文件):
const config = require('config');
const AWS = require('aws-sdk');
const accessKeyId = config.get('AWS.accessKeyId');
const secretAccessKey = config.get('AWS.secretAccessKey');
const region = config.get('AWS.region');
AWS.config.update(
{
accessKeyId,
secretAccessKey,
region
}
);
和json配置文件,例如development.json,看起来像:
{
"AWS": {
"accessKeyId": "TODO",
"secretAccessKey": "TODO",
"region": "TODO"
}
}
答案 2 :(得分:3)
有multiple ways配置sdk以使用节点js
有几种方法可以加载凭据。这是他们的顺序 建议:
- 从Amazon EC2的IAM角色(如果在EC2上运行)加载,
- 从共享凭证文件(〜/ .aws / credentials)
加载- 从环境变量中加载
- 从磁盘上的JSON文件加载
- 在您的应用程序中硬编码
虽然不建议硬编码。
如果要使用共享凭据文件,则在Windows上将是
C:\Users\jessig\.aws\credentials
(注意aws之前的.
)。你的文件应该是
[default]
aws_access_key_id = your_access_key
aws_secret_access_key = your_secret_key
答案 3 :(得分:0)
AWS 凭证可以在运行的容器中设置为 ENVIRONMENT VAR。 您可以直接添加以下两个 ENVIRONMENT VAR:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
或在 NODE 中以编程方式将这些 ENVIRONMENT VAR 设置为
var AWS = require('aws-sdk')
AWS.config = new AWS.Config();
process.env.AWS_ACCESS_KEY_ID = "AKIA************L55A"
process.env.AWS_SECRET_ACCESS_KEY = "Ef*******+C5LrtOroSj**********yNE"
AWS.config.region = "us-east-2"