AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Come posso risolvere l'errore Lambda "The final policy size is bigger than the limit"?
Quando imposto un trigger per invocare la mia funzione AWS Lambda, visualizzo l'errore "The final policy size is bigger than the limit".
Breve descrizione
Se la policy basata sulle risorse della funzione Lambda supera i 20 KB, Lambda restituisce il messaggio di errore "The final policy size is bigger than the limit".
L'errore può verificarsi quando crei risorse per altri servizi AWS che richiedono l'autorizzazione per accedere alla funzione.
Nota: il limite della policy basata sulle risorse della funzione Lambda è di 20 KB e non è modificabile.
Per risolvere l'errore, rimuovi le istruzioni di policy ripetitive e sostituiscile con istruzioni consolidate che utilizzano caratteri jolly (\ *) per ridurre le dimensioni della policy della funzione.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Rivedi le policy basate sulle risorse della funzione
Per individuare e rivedere la policy basata sulle risorse della funzione Lambda, esegui questo comando get-policy:
aws lambda get-policy --function-name your-function
Nota: sostituisci your-function con il nome o con il nome della risorsa Amazon (ARN) della tua funzione.
Puoi anche utilizzare il processore JSON della riga di comando, jq, nel comando get-policy per scrivere query avanzate. Per informazioni sulle modalità per scaricare e installare jq, consulta Download jq (Scarica jq) sul sito web jq.
Esempio di comando get-policy che utilizza jq per formattare la policy di una funzione Lambda come file JSON:
aws lambda get-policy --function-name your-function | jq '.Policy|fromjson'
Esempio di comando get-policy che utilizza jq per individuare la dimensione della policy di una funzione Lambda:
aws lambda get-policy --function-name your-function | jq -r '.Policy' | wc -c
Esempio di comando get-policy che utilizza jq per individuare l’ID dell'istruzione (Sid) di determinate istruzioni di policy:
aws lambda get-policy --function-name your-function | jq '.Policy | fromjson | .Statement[] | select(.Principal.Service=="events.amazonaws.com") | .Sid'
Nota: sostituisci events.amazonaws.com con il servizio AWS che invoca la tua funzione.
Esempio di comando get-policy che utilizza jq per ottenere il Sid delle risorse i cui nomi iniziano con la stessa stringa:
aws lambda get-policy --function-name your-function | jq '.Policy| fromjson | .Statement[] | select(.Condition.ArnLike."AWS:SourceArn" | startswith("arn:aws:events:region:account-id:rule/test-")) | .Sid'
Nota: sostituisci arn:aws:events:region:account-id:rule/test- con una stringa condivisa dagli ARN delle risorse in più istruzioni di policy ripetitive.
Nella policy basata sulle risorse, identifica le istruzioni di policy che puoi sostituire con un carattere jolly. Annota il Sid di ogni istruzione della policy.
Rimuovi le istruzioni di policy ripetitive
Per rimuovere ogni istruzione di policy ripetitiva, esegui questo comando remove-permission:
aws lambda remove-permission --function-name your-function --statement-id sid
Nota: sostituisci your-function con il nome o con l'ARN della tua funzione. Sostituisci sid con il Sid dell'istruzione di policy che vuoi rimuovere.
Aggiungi istruzioni di policy che utilizzano un carattere jolly (*)
Per aggiungere nuove istruzioni di policy consolidate che includono un carattere jolly (\ *), esegui questo comando add-permission:
aws lambda add-permission --function-name your-function \--statement-id 'sid' \ --action 'lambda:InvokeFunction' \ --principal 'events.amazonaws.com' \ --source-arn 'arn:aws:events:region:account-id:rule/test-*'
Nota: sostituisci my-function con il nome o con l'ARN della tua funzione. Sostituisci sid con un nuovo Sid di qualsiasi valore. Sostituisci events.amazonaws.com con il principale dell'account AWS o del servizio AWS che invoca la tua funzione. Sostituisci arn:aws:events:region:account-id:rule/test-* con una stringa ARN (più un carattere jolly) condivisa dalle risorse a cui concedi le autorizzazioni.
Per ulteriori informazioni, consulta Come posso utilizzare policy basate sulle risorse con AWS Lambda per concedere l'autorizzazione a servizi AWS?
- Argomenti
- Compute
- Tag
- AWS Lambda
- Lingua
- Italiano
