AWS:使用systemd时配置中缺少凭据

时间:2018-07-23 20:30:35

标签: node.js amazon-web-services aws-sdk systemd

我正在尝试将小型Node.js服务器部署到AWS上的Linux EC2。该服务器使用AWS JavaScript SDK。 ~/.aws/credentials~/.aws/config已正确填写。当我通过node index.jsnpm start运行服务器时,一切正常,但是如果我使用systemd运行服务器,则会得到以下响应:

{ message: 'Could not load credentials from any providers',
retryable: false,
time: 2018-07-23T20:12:59.057Z,
code: 'CredentialsError' }

1 个答案:

答案 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文档还有很多。