Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Come posso risolvere gli errori "KMSAccessDeniedException" restituiti da AWS Lambda?
La mia funzione AWS Lambda ha restituito un errore "KMSAccessDeniedException".
Breve descrizione
Aggiorna le autorizzazioni del Servizio AWS di gestione delle chiavi (AWS KMS) dell'identità AWS Identity and Access Management (AWS IAM) in base al messaggio di errore.
Importante: se la chiave AWS KMS e il ruolo IAM appartengono a diversi account AWS, è necessario aggiornare sia la policy IAM che la policy della chiave AWS KMS.
Per ulteriori informazioni sulla gestione delle policy e delle chiavi AWS KMS, consulta Chiavi AWS KMS.
Risoluzione
Nota: se ricevi errori durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.
Risoluzione degli errori "KMS Exception: UnrecognizedClientExceptionKMS Message"
L'errore seguente si verifica in genere quando il ruolo di esecuzione di una funzione Lambda viene eliminato e successivamente ricreato utilizzando lo stesso nome, ma con un principale diverso:
Calling the invoke API action failed with this message: Lambda was unable to decrypt the environment variables because KMS access was denied. Please check the function's AWS KMS key settings. KMS Exception: UnrecognizedClientExceptionKMS Message: The security token included in the request is invalid.
Per risolvere l'errore, devi reimpostare la concessione AWS KMS per il ruolo di esecuzione della funzione procedendo come segue:
Nota: l'utente IAM che crea e aggiorna la funzione Lambda deve disporre dell'autorizzazione per utilizzare la chiave AWS KMS.
1. Ottieni il nome della risorsa Amazon (ARN) del ruolo di esecuzione corrente della funzione e la chiave AWS KMS eseguendo questo comando AWS CLI:
Nota: sostituisci yourFunctionName con il nome della tua funzione.
$ aws lambda get-function-configuration --function-name yourFunctionName
2. Reimposta la concessione AWS KMS effettuando una delle seguenti operazioni:
Aggiorna il ruolo di esecuzione della funzione a un valore temporaneo diverso eseguendo questo comando update-function-configuration:
Importante: sostituisci temporaryValue con l'ARN del ruolo di esecuzione temporaneo.
$ aws lambda update-function-configuration --function-name yourFunctionName --role temporaryValue
Quindi aggiorna il ruolo di esecuzione della funzione al ruolo di esecuzione originale eseguendo questo comando:
Importante: sostituisci originalValue con l'ARN del ruolo di esecuzione originale.
$ aws lambda update-function-configuration --function-name yourFunctionName --role originalValue
-oppure-
Aggiorna la chiave AWS KMS della funzione a un valore temporaneo diverso eseguendo questo comando update-function-configuration:
Importante: sostituisci temporaryValue con l'ARN di una chiave AWS KMS temporanea. Per utilizzare una chiave di servizio predefinita, imposta il parametro kms-key-arn su "".
$ aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn temporaryValue
Quindi aggiorna la chiave AWS KMS della funzione all'ARN della chiave AWS KMS originale eseguendo questo comando:
Importante: sostituisci originalValue con l'ARN della chiave AWS KMS originale.
$ aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn originalValue
Per ulteriori informazioni, consulta Policy delle chiavi in AWS KMS.
Risoluzione degli errori "KMS Exception: AccessDeniedException KMS Message"
L'errore seguente indica che l'identità IAM non dispone delle autorizzazioni necessarie per eseguire l'azione API kms:Decrypt:
Lambda was unable to decrypt your environment variables because the KMS access was denied. Please check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.
Per risolvere l'errore, aggiungi la seguente istruzione di policy all'utente o al ruolo IAM:
Importante: sostituisci "your-KMS-key-arn" con l'ARN della tua chiave AWS KMS.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "your-KMS-key-arn" } ] }
Per istruzioni, consulta Aggiunta di autorizzazioni a un utente (console) o Modifica di una policy di autorizzazioni del ruolo (console) in base al caso d'uso.
Risoluzione degli errori "You are not authorized to perform"
I seguenti errori indicano che l'identità IAM non dispone di una delle autorizzazioni richieste per accedere alla chiave AWS KMS:
You are not authorized to perform: kms:Encrypt.
You are not authorized to perform: kms:CreateGrant.
User: user-arn is not authorized to perform: kms:ListAliases on resource: * with an explicit deny.
Nota: le autorizzazioni AWS KMS non sono richieste per l'identità IAM o per il ruolo di esecuzione della funzione se utilizzi la policy della chiave predefinita.
Per risolvere questi tipi di errori, verifica che l'utente o il ruolo IAM disponga delle autorizzazioni necessarie per eseguire le seguenti azioni API AWS KMS:
Per istruzioni, consulta Aggiunta di autorizzazioni a un utente (console) o Modifica di una policy di autorizzazioni del ruolo (console) in base al caso d'uso.
Esempio di istruzione di policy IAM che concede le autorizzazioni necessarie per accedere a una chiave AWS KMS gestita dal cliente
Importante: il valore Resource deve essere "*". L'azione kms:ListAliases non supporta autorizzazioni di basso livello. Inoltre, assicurati di sostituire "your-kms-key-arn" con l'ARN della tua chiave AWS KMS.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:CreateGrant" ], "Resource": "your-kms-key-arn" }, { "Sid": "statement2", "Effect": "Allow", "Action": "kms:ListAliases", "Resource": "*" } ] }
Risoluzione degli errori "Access to KMS is not allowed"
L'errore seguente indica che un'entità IAM non dispone delle autorizzazioni per ottenere i segreti di AWS Secrets Manager:
Access to KMS is not allowed (Service: AWSSecretsManager; Status Code: 400; Error Code: AccessDeniedException; Request ID: 123a4bcd-56e7-89fg-hij0-1kl2m3456n78)
Assicurati che l'utente o il ruolo IAM disponga delle autorizzazioni necessarie per eseguire le seguenti azioni API AWS KMS:
Per ulteriori informazioni, consulta Come posso risolvere gli errori di accesso a un segreto crittografato di Secrets Manager?
Informazioni correlate
Come posso risolvere gli errori dei codici di stato HTTP 502 e HTTP 500 (lato server) di AWS Lambda?
Come faccio a risolvere i problemi relativi alla funzione Lambda?
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa