Ajout et personnalisation des ressources de l'environnement Elastic Beanstalk - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ajout et personnalisation des ressources de l'environnement Elastic Beanstalk

Vous pouvez personnaliser les ressources de votre environnement qui font partie de votre environnement Elastic Beanstalk. Par exemple, vous pouvez ajouter une file d'attente Amazon SQS et une alarme relative à la longueur de la file d'attente, ou ajouter un cluster Amazon ElastiCache. Vous pouvez facilement personnaliser votre environnement en même temps que vous déployez votre version d'application, en incluant un fichier de configuration dans votre bundle source.

Vous pouvez utiliser la clé Resources dans un fichier de configuration pour créer et personnaliser les ressources AWS de votre environnement. Les ressources définies dans les fichiers de configuration sont ajoutées au modèle AWS CloudFormation utilisé pour lancer votre environnement. Tous les types de ressources AWS CloudFormation sont pris en charge.

Note

Chaque fois que vous ajoutez une ressource qui n'est pas gérée par Elastic Beanstalk, assurez-vous d'ajouter une politique d'utilisateur avec les autorisations appropriées à vos utilisateurs (IAM) AWS Identity and Access Management. Les politiques d'utilisateur gérées fournies par Elastic Beanstalk ne couvrent que les autorisations pour les ressources gérées par Elastic Beanstalk.

Par exemple, le fichier de configuration suivant ajoute un hook de cycle de vie Auto Scaling au groupe Auto Scaling par défaut créé par Elastic Beanstalk :

~/my-app/.ebextensions/as-hook.config

Resources: hookrole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "autoscaling.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] } Policies: [ { "PolicyName": "SNS", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Resource": "*", "Action": [ "sqs:SendMessage", "sqs:GetQueueUrl", "sns:Publish" ] } ] } } ] hooktopic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: "my-email@example.com" Protocol: email lifecyclehook: Type: AWS::AutoScaling::LifecycleHook Properties: AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" } LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING NotificationTargetARN: { "Ref" : "hooktopic" } RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }

Cet exemple définit trois ressources : hookrole, hooktopic et lifecyclehook. Les deux premières ressources correspondent à un rôle IAM, qui autorise Amazon EC2 Auto Scaling à publier des messages dans Amazon SNS, et à une rubrique SNS, qui transmet des messages vers une adresse e-mail à partir du groupe Auto Scaling. Elastic Beanstalk crée ces ressources avec les propriétés et les types spécifiés.

La ressource finale, lifecyclehook, correspond au hook du cycle de vie lui-même :

lifecyclehook: Type: AWS::AutoScaling::LifecycleHook Properties: AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" } LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING NotificationTargetARN: { "Ref" : "hooktopic" } RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }

La définition du hook de cycle de vie utilise deux fonctions pour renseigner les valeurs relatives aux propriétés du hook. { "Ref" : "AWSEBAutoScalingGroup" } récupère le nom du groupe Auto Scaling créé par Elastic Beanstalk pour l'environnement. AWSEBAutoScalingGroup est l'un des noms de ressource standard fournis par Elastic Beanstalk.

Pour AWS::IAM::Role, Ref renvoie uniquement le nom du rôle, pas l'ARN. Pour obtenir l'ARN du paramètre RoleARN, vous devez utiliser une autre fonction intrinsèque, Fn::GetAtt, qui permet d'obtenir un attribut à partir d'une ressource. RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] } obtient l'attribut Arn depuis la ressource hookrole.

{ "Ref" : "hooktopic" } permet d'obtenir l'ARN de la rubrique Amazon SNS créée précédemment dans le fichier de configuration. La valeur renvoyée par Ref varie selon le type de ressource et se trouve dans la rubrique du Guide de l'utilisateur AWS CloudFormation dédiée au type de ressource AWS::SNS::Topic.