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

ِAl*_*ush 7 environment-variables amazon-web-services node.js 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,
});
Run Code Online (Sandbox Code Playgroud)

这奏效了。

知道为什么 AWS SDK 不自动加载选项吗?

"aws-sdk": "^2.288.0",
"dotenv": "^6.0.0",
Run Code Online (Sandbox Code Playgroud)

小智 6

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

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

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

自行更新 AWS 配置来设置值,是一个合理的解决方案。


小智 2

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