如何从 ~/.aws/config 加载配置

How to Load config from ~/.aws/config

change logLoad config from ~/.aws/config if AWS_SDK_LOAD_CONFIG is set. 找不到有关如何加载配置的任何示例或文档。任何帮助!

有这方面的文档:

我建议安装 awscli 工具进行设置,然后在您的终端中安装 运行 aws configure。默认情况下,您在本地主机上 运行 的任何内容都将采用您的 config 文件中列出的凭据,除非指定采用不同的配置文件。

来自第一个 link 的示例:

AWS.config.credentials = new AWS.SharedIniFileCredentials( { profile: 'work-account' } );

如果您使用 CLI 运行 您的脚本:

AWS_PROFILE=work-account node script.js

如果您只使用 CLI 工具而不是 JavaScript:

aws s3 ls --profile work-account

更新:

configcredentials 同时 被制作和引用。当您 运行 aws configure 时,它会生成两个文件。 credentials 文件包含 AccessKey 和 SecretKey - config 文件包含响应类型和区域。没有必要明确定义或引用 config 文件。

aws-sdk 加载配置的方式有点神奇

要么设置环境变量

export AWS_SDK_LOAD_CONFIG="true"

或加载 aws-sdk 集之前

process.env.AWS_SDK_LOAD_CONFIG = true; 

然后加载aws模块;

var AWS = require('aws-sdk');

您可以通过

直接访问该区域
AWS.config.region

是正确的。这似乎也是无需编写自定义函数即可执行此操作的唯一方法。

我在 source code 中对其进行了追踪,它的加载方式 ~/.aws/config 类似于此伪代码:

if process.env.AWS_SDK_LOAD_CONFIG:
  return load('~/.aws/credentials').overwrite('~/.aws/config')
else:
  return load('~/.aws/credentials')

这也意味着您可以在 require('aws-sdk') 之后设置环境变量,只要您在 new SharedIniFileCredentials({..})credentials.refresh() 之前设置即可。请注意,在会话令牌过期之前,credentials.get() 将无法工作。