Je souhaite accorder des autorisations aux fonctions AWS Lambda dans mon application AWS Serverless Application Model (AWS SAM). Comment définir un rôle d'exécution Lambda avec des autorisations étendues dans un modèle AWS SAM ?
Brève description
Pour définir un rôle d'exécution Lambda dans un modèle AWS SAM, vous pouvez utiliser les propriétés de ressource AWS::Serverless::Function suivantes :
Remarque : les propriétés Stratégies et Rôles ne peuvent pas être utilisées ensemble. L'utilisation de la propriété Rôle est utile lorsque votre rôle d'exécution nécessite des autorisations trop spécifiques pour utiliser des stratégies prédéfinies.
Résolution
Spécifier des stratégies pour un nouveau rôle d'exécution Lambda
Pour la propriété Stratégies, entrez une combinaison des éléments suivants :
Remarque : les modèles de stratégie AWS SAM sont étendus à certaines ressources AWS. Consultez le tableau des modèles de stratégie pour obtenir la liste des modèles de stratégie et les autorisations qu'ils accordent à vos fonctions Lambda.
Voici quelques exemples de modèles AWS SAM au format YAML avec des stratégies définies :
Exemple de modèle AWS SAM au format YAML avec une stratégie gérée AWS nommée
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
Exemple de modèle AWS SAM au format YAML avec un modèle de stratégie AWS SAM (SQSPollerPolicy) défini
MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: ${codeuri}
Handler: hello.handler
Runtime: python2.7
Policies:
- SQSPollerPolicy:
QueueName:
!GetAtt MyQueue.QueueName
Exemple de modèle AWS SAM au format YAML avec un document de stratégie en ligne défini
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: '*'
(Facultatif) Spécifiez une limite d'autorisations IAM
Pour définir les autorisations maximales autorisées pour le rôle d'exécution de votre fonction Lambda, utilisez une limite d'autorisations IAM.
Pour définir une limite d'autorisations IAM, procédez comme suit dans votre modèle AWS SAM au format YAML :
Spécifiez l'Amazon Resource Name (ARN) d'une limite d'autorisations
Pour la propriété PermissionsBoundary (Limites d’autorisations), saisissez l'ARN d'une limite d'autorisations. Par exemple :
Properties:
PermissionsBoundary: arn:aws:iam::123456789012:policy/LambdaBoundaries
Remarque : Vous pouvez définir une PermissionsBoundary (Limite d'autorisations) uniquement si vous créez un nouveau rôle avec votre modèle AWS SAM. Vous ne pouvez pas définir une limite d'autorisations pour un rôle existant que vous spécifiez.
Spécifier un rôle d'exécution Lambda
Pour la propriété Rôle, entrez l'un des éléments suivants :
Remarque : si vous ne spécifiez pas de rôle dans votre modèle AWS SAM, un rôle d'exécution avec les stratégies que vous définissez est créé lorsque vous déployez votre application. Ce rôle d'exécution inclut toutes les stratégies que vous définissez.
Exemple de modèle AWS SAM au format YAML avec la propriété Rôle définie
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
Empaquetage et déploiement de votre application
1. Dans l'interface de ligne de commande AWS SAM (AWS SAM CLI), utilisez la commande sam build pour générer et empaqueter votre application.
Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente d'AWS CLI.
2. Utilisez la commande sam deploy pour déployer votre package d'application AWS SAM.
Pour plus d'informations, consultez Création d'applications avec des dépendances et Déploiement d'applications sans serveur.
Informations connexes
Mise en route avec AWS SAM
Modèle d'application sans serveur AWS (AWS SAM) (Repo AWS SAM GitHub)
Modèles de stratégie (Repo AWS SAM GitHub)
Stratégies gérées et stratégies en ligne
Validation des fichiers de modèle AWS SAM