我正在使用來自共享 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
uj5u.com熱心網友回復:
助手可以從本地組態檔中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
uj5u.com熱心網友回復:
S3 建構式在配置物件的級別上使用 region 屬性 as credentials,因此您應該使用以下內容:
const s3Client = new S3({
credentials: fromIni({
profile: 'myprofile',
}),
region: 'eu-west-1'
});
fromIni檔案沒有談論區域,我想它不是為此而生的。
關于加載組態檔,我認為您正在尋找環境變數AWS_SHARED_CREDENTIALS_FILE,請參見此處(雖然沒有測驗)。但是,正如@CherryDT 評論的那樣,您可能需要明確宣告它,它可能會根據情況而改變。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/484045.html
標籤:节点.js aws-sdk aws-sdk-nodejs
上一篇:預鉤子不適用于查找查詢
下一篇:沒有外鍵的Linq多對多關系
