Estoy tratando de usar SDK de cifrado de AWS en una aplicación NestJS, la siguiente fuente de código muestra la implementación.
import { Controller, Get } from '@nestjs/common'; import {KmsKeyringNode, encrypt} from '@aws-crypto/client-node' @Controller('encryption') export class EncryptionController { // constructor() {} @Get() async crypt() { const generatorKeyId = "generatior key"; const masterKeyId = "master key id"; const keyring = new KmsKeyringNode({keyIds:[masterKeyId], generatorKeyId: generatorKeyId}); const plainText = "My passwords for senstive data"; const context = { accountId: "100", purpose: "youtube demo", country: "Sri Lanka" }; const { result } = await encrypt(keyring, plainText, { encryptionContext: context }); console.log(result) } }pero cuando ejecuto una solicitud para ver el resultado de mi implementación recibo el siguiente error
Error: connect EHOSTUNREACH 169.254.169.254:80 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14) { message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1', errno: 'EHOSTUNREACH', code: 'CredentialsError', syscall: 'connect', address: '169.254.169.254', port: 80, time: 2020-06-09T11:41:47.638Z, originalError: { message: 'Could not load credentials from any providers', errno: 'EHOSTUNREACH', code: 'CredentialsError', syscall: 'connect', address: '169.254.169.254', port: 80, time: 2020-06-09T11:41:47.638Z, originalError: { message: 'EC2 Metadata roleName request returned error', errno: 'EHOSTUNREACH', code: 'EHOSTUNREACH', syscall: 'connect', address: '169.254.169.254', port: 80, time: 2020-06-09T11:41:47.637Z, originalError: [Object] } } }Sin embargo, copié un script de nodejs de este tutorial para ver si funciona con mi configuración de aws sdk y no recibí ningún error, también si ejecuté métodos de cifrado de aws kms en el cli no tuve ningún error.
Intenté exportar la variable AWS_SDK_LOAD_CONFIG=1 como vi en otros errores similares.
¿Alguien sabe lo que está pasando?
Yo tuve el mismo problema. Me costó bastante dolor de cabeza porque tenía esto ejecutándose en AWS Fargate y la depuración no es tan fácil allí.
El error significa que el SDK de Javascript no puede encontrar las credenciales de AWS. Aquí puede ver en qué orden el SDK intenta cargar las credenciales desde: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html
Mi error fue bastante vergonzoso, solo tenía un error tipográfico en mis variables de entorno. Mi variable era AWS_ACCESSS_KEY_ID en lugar de AWS_ACCESS_KEY_ID . (Bastante difícil ver la diferencia, ¿verdad?)
Entonces, probablemente verifique dos veces los nombres de sus variables de entorno (o archivos de configuración)