1 Respuesta
- Más nuevo
- Más votos
- Más comentarios
0
The error message "Could not load credentials from any providers" typically indicates that the AWS SDK is unable to locate your AWS credentials.
In AWS SDK for JavaScript (v3), the default credential provider has been updated to be more strict than v2. It no longer includes the EC2 Instance Metadata Service (IMDS) by default. This could be the reason why your v3 code isn't working as expected.
To use the same default credential provider as v2, you can use the DefaultCredentialProvider from @aws-sdk/credential-provider-node package. Here's how you can modify your v3 code:
'use strict';
const { STSClient, GetCallerIdentityCommand } = require('@aws-sdk/client-sts');
const { defaultProvider } = require('@aws-sdk/credential-provider-node');
exports.handler = async function(event, context, callback) {
let output;
try {
let stsClient = new STSClient({
region: 'eu-west-1',
credentials: defaultProvider()
});
const command = new GetCallerIdentityCommand({});
const response = await stsClient.send(command);
output = { account: response.Account };
}
catch (e){
output = { error: e.message };
}
let response = {
statusCode: 200,
headers: { "Content-type" : "application/json" },
body: JSON.stringify(output)
};
return response;
};
This code will use the defaultProvider as the credential provider, which includes the EC2 IMDS and should work as expected in a Lambda environment.
respondido hace 10 meses
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 3 años
- OFICIAL DE AWSActualizada hace 6 meses
That's fantastic, exactly what I needed!
Thanks so much for this, I suspected it might be something that had changed between versions or that had been a default in the v2 SDK but unbundled in v3.
I suspect you saved me many hours of searching :)
David