

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.

# Ejemplo: SQS y CloudWatch SNS
<a name="customize-environment-resources-sqs"></a>

Este ejemplo añade una cola de Amazon SQS y una alarma sobre la longitud de la cola al entorno. Las propiedades que se muestran en este ejemplo son las propiedades mínimas necesarias que debe establecer para cada uno de estos recursos. [Puede descargar el ejemplo en SQS, SNS y. CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/SNS.config) 

**nota**  
En este ejemplo se crean AWS recursos, por los que es posible que se le cobre. Para obtener más información sobre AWS los precios, consulte[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Algunos servicios forman parte de la capa de uso AWS gratuito. Si es un cliente nuevo, puede probar estos servicios de forma gratuita. Para obtener más información, consulte [https://aws.amazon.com/free/](https://aws.amazon.com/free/).

Para usar este ejemplo, haga lo siguiente:

1. Cree un directorio `[.ebextensions](ebextensions.md)` en el directorio de nivel superior del paquete de código fuente. 

1. Cree dos archivos de configuración con la extensión `.config` y colóquelos en el directorio `.ebextensions`. En un archivo de configuración se definen los recursos y en el otro, las opciones.

1. Implemente su aplicación en Elastic Beanstalk.

   YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la sangría, no tabuladores.

Cree un archivo de configuración (por ejemplo, sqs.config) que defina los recursos. En este ejemplo, crearemos una cola de SQS y definiremos la propiedad `VisbilityTimeout` del recurso `MySQSQueue`. A continuación, crearemos un `Topic` de SNS y especificaremos que se envíe un correo electrónico a `someone@example.com` cuando se active la alarma. Por último, creamos una CloudWatch alarma si la cola supera los 10 mensajes. En la propiedad `Dimensions`, especificamos el nombre de la dimensión y el valor que representa la medición de la dimensión. Utilizamos `Fn::GetAtt` para devolver el valor de `QueueName` de `MySQSQueue`.

```
#This sample requires you to create a separate configuration file to define the custom options for the SNS topic and SQS queue.
Resources:
  MySQSQueue:
    Type: AWS::SQS::Queue
    Properties: 
      VisibilityTimeout:
        Fn::GetOptionSetting:
          OptionName: VisibilityTimeout
          DefaultValue: 30
  AlarmTopic:
    Type: AWS::SNS::Topic
    Properties: 
      Subscription:
        - Endpoint:
            Fn::GetOptionSetting:
              OptionName: AlarmEmail
              DefaultValue: "nobody@amazon.com"
          Protocol: email
  QueueDepthAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: "Alarm if queue depth grows beyond 10 messages"
      Namespace: "AWS/SQS"
      MetricName: ApproximateNumberOfMessagesVisible
      Dimensions:
        - Name: QueueName
          Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"] }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 1
      Threshold: 10
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: AlarmTopic
      InsufficientDataActions:
        - Ref: AlarmTopic

Outputs :
  QueueURL: 
    Description : "URL of newly created SQS Queue"
    Value : { Ref : "MySQSQueue" }
  QueueARN :
    Description : "ARN of newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "Arn"]}
  QueueName :
    Description : "Name newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"]}
```

Para obtener más información sobre los recursos que se utilizan en este archivo de configuración de ejemplo, consulte las siguientes referencias: 
+ [AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)

Cree un archivo de configuración distinto llamado `options.config` y defina la configuración de opciones personalizadas.

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     VisibilityTimeout : 30
     AlarmEmail : "nobody@example.com"
```

Estas líneas indican a Elastic Beanstalk que obtenga los valores VisibilityTimeout de las propiedades del punto de conexión **y del** punto de enlace de suscripción de un archivo **VisibilityTimeout de** configuración (options.config en nuestro ejemplo) que contiene una sección option\$1settings **con** una sección aws:elasticbeanstalk:customoption que contiene un par nombre-valor que contiene el valor real que se va a utilizar. En el ejemplo anterior, este valor es 30 y se usaría “nobody@amazon.com” para los valores. Para obtener más información acerca de `Fn::GetOptionSetting`, consulte [Funciones](ebextensions-functions.md).