为什么 AWS 开发工具包没有获取明确提供的凭证?

问题描述 投票:0回答:1

我不希望适用于 JavaScript v3 的 AWS 开发工具包从环境变量或

credentials
文件中获取任何凭证。

它应该使用在 AWS S3 客户端上显式设置的凭证。

const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");

const s3Client = new S3Client({
    accessKeyId: constant.accessKeyId,
    secretAccessKey: constant.secretAccessKey,
    region: constant.region
});

// ...

我从

~/.aws/credentials
中删除了默认凭据,并抛出错误
Could not load credentials from any providers
- 这意味着 SDK 正在使用
~/.aws/credentials
中的默认凭据。

出了什么问题?

amazon-web-services aws-sdk aws-s3-client aws-sdk-js-v3
1个回答
0
投票

已传递到构造函数中的

S3Client
客户端配置不正确。

该对象需要符合

S3ClientConfig
类型,即
accessKeyId
secretAccessKey
属性应嵌套在
credentials
对象中。

由于配置无效,客户端将无法使用它,因此默认使用下一组可用凭据,即您的

credentials
文件。

要解决此问题,请替换:

const s3Client = new S3Client({
    accessKeyId: constant.accessKeyId,
    secretAccessKey: constant.secretAccessKey,
    region: constant.region
});

与:

const s3Client = new S3Client({
    credentials: {
        accessKeyId: constant.accessKeyId,
        secretAccessKey: constant.secretAccessKey,
    },
    region: constant.region
});
© www.soinside.com 2019 - 2024. All rights reserved.