CredentialsError:无法从适用于 Javascript 的 AWS-SDK v2 中的 ChainableTemporaryCredentials 加载凭证
Posted
技术标签:
【中文标题】CredentialsError:无法从适用于 Javascript 的 AWS-SDK v2 中的 ChainableTemporaryCredentials 加载凭证【英文标题】:CredentialsError: Could not load credentials from ChainableTemporaryCredentials in AWS-SDK v2 for Javascript 【发布时间】:2022-01-10 16:35:22 【问题描述】:我正在尝试在 AWS-SDK v2 中为 javascript 设置临时凭证:
const aws = require('aws-sdk')
aws.config = new aws.Config(
credentials: new aws.ChainableTemporaryCredentials(
params:
RoleArn: roleArn, // Defined earlier
RoleSessionName: sessionName, // Defined earlier
DurationSeconds: 15 * 60
,
masterCredentials: new aws.Credentials(
accessKeyId: accessKeyId, // Defined earlier
secretAccessKey: awsSecretAccessKey // Defined earlier
)
),
region: 'us-east-1',
signatureVersion: 'v4'
)
aws.config.getCredentials(function (err)
if (err) console.log(err.stack)
else console.log('Access key:', aws.config.credentials.accessKeyId)
)
但是,在调用 getCredentials 时,我不断收到以下错误:
CredentialsError: Could not load credentials from ChainableTemporaryCredentials
请注意,如果我将credentials
参数设置为主凭据而不是临时凭据,则效果很好,如下所示:
aws.config = new aws.Config(
credentials: new aws.Credentials(
accessKeyId: accessKeyId, // Defined earlier
secretAccessKey: awsSecretAccessKey // Defined earlier
),
region: 'us-east-1',
signatureVersion: 'v4'
)
有谁知道是什么导致了这个问题?这是我引用的文档: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html
【问题讨论】:
【参考方案1】:我终于能够找出这个错误的原因。
让我找出错误原因的原因是我打印了完整的错误,而不仅仅是最近的错误。错误的属性之一是:
originalError:
message: 'The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.',
code: 'SignatureDoesNotMatch',
time: 2021-12-11T19:49:52.395Z,
requestId: '402e4c32-7989-4287-a6a9-628bfc93f60f',
statusCode: 403,
retryable: false,
retryDelay: 39.60145242362791
所以我意识到问题在于我提供的硕士证书不正确!
实际上我一直都知道这些凭据不正确,但出于单元测试的目的,只要我不提供临时凭据,它似乎就可以很好地处理这些不正确的凭据。但现在我了解到,如果您使用临时凭证,getCredentials
函数会通过 AWS 验证凭证,但在使用 just 主凭证时不会通过 AWS 进行验证。这就解释了我所看到的奇怪行为。
【讨论】:
以上是关于CredentialsError:无法从适用于 Javascript 的 AWS-SDK v2 中的 ChainableTemporaryCredentials 加载凭证的主要内容,如果未能解决你的问题,请参考以下文章
CredentialsError:nodejs aws-sdk 中的配置中缺少凭据
无法从 Flutter Web 读取 Firestore 中的数据(适用于 iOS 和 android)
适用于 Windows 7 的 Git 无法从 github 克隆存储库
GDAL warp 太多点无法转换。它适用于相似的图像和来源