我有一个基于类型记录/节点的应用程序,下面的代码行正在抛出一个错误:
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_id
和aws_secret_access_key
的值。我还使用变量AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
导出了这些变量的值。我也尝试过使用和不运行export AWS_SDK_LOAD_CONFIG=1
,但是没有效果(同样的错误消息)。是否有人能够为进一步的故障排除提供任何可能的原因/建议?
发布于 2022-01-31 22:46:31
安装npm i dotenv
,添加一个带有AWS_ACCESS_KEY_ID
等凭据的.env
文件。然后在您的index.js
或等效文件中添加require("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,
});
发布于 2021-12-09 18:18:41
不要将AWS_SDK_LOAD_CONFIG
设置为任何东西(取消设置)。取消设置所有其他AWS变量。在Mac/linux中,您可以通过export | grep AWS_
查找可能设置的其他内容。
接下来,您有命令行中的AWS连接吗?如果还没有AWS v2,请安装它,然后从终端窗口运行aws sts get-caller-identity
。在完成此操作之前,不要费心地运行节点。您也可以尝试aws configure list
。
阅读配置AWS CLI的所有部分,特别注意如何在$HOME/.aws/credentials
和$HOME/.aws/config
中使用credentials
和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场景。在Okta场景中,只有AWS秘密密钥进入$HOME/.aws/credentials
,进一步的配置(如默认区域或输出格式)进入$HOME/.aws/config
(这种分离使得工具可以在不接触config
的情况下完全重写credentials
文件)。对于Amazon场景,所有设置都在config
中。
https://stackoverflow.com/questions/70266832
复制相似问题