Search code examples
javascriptamazon-web-servicesaws-sdk-js

Programatically set AWS region with a profile


I have multiple profiles defined both in .aws/credentials and .aws/config

[profile dev]
region = us-east-1

[profile staging]
region = eu-west-1

Using the NodeJS AWS SDKv3 I can load credentials from my local config:

const {S3Client} = require('@aws-sdk/client-s3');
const {fromIni} = require('@aws-sdk/credential-providers');

new S3Client({
    credentials: fromIni({
        profile: 'dev'
    })
});

How can I do the same for region? (something akin to the following)

const {S3Client} = require('@aws-sdk/client-s3');
const {fromIni} = require('@aws-sdk/credential-providers');
const {fromIni: regionFromIni} = require('@aws-sdk/region-providers');

new S3Client({
    credentials: fromIni({
        profile: 'dev'
    }),
    region: regionFromIni({
        profile: 'dev'
    })
});

Solution

  • @fedonev pointed me to a solution that works:

    const {loadSharedConfigFiles} = require('@aws-sdk/shared-ini-file-loader');
    
    const sharedConfig = await loadSharedConfigFiles();
    console.log(sharedConfig.configFile.dev?.region);