

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
<a name="environment-resources"></a>

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](ebextensions.md) para crear y personalizar AWS los recursos de su entorno. Los recursos definidos en los archivos de configuración se agregan a la CloudFormation plantilla utilizada para lanzar el entorno. Se admiten todos CloudFormation [los tipos de recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html).

**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](AWSHowTo.iam.managed-policies.md) 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 escalado automático al grupo de escalado automático 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](ebextensions-functions.md) 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](customize-containers-format-resources-eb.md) estándar proporcionados por Elastic Beanstalk.

Para `[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#d0e48356)`, `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 CloudFormation usuario correspondiente al tipo de](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#d0e62250) recurso. AWS::SNS::Topic 