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 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 que se utiliza para lanzar el entorno. Todos los tipos de recursos de AWS CloudFormation son compatibles.

nota

Cada vez que agregue un recurso que no esté administrado por Elastic Beanstalk, asegúrese de agregar una política de usuario con los permisos adecuados para los usuarios de AWS Identity and Access Management (IAM). Las políticas de usuario administradas que Elastic Beanstalk proporciona solo incluyen permisos para los recursos administrados por Elastic Beanstalk.

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 permiso a Amazon EC2 Auto Scaling para publicar mensajes en Amazon SNS, y un tema SNS, que retransmite 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.