AWS: невозможно войти в aws-sdk, используя учетные данные sso

Я пытаюсь получить доступ к ресурсам AWS с помощью AWS-SDK, используя учетные данные SSO из приложения node.js. Для этого сначала я создал свой профиль SSO из интерфейса командной строки AWS, а затем я пытаюсь использовать тот же профиль в приложении, которое пробовал, используя следующие способы:

Option1:
const AWS = require("aws-sdk");
const { defaultProvider } = require("@aws-sdk/credential-provider-node");
const route53 = new AWS.Route53({ credentials: defaultProvider({ profile: "my-sso-profile" })});

Option2:
const AWS = require("aws-sdk");
const { fromSSO } = require("@aws-sdk/credential-provider-sso");
const route53 = new AWS.Route53({ credentials: fromSSO ({ profile: "my-sso-profile" })});

Я работаю со следующей ошибкой:

Error [CredentialsError]: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1

Даже я установил переменную среды AWS_SDK_LOAD_CONFIG как 1, используя (setx AWS_SDK_LOAD_CONFIG 1). Тем не менее я сталкиваюсь с той же проблемой

Мой файл конфигурации, расположенный по адресу users/user/.aws/config, выглядит следующим образом:

[profile my-sso-profile]
sso_start_url = https://*******.awsapps.com/start
sso_region = us-east-1
sso_account_id = *********
sso_role_name = PowerUserAccess
region = us-east-1
output = json

Есть ли другой способ использовать учетные данные SSO или какие-либо изменения, необходимые в приведенном выше коде?


person rajashekar    schedule 05.04.2021    source источник


Ответы (1)


Проблема решена. Поскольку fromSSO, который используется для получения учетных данных, возвращает анонимную функцию, которая будет возвращать обещание, я просто изменил код, как показано ниже:

const { fromSSO } = require("@aws-sdk/credential-provider-sso");
const credentials = await fromSSO({ profile: "default" })();
const route53 = new AWS.Route53({ credentials: credentials});
person rajashekar    schedule 06.04.2021