Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
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, puede que desee añadir una cola de Amazon SQS y una alarma sobre la profundidad de la cola, o puede que desee añadir 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 usar la Resources
clave de un archivo de configuración para crear y personalizar AWS los recursos de su entorno. Los recursos definidos en los archivos de configuración se agregan a la AWS CloudFormation plantilla utilizada para lanzar el entorno. Se admiten todos AWS CloudFormation los tipos de recursos.
nota
Siempre que añada un recurso que no esté gestionado por Elastic Beanstalk, asegúrese de añadir una política de usuario con los permisos AWS Identity and Access Management adecuados para sus usuarios (de 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 una función de IAM, que otorga permiso a Amazon EC2 Auto Scaling para publicar mensajes en Amazon SNS, y un tema de SNS, que transmite los mensajes del grupo 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 según el tipo de recurso y se encuentra en el tema de la Guía del AWS CloudFormation usuario correspondiente al tipo de recurso. AWS::SNS::Topic