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

aws: missing credentials in config when using 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' }

对于某些系统,当 运行 来自服务时,~ 会变成 /。这意味着路径是/.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 文档还有很多。