Ejemplo: SQS, CloudWatch y SNS - AWS Elastic Beanstalk

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, CloudWatch y SNS

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.

nota

En este ejemplo se crean recursos de AWS, los cuales podrían incurrir gastos. Para obtener más información sobre los precios de AWS, consulte https://aws.amazon.com/pricing/. Algunos servicios forman parte del nivel de uso gratuito de AWS. Si es un cliente nuevo, puede probar estos servicios de forma gratuita. Para obtener más información, consulte https://aws.amazon.com/free/.

Para usar este ejemplo, haga lo siguiente:

  1. Cree un directorio .ebextensions en el directorio de nivel superior del paquete de código fuente.

  2. 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.

  3. 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, crearemos una alarma de CloudWatch si la cola tiene más de 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:

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 de las propiedades VisibilityTimeout y Subscription Endpoint de los valores VisibilityTimeout y Subscription Endpoint de un archivo de configuración (options.config en nuestro ejemplo) que contiene una sección option_settings con una sección aws:elasticbeanstalk:customoption que contiene el par de nombre-valor con el valor real que se va a usar. 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.