1

我有一个基于打字稿/节点的应用程序,其中以下代码行引发错误:

const res = await s3.getObject(obj).promise();

我在终端输出中遇到的错误是:

❌ Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1

 CredentialsError: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1

但是,我的 .aws 目录中确实有一个凭证文件,其中包含 和 的aws_access_key_idaws_secret_access_key。我还使用变量AWS_ACCESS_KEY_ID和导出了这些值AWS_SECRET_ACCESS_KEY。我也尝试过运行和不运行export AWS_SDK_LOAD_CONFIG=1但无济于事(相同的错误消息)。任何人都可以提供任何可能的原因/建议以进行进一步的故障排除吗?

4

2 回答 2

0

安装使用您的etc 凭据npm i dotenv 添加文件。然后在您的或等效文件中添加.envAWS_ACCESS_KEY_IDindex.jsrequire("dotenv").config();

然后更新您的 AWS 实例的配置:

  region: "eu-west-2",
  maxRetries: 3,
  httpOptions: { timeout: 30000, connectTimeout: 5000 },
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
});
于 2022-01-31T22:46:31.877 回答
0

尽量不要设置AWS_SDK_LOAD_CONFIG任何东西(取消设置)。取消设置所有其他 AWS 变量。在 Mac/linux 中,您可以export | grep AWS_查找您可能设置的其他内容。

接下来,您是否有来自命令行的 AWS 连接?如果您还没有 AWS CLI v2,请安装它,然后aws sts get-caller-identity从终端窗口运行。在你得到这个工作之前,不要费心尝试运行节点。你也可以试试aws configure list

通读配置 AWS CLI的所有部分,特别注意如何使用和中的credentialsconfig文件。您使用的是默认配置文件还是命名配置文件?$HOME/.aws/credentials$HOME/.aws/config

我更喜欢使用命名配置文件,但我使用的配置文件不止一个,因此您可能不需要。我总是使用AWS_PROFILE环境变量找到成功:

export AWS_PROFILE=your_profile_name   # macOS/linux
setx AWS_PROFILE your_profile_name     # Windows
$Env:AWS_PROFILE="your_profile_name"   # PowerShell

这对我来说既适用于 Okta/gimme-aws-creds场景,也适用于 Amazon SSO 场景。在 Okta 场景中,只有 AWS 密钥进入$HOME/.aws/credentials,而进一步的配置(例如默认区域或输出格式)进入$HOME/.aws/config(这种分离是为了让工具可以完全重写credentials文件而无需触及config)。对于 Amazon SSO 方案,所有设置都位于config.

于 2021-12-09T18:18:41.793 回答