Concessione dell'accesso alla funziona Lambda ad altri account
Per condividere una funzione con un altro Account AWS, aggiungi una istruzione di autorizzazione multi-account alla policy basata sulle risorse della funzione. Esegui il comando add-permissionprincipal. L'esempio seguente concede l'autorizzazione 111122223333 a un account per invocare my-function con l'alias prod.
aws lambda add-permission \ --function-name my-function:prod\ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal111122223333\ --output text
Verrà visualizzato l'output seguente:
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
La policy basata sulle risorse concede l'autorizzazione all'altro account per accedere alla funzione, ma non consente agli utenti in tale account di superare le autorizzazioni. Gli utenti nell'altro account devono disporre delle autorizzazioni utente corrispondenti per utilizzare l'API Lambda.
Per limitare l'accesso a un utente, un gruppo o un ruolo in un altro account, specificare l'ARN completo dell'identità come principale. Ad esempio, arn:aws:iam::123456789012:user/developer.
L'alias limita quale versione l'altro account può invocare. Richiede che l'altro account includa l'alias nell'ARN della funzione.
aws lambda invoke \ --function-name arn:aws:lambda:us-east-2:123456789012:function:my-function:prod out
Verrà visualizzato l'output seguente:
{
"StatusCode": 200,
"ExecutedVersion": "1"
}Il proprietario della funzione può quindi aggiornare l'alias per puntare a una nuova versione senza che il chiamante debba cambiare il modo in cui invoca la funzione. In questo modo l'altro account non deve modificare il codice per utilizzare la nuova versione e dispone solo dell'autorizzazione per richiamare la versione della funzione associata all'alias.
È possibile concedere l'accesso tra account per qualsiasi operazione API che opera su una funzione esistente. Ad esempio, è possibile concedere l'accesso a un account lambda:ListAliases per ottenere un elenco di alias, oppure lambda:GetFunction per scaricare il codice funzione. Aggiungere ogni autorizzazione separatamente oppure utilizzare lambda:* per concedere l'accesso a tutte le azioni per la funzione specificata.
Per concedere ad altri account l'autorizzazione per più funzioni o per operazioni che non operano su una funzione, utilizzare ruoli IAM.