Añadir y personalizar recursos del entorno de Elastic Beanstalk - AWS Elastic Beanstalk

Añadir y personalizar recursos del entorno de Elastic Beanstalk

Es posible que también desee personalizar los recursos que forman parte de su entorno de Elastic Beanstalk. Por ejemplo, es posible que desee agregar una cola de Amazon SQS y una alarma sobre la profundidad de cola o un clúster de Amazon ElastiCache. Puede personalizar fácilmente el entorno al mismo tiempo que implementa la versión de la aplicación incluyendo un archivo de configuración con el paquete de código fuente.

Puede utilizar la clave Resources en un archivo de configuración para crear y personalizar recursos de AWS en su entorno. Los recursos definidos en los archivos de configuración se añaden a la plantilla de AWS CloudFormation utilizada para lanzar el entorno. Se admiten todos los tipos de recursos de AWS CloudFormation.

Por ejemplo, el siguiente archivo de configuración añade un enlace de ciclo de vida de Auto Scaling al grupo de Auto Scaling creado por 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"] }

Este ejemplo define tres recursos, hookrole, hooktopic y lifecyclehook. Los dos primeros recursos son un rol de IAM, que concede a Amazon EC2 Auto Scaling permiso para publicar mensajes en Amazon SNS, y un tema de SNS, que transmite los mensajes del grupo de Auto Scaling a una dirección de correo electrónico. Elastic Beanstalk crea estos recursos con los tipos y propiedades especificados.

El recurso final, lifecyclehook, es el propio enlace de ciclo de vida:

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

La definición del enlace de ciclo de vida usa dos funciones para rellenar los valores de las propiedades del enlace. { "Ref" : "AWSEBAutoScalingGroup" } recupera el nombre del grupo de Auto Scaling creado por Elastic Beanstalk para el entorno. AWSEBAutoScalingGroup es uno de los nombres de recurso estándar proporcionados por Elastic Beanstalk.

Para AWS::IAM::Role, Ref solo devuelve el nombre del rol, no el ARN. Para obtener el ARN del parámetro RoleARN, se utiliza otra función intrínseca, Fn::GetAtt, en su lugar, que puede obtener cualquier atributo de un recurso. RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] } obtiene el atributo Arn del recurso hookrole.

{ "Ref" : "hooktopic" } obtiene el ARN del tema de Amazon SNS creado anteriormente en el archivo de configuración. El valor devuelto por Ref varía en función del recurso y puede encontrarse en el tema del tipo de recurso AWS::SNS::Topic de la Guía del usuario de AWS CloudFormation.