我正在尝试将小型Node.js服务器部署到AWS上的Linux EC2。该服务器使用AWS JavaScript SDK。 ~/.aws/credentials
和~/.aws/config
已正确填写。当我通过node index.js
或npm start
运行服务器时,一切正常,但是如果我使用systemd
运行服务器,则会得到以下响应:
{ message: 'Could not load credentials from any providers',
retryable: false,
time: 2018-07-23T20:12:59.057Z,
code: 'CredentialsError' }
答案 0 :(得分:1)
对于某些系统,从服务运行时〜变为/。这意味着路径是/.aws/credentials。对于您的系统,请尝试将“〜/ .aws”复制到“ /root/.aws”。然后尝试复制到“ /.aws”。其中之一将起作用。
您还可以使用json文件,并在创建客户端时指定该文件。
使用以下内容创建文件“ /mysite/aws_config.json”:
{
"accessKeyId": "YOUR_ACCESS_KEY_ID",
"secretAccessKey": "YOUR_SECRET_ACCESS_KEY",
"region": "YOUR_REGION"
}
然后使用以下语句加载凭据:
AWS.config.loadFromPath('/mysite/aws_config.json');
这样,您可以将站点的配置保存在一个目录中。
有许多方法可以指定凭据。关于node.js SDK的AWS文档还有很多。