aws-sdk v3 找不到凭据

aws-sdk v3 cannot find credentials

我正在使用 aws-sdk v3,试图完全遵循 reference docs,但无法加载凭据。

const {fromIni} = require("@aws-sdk/credential-provider-ini");

const credentials = fromIni({});

...给出错误:

Unhandled Rejection (Error): Profile default could not be found or parsed in shared credentials file.

并且:

const {parseKnownFiles} = require("@aws-sdk/credential-provider-ini");

const pkf = parseKnownFiles();

...给出了我认为可能是原因的错误:

TypeError: Cannot read property 'loadedConfig' of undefined

如果它找不到已知的凭据文件,那么它肯定不会在其中找到默认值。

但我确定凭据在那里:

PS C:\> aws sts get-caller-identity --profile="default"
{
    "UserId": "*********************",
    "Account": "************",
    "Arn": "arn:aws:iam::************:user/*****"
}

如何在 aws-sdk v3 中加载我的凭据?

我也一直在努力处理共享凭证文件。我知道出于安全原因这不是合适的方法,但如果时间紧迫,您可以尝试以下示例:

const client = new LexRuntimeV2Client({
    region: process.env.REACT_APP_AWS_REGION,
    credentials: {
        accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY,
        secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY
    },
});

在代码片段中,我使用了环境变量和特定客户端 (AWS Lex),但您可以用它们代替您的密钥、区域和客户端。我不建议对您的密钥进行硬编码,但在开发过程中,这应该可以作为临时解决方案。

您需要将 AWS profile 传递给 fromIni()。你的情况是default

const {fromIni} = require("@aws-sdk/credential-provider-ini");

const credentials = fromIni({profile: 'default'});

我遇到了同样的问题只是按照这些步骤

https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_profiles.html

将包含凭据文件的 .aws 文件夹放在主目录 (linux) 或 %UserProfile% (windows)