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 funzione Lambda a Servizi AWS
Quando utilizzi un AWS servizio per richiamare la tua funzione, concedi l'autorizzazione in una dichiarazione su una politica basata sulle risorse. È possibile applicare l'istruzione all'intera funzione oppure limitare l'istruzione a una singola versione o alias.
Nota
Quando si aggiunge un trigger a una funzione con la console Lambda, la console aggiorna la policy basata sulle risorse della funzione per consentire al servizio di invocarla. Per concedere le autorizzazioni ad altri account o servizi che non sono disponibili nella console Lambda, puoi utilizzare l'interfaccia a riga di comando di AWS CLI.
Si consiglia di put-resource-policy utilizzarlo per definire una policy JSON completa. Conput-resource-policy, puoi aggiungere dichiarazioni di rifiuto, utilizzare l'intera gamma di chiavi di condizione IAM e gestire tutte le autorizzazioni in un unico documento. Puoi anche utilizzare add-permission per aggiungere singole dichiarazioni per semplici casi d'uso.
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 politica di esempio concede ad Amazon Simple Notification Service l'autorizzazione a richiamare una funzione denominatamy-function, ma solo per un argomento specifico. Inoltre, nega le invocazioni da un argomento particolare.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-sns-my-topic", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:my-topic" } } }, { "Sid": "deny-sns-other-topic", "Effect": "Deny", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:123456789012:function:my-function", "arn:aws:lambda:us-east-2:123456789012:function:my-function:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:restricted-topic" } } } ] }
Salva la policy in un file denominato policy.json e applicala con: put-resource-policy
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function\ --policy file://policy.json
Per Amazon S3, l'origine è un bucket il cui ARN non include un ID di account. È possibile che tu possa eliminare un bucket e che un altro account possa creare un bucket con lo stesso nome. Usa la chiave aws:SourceAccount condizionale per assicurarti che solo le risorse del tuo account possano richiamare la funzione:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-s3", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::my-bucket" } } } ] }
Utilizzo di add-permission
Per casi d'uso semplici, è possibile utilizzare add-permission per aggiungere singole dichiarazioni. Il comando seguente concede ad Amazon Simple Notification Service il permesso di richiamare una funzione denominata: my-function
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns \ --principal sns.amazonaws.com \ --output text
Verrà visualizzato l’output seguente:
{"Sid":"sns","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2:123456789012:function:my-function"}
Nota
Se chiami add-permission dopoput-resource-policy, la nuova dichiarazione viene aggiunta alla policy JSON esistente.
Per limitare le invocazioni a una risorsa specifica, usa l'opzione: source-arn
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns-my-topic \ --principal sns.amazonaws.com \ --source-arn arn:aws:sns:us-east-2:123456789012:my-topic
Per Amazon S3, utilizza l'source-accountopzione con l'ID del tuo account:
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id s3-account \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::amzn-s3-demo-bucket\ --source-account123456789012