0

我正在使用 v3 的 aws-sdk,试图完全遵循参考文档,但无法加载凭据。

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 中加载我的凭据?

4

2 回答 2

0

我也一直在为共享凭证文件而苦苦挣扎。我知道由于安全原因这不是合适的方法,但是如果您受到时间的压力,您可以尝试以下示例:

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),但您可以将它们替换为您的密钥、区域和客户端。我不建议对您的密钥进行硬编码,但在开发过程中,这应该可以作为临时解决方案正常工作。

于 2021-08-10T00:01:02.527 回答
0

您需要将 AWS 传递profilefromIni(). 在default你的情况下。

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

const credentials = fromIni({profile: 'default'});
于 2021-12-23T10:04:09.047 回答