Come faccio a concedere le autorizzazioni IAM a una funzione Lambda utilizzando un modello AWS SAM?
Voglio concedere le autorizzazioni alle funzioni AWS Lambda nel mio Modello di applicazione serverless AWS (AWS SAM). Come faccio a definire un ruolo di esecuzione Lambda con autorizzazioni limitate in un modello AWS SAM?
Breve descrizione
Per definire un ruolo di esecuzione Lambda in un modello AWS SAM, puoi utilizzare le seguenti proprietà delle risorse AWS::Serverless::Function:
- Policies: consentono di creare un nuovo ruolo di esecuzione utilizzando policy predefinite da applicare alla funzione Lambda.
- Role: consente di definire un ruolo AWS Identity and Access Management (IAM) da utilizzare come ruolo di esecuzione per la funzione.
- PermissionsBoundary: consente di impostare un limite delle autorizzazioni IAM per il ruolo di esecuzione creato.
Nota: le proprietà Policies e Role non possono essere utilizzate insieme. La proprietà Role è utile quando il ruolo di esecuzione richiede autorizzazioni troppo specifiche per utilizzare criteri predefiniti.
Risoluzione
Specifica le policy per un nuovo ruolo di esecuzione Lambda
In Policies inserisci una combinazione dei seguenti elementi:
- Il nome di una policy gestita da AWS
- Il nome di un modello di policy AWS SAM
- Un documento di policy inline
Nota: i modelli di policy AWS SAM sono limitati a risorse AWS specifiche. Consulta la pagina Tabella dei modelli di policy per avere un elenco dei modelli di policy e le autorizzazioni che queste forniscono alle tue funzioni Lambda.
Di seguito sono riportati alcuni esempi di modelli AWS SAM YAML con Policy definite:
Esempio di modello AWS SAM YAML con una policy gestita da AWS denominata
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' b Resources: MyFunction: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://my-bucket/function.zip' Policies: # Give the Lambda service access to poll your DynamoDB Stream - AmazonDynamoDBFullAccess
Esempio di modello AWS SAM YAML con un modello di policy AWS SAM (SQSPollerPolicy) definita
MyFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: ${codeuri} Handler: hello.handler Runtime: python2.7 Policies: - SQSPollerPolicy: QueueName: !GetAtt MyQueue.QueueName
Esempio di modello AWS SAM YAML con un documento di policy inline definita
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: MyFunction: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://my-bucket/function.zip' Policies: - Statement: - Sid: SSMDescribeParametersPolicy Effect: Allow Action: - ssm:DescribeParameters Resource: '*' - Sid: SSMGetParameterPolicy Effect: Allow Action: - ssm:GetParameters - ssm:GetParameter Resource: '*'
(Facoltativo) Specifica un limite delle autorizzazioni IAM
Per impostare le autorizzazioni massime consentite per il ruolo di esecuzione della funzione Lambda, utilizza un limite delle autorizzazioni IAM.
Per impostare un limite delle autorizzazioni IAM, esegui questo comando nel tuo modello AWS SAM YAML:
Specifica il nome della risorsa Amazon (ARN) di un limite delle autorizzazioni
Per la proprietà PermissionsBoundary, inserisci l'ARN di un limite delle autorizzazioni. Ad esempio:
Properties: PermissionsBoundary: arn:aws:iam::123456789012:policy/LambdaBoundaries
Nota: puoi definire PermissionsBoundary solo se stai creando un nuovo ruolo con il tuo modello AWS SAM. Per un Ruolo esistente specificato non sarà invece possibile impostare un limite delle autorizzazioni.
Specifica un ruolo di esecuzione Lambda
Per la proprietà Role inserisci una delle seguenti informazioni:
- L'ARN di un ruolo di esecuzione Lambda a cui è collegata una policy di autorizzazione IAM.
- Il riferimento a una risorsa Role che hai definito nello stesso modello AWS SAM.
Nota: se non specifichi un Ruolo nel modello AWS SAM, verrà creato un ruolo di esecuzione al momento della distribuzione dell'applicazione. Questo ruolo includerà tutte le Policy che avrai definito.
Esempio di modello AWS SAM YAML con proprietà Role definita
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: MyFunction: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://my-bucket/function.zip' Role: arn:aws:iam::111111111111:role/SAMPolicy
Impacchetta e distribuisci la tua applicazione
1. Nell'interfaccia della linea di comando AWS SAM (AWS SAM CLI), esegui il comando ](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-build.html)sam build[ per creare e impacchettare la tua applicazione.
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.
2. Esegui il comando sam deploy per distribuire il tuo pacchetto applicativo AWS SAM.
Per ulteriori informazioni, consulta gli articoli relativi alla creazione e alla distribuzione delle applicazioni serverless.
Informazioni correlate
AWS Serverless Application Model (AWS SAM) (repository GitHub AWS SAM)
Policy templates (repository GitHub AWS SAM)
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 3 anni fa