AWS JS SDK无法从环境变量加载凭证

时间:2018-08-08 09:46:46

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

我将.env文件配置为具有AWS凭证,但是它不起作用。

在文档中,它被写成配置将从.env文件自动加载。但事实并非如此。

我尝试添加以下内容

    aws.config.update({
    region: process.env.AWS_region,
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
});

那行得通。

AWS SDK为什么不自动加载选项的任何想法吗?

"aws-sdk": "^2.288.0",
"dotenv": "^6.0.0",

2 个答案:

答案 0 :(得分:1)

老问题,但因为我在测试中遇到了这个问题而回答。

这是由于 AWS 开发工具包在首次需要或导入 sdk 时捕获凭证。

当您运行 dotenv.config() 时,它已完成此操作,不会重新读取环境变量。

自己更新 AWS 配置会设置这些值,这是一个合理的解决方案。

答案 1 :(得分:0)

我遇到了同样的问题,然后发现我必须在外壳配置文件中导出env变量(在我的情况下为zsh-〜/ .zshrc-只需添加export AWS_ACCESS_KEY_ID=<key>,其他AWS var则添加相同的内容)。重新启动终端控制台,然后我的节点aws sdk能够将其拾取。如果您使用的是节点aws sdk,那么建议您在代码中打印process.env.AWS_ACCESS_KEY_ID,以首先验证您的节点代码确实能够读取env变量。希望有帮助。