无法在nodejs中设置AWS凭据

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)

  • 谢谢.我想我有更好的机会猜测语法,而不是在AWS文档中找到一个不需要5个其他先决条件设置的工作示例. (4认同)
  • 请注意,现在不推荐使用 `AWS.config.accessKeyId=` 或 `AWS.config.secretAccessKey=` (4认同)

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)


Fré*_*nri 5

多种方法可以将 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)