使用Node从AWS CLI获取区域

时间:2019-09-03 09:23:13

标签: javascript node.js amazon-web-services aws-cli

我已经在本地计算机上安装了AWS-CLI。我已经创建了一个配置文件。但是我不知道如何从代码中的配置文件中获取区域。

代码

var credentials = new AWS.SharedIniFileCredentials({ profile: node_env });
console.log(credentials);

我可以得到access ID,但我无法得到该地区。还有其他方法可以到达该区域吗?

1 个答案:

答案 0 :(得分:0)

使用aws configure设置凭据时,它将创建两个文件

  • ~/.aws/config
  • ~/.aws/credentials

区域和输出信息保存在~/.aws/config下,access_keysecret_key存储在~/.aws/credentials下。

使用aws-cli

aws configure get region --profile test

它将返回区域以进行配置文件测试。

但是对于Nodejs来说,它有点不同,它does not set region,并且在打印凭据时会得到空区域。

  

默认情况下,JavaScript SDK不会选择区域。然而,   您可以使用环境变量,共享配置来设置区域   文件或全局配置对象。

所以您有两个选择。

使用共享的配置文件

  

就像共享凭证文件一样,您可以存储以下凭证:   通过SDK使用,您可以保留您的Region和其他配置   SDK使用的名为config的共享文件中的设置。如果   AWS_SDK_LOAD_CONFIG环境变量已设置为true   值,JavaScript SDK会自动搜索配置文件   当它加载时。您保存配置文件的位置取决于您的   操作系统:

Linux, macOS, or Unix users: ~/.aws/config

Windows users: C:\Users\USER_NAME\.aws\config

如果还没有共享的配置文件,则可以在指定的目录中创建一个。在下面的示例中,配置文件设置了Region和输出格式。

[default]
   region=us-west-2
   output=json

setting-regionloading-node-credentials-shared

设置区域的优先顺序

  • “区域”设置的优先顺序如下:

  • 如果将Region传递给客户端类构造函数,则使用该Region。如果没有,那么...

  • 如果在全局配置对象上设置了Region,则使用该Region。如果没有,那么...

  • 如果AWS_REGION环境变量是真实值,则使用该 Region 。如果没有,那么...

  • 如果AMAZON_REGION环境变量是真实值,则使用该 Region 。如果没有,那么...

  • 如果将AWS_SDK_LOAD_CONFIG环境变量设置为true值,并且共享凭据文件(~/.aws/credentials or the path indicated by AWS_SHARED_CREDENTIALS_FILE)包含用于配置的配置文件的Region,则使用 Region 。如果没有,那么...

  • 如果将AWS_SDK_LOAD_CONFIG环境变量设置为真实值,并且配置文件(~/.aws/config or the path indicated by AWS_CONFIG_FILE)包含用于配置的配置文件的 Region ,则该 Region

或者您可以使用~/.aws/config方法将SharedIniFileCredentials读取为文件,而不是nodejs中的AWS配置。