View a markdown version of this page

Concessione dell'accesso alla funziona Lambda ad altri account - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Concessione dell'accesso alla funziona Lambda ad altri account

Per condividere una funzione con un'altra Account AWS, aggiungi una dichiarazione delle autorizzazioni per più account alla policy basata sulle risorse della funzione. Ti consigliamo di put-resource-policy utilizzarlo per creare una policy JSON completa. Conput-resource-policy, puoi specificare più principali, aggiungere condizioni e creare dichiarazioni di rifiuto. È possibile utilizzarlo anche add-permission per casi d'uso semplici.

Importante

L'utilizzo put-resource-policy sostituisce qualsiasi politica basata sulle risorse esistente sulla risorsa. Se la risorsa dispone già delle autorizzazioni definite con, le sovrascrive. add-permission put-resource-policy get-resource-policyDa utilizzare per recuperare la policy esistente prima di apportare modifiche.

Utilizzo di una policy JSON completa (consigliata)

La seguente policy di esempio concede due Account AWS autorizzazioni per richiamare una funzione, di cui una limitata a un ruolo IAM specifico:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-invoke", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:role/cross-account-role" ] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

Salva la policy in un file denominato policy.json e applicala. resource-arnPossono specificare una funzione, una versione o un alias:

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json

Puoi anche limitare l'accesso tra account a versioni specifiche utilizzando un alias. Le seguenti policy prevedono l'accesso solo tramite l'alias: prod

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-prod-alias", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function:prod" } ] }

Salva questo criterio in un file denominato alias-policy.json e applicalo all'alias:

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function:prod \ --policy file://alias-policy.json

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.

È 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.

Per concedere ad altri account l'autorizzazione per più funzioni o per operazioni che non operano su una funzione, utilizzare ruoli IAM.

Utilizzo di add-permission

Per casi d'uso semplici, è possibile utilizzare add-permission per aggiungere singole dichiarazioni. L'esempio seguente concede all'account 111122223333 il permesso di invocare my-function con l'prodalias:

aws lambda add-permission \ --function-name my-function:prod \ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal 111122223333 \ --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"}
Nota

Se chiami add-permission dopoput-resource-policy, la nuova dichiarazione viene aggiunta alla policy JSON esistente.

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.