He intentado descifrar las variables de entorno mediante los asistentes de cifrado de AWS Lambda y he recibido el error «InvalidCiphertextException». Todos los permisos de AWS Identity and Access Management (IAM) y AWS Key Management Service (AWS KMS) son correctos.
Breve descripción
El error de acción de la API de AWS KMS InvalidCiphertextException indica que la solicitud de descifrado ha fallado porque Lambda ha actualizado la forma de cifrar las variables de entorno. Lambda pasa el nombre de la función como contexto de cifrado, de manera que realiza la llamada de cifrado a AWS KMS. Para las funciones de descifrado creadas antes de este cambio, debe actualizar el código de descifrado y pasar el nombre de la función de Lambda como contexto de cifrado.
Resolución
Para obtener el código con la llamada de descifrado a AWS KMS para un SDK específico con el contexto de cifrado, siga estos pasos:
- Abra la consola de Lambda y, a continuación, seleccione Funciones.
- En Nombre de la función, seleccione la función de Lambda.
- En Variable de entorno, elija Editar y, a continuación, seleccione Agregar variable de entorno.
- Introduzca una Clave y un Valor y, a continuación, expanda la Configuración de cifrado.
- Elija Habilitar los asistentes para el cifrado en tránsito y, a continuación, seleccioneEncriptar.
- Expanda el Fragmento para descifrar información confidencial, copie y pegue el fragmento de forma similar a la siguiente:
DECRYPTED = boto3.client('kms').decrypt(
CiphertextBlob=b64decode(ENCRYPTED),
EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
)['Plaintext'].decode('utf-8')
Utilice este fragmento de código para Descifrar nuevas variables de entorno cifradas con asistentes de cifrado.
Asegúrese de volver a cifrar las variables de entorno antiguas para que funcionen con las nuevas variables de entorno.
Para obtener más información, consulte Uso de variables de entorno de AWS Lambda.
Información relacionada
¿Cómo puedo comprobar que se utiliza el cifrado autenticado con el cifrado de datos asociado al llamar a las API de AWS KMS?