Jes*_*rge 14 amazon-ec2 amazon-web-services node.js
我正在使用nodejs开展云项目.我必须运行EC2实例,所以已经完成了npm install aws-sdk.
我相信我们必须在运行应用程序之前添加我们的凭据吗?
我无法访问文件夹,因此我创建了一个文件夹,并在credentials.txt文件中添加了凭据.
C:\用户\ jessig\AWS
我不断收到此错误:{[TimeoutError:配置中缺少凭据]消息:'配置中缺少凭据',代码:'CredentialsError',
我尝试在环境变量中设置Access密钥和密钥但仍然得到相同的错误..
不知道为什么我找不到.aws\credentials(Windows)文件夹..
有人可以帮忙吗?
非常感谢Jessi
Jim*_* P. 15
正如Frederick所说,硬编码不是AWS推荐的标准,这不是您在生产环境中想要做的事情.但是,出于测试目的和学习目的,它可能是最简单的方法.
由于您的请求特定于AWS EC2,因此这里有一个小例子可以帮助您入门.
要获取Node.js可用的所有方法的列表,请参阅此AWS文档.
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
});
Run Code Online (Sandbox Code Playgroud)
Big*_*n73 14
我使用以下编程方式,结合流行的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
}
);
Run Code Online (Sandbox Code Playgroud)
而json配置文件,例如development.json,看起来像:
{
"AWS": {
"accessKeyId": "TODO",
"secretAccessKey": "TODO",
"region": "TODO"
}
}
Run Code Online (Sandbox Code Playgroud)
有多种方法可以将 sdk 配置为与 node js 一起使用
有几种方法可以加载凭据。在这里,按推荐顺序排列:
- 从 Amazon EC2 的 IAM 角色加载(如果在 EC2 上运行),
- 从共享凭证文件 (~/.aws/credentials) 加载,
- 从环境变量加载,
- 从磁盘上的 JSON 文件加载,
- 在您的应用程序中硬编码
虽然不推荐硬编码。
如果要使用共享凭据文件,在 Windows 上将是
C:\Users\jessig\.aws\credentials
Run Code Online (Sandbox Code Playgroud)
(注意.之前的aws)。你的文件应该是这样的
[default]
aws_access_key_id = your_access_key
aws_secret_access_key = your_secret_key
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14973 次 |
| 最近记录: |