我正在使用来自共享ini文件中的配置文件的凭据初始化一个s3客户端。我想使用相同的设置默认区域。
~\.aws\credentials
[myprofile]
aws_access_key_id = ...
aws_secret_access_key = ...~\.aws\config
[profile myprofile]
region = eu-west-1我的代码
import {S3} from '@aws-sdk/client-s3';
import {fromIni} from '@aws-sdk/credential-providers';
const s3Client = new S3({
credentials: fromIni({
profile: 'myprofile',
}),
});
await s3Client.listBuckets({});我得到的错误是Error: Region is missing,调用fromIni的输出是
{
accessKeyId: '...',
secretAccessKey: '...',
sessionToken: undefined
}为什么没有从共享配置文件中加载区域?
更新
fromIni文档注意到
两个文件中出现的配置文件都不会合并,而凭据文件中出现的版本将优先于配置文件中的配置文件。
除了与通常的配置标准明显不同之外,将region从config移动到credentials也会产生相同的错误。
~\.aws\credentials
[myprofile]
aws_access_key_id = ...
aws_secret_access_key = ...
region = eu-west-1发布于 2022-05-31 10:00:22
loadSharedConfigFiles助手可以从本地配置文件中读取配置文件的默认区域,然后将其传递给客户端构造函数:
import { fromIni } from '@aws-sdk/credential-providers';
import { loadSharedConfigFiles } from '@aws-sdk/shared-ini-file-loader';
const profile = 'myprofile';
const s3Client = new S3Client({
credentials: fromIni({ profile }),
region: (await loadSharedConfigFiles()).configFile?.[profile]?.region,
});configFile属性加载~/aws/config,credentialsFile加载~/.aws/credentials。
发布于 2022-05-31 09:14:28
https://stackoverflow.com/questions/72444880
复制相似问题