Accessing AWS credentials on Windows 10 WSL : Error: connect ECONNREFUSED 169.254.169.254:80 at TCPConnectWrap.afterConnect

Accessing AWS credentials on Windows 10 WSL : Error: connect ECONNREFUSED 169.254.169.254:80 at TCPConnectWrap.afterConnect

我想访问我保存在 C:/Users/myusername/.aws 中的 AWS 凭证 该文件名为 credentials,没有任何扩展名,它有我的 aws_access_key_id、aws_secret_access_key 和 aws_session_token

下面的代码在 windows10 WSL 上不起作用,产生错误:错误:连接 ECONNREFUSED 169.254.169.254:80 在 TCPConnectWrap.afterConnect [完成时] (net.js:1121:14)

代码适用于 ubuntu,凭据保存在主目录的 .aws 文件夹中。

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

AWS.config.getCredentials(function (err) {

if (err) console.log(err.stack);
  // credentials not loaded
else {
  console.log("Access key:", AWS.config.credentials.accessKeyId);
  console.log("Secret access key:", AWS.config.credentials.secretAccessKey);
}

});

当 运行 WSL 时,C:\ 驱动器安装在 /mnt/ 中。 要使用存储在 Windows 路径 C:\Users\myusername\.aws\ 中的 crendentials 文件, 你有两个选择:

1。使用环境变量

环境变量 AWS_SHARED_CREDENTIALS_FILE 必须设置为 credentials 文件的路径。

在 WSL 中:

> export AWS_SHARED_CREDENTIALS_FILE="/mnt/c/Users/myusername/.aws/credentials"

2。使用符号链接

(感谢@Michael-sqlbot)

在 WSL 中:

> ln -s /mnt/c/Users/myusername/.aws ~/.aws

现在,您的 Node.js 应用程序应该能够访问凭据。