我不希望适用于 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
中的默认凭据。
出了什么问题?
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
});