Создание таблицы DynamoDB и оповещений с помощью AWS CloudFormation

Вот пример YAML-шаблона AWS CloudFormation, который создает таблицу DynamoDB и простой сигнал тревоги:

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyDynamoDBTable:
    Type: 'AWS::DynamoDB::Table'
    Properties:
      TableName: MyTable
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: N
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5
  MyAlarm:
    Type: 'AWS::CloudWatch::Alarm'
    Properties:
      AlarmName: MyDynamoDBTableAlarm
      AlarmDescription: Alarm for DynamoDB table
      Namespace: AWS/DynamoDB
      MetricName: ConsumedReadCapacityUnits
      Dimensions:
        - Name: TableName
          Value: !Ref MyDynamoDBTable
      Statistic: SampleCount
      Period: 300
      EvaluationPeriods: 1
      Threshold: 10
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - !Ref MySNSTopic
  MySNSTopic:
    Type: 'AWS::SNS::Topic'
    Properties:
      DisplayName: MySNSTopic
      Subscription:
        - Endpoint: your-email@example.com
          Protocol: email

Этот шаблон CloudFormation создает таблицу DynamoDB с именем MyTableс числовым атрибутом idв качестве первичного ключа. В таблице предусмотрено 5 единиц емкости чтения и 5 единиц емкости записи.

Кроме того, с помощью CloudWatch создается сигнал тревоги с именем MyDynamoDBTableAlarm. Сигнал тревоги отслеживает метрику потребляемых единиц емкости чтения для таблицы DynamoDB. Если количество выборок использованных единиц емкости чтения превышает 10 в течение 5-минутного периода, сигнал тревоги активирует действие. В данном случае действие отправляет уведомление на указанный адрес электронной почты с использованием темы SNS.

Теперь перейдем к статье в блоге.

Привет! В этой записи блога мы погрузимся в мир AWS CloudFormation и узнаем, как создать таблицу DynamoDB вместе с простым сигналом тревоги с использованием шаблона YAML. Пристегнитесь и начнем!

Во-первых, давайте взглянем на YAML-шаблон CloudFormation, который мы будем использовать:

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyDynamoDBTable:
    Type: 'AWS::DynamoDB::Table'
    Properties:
      TableName: MyTable
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: N
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5
  MyAlarm:
    Type: 'AWS::CloudWatch::Alarm'
    Properties:
      AlarmName: MyDynamoDBTableAlarm
      AlarmDescription: Alarm for DynamoDB table
      Namespace: AWS/DynamoDB
      MetricName: ConsumedReadCapacityUnits
      Dimensions:
        - Name: TableName
          Value: !Ref MyDynamoDBTable
      Statistic: SampleCount
      Period: 300
      EvaluationPeriods: 1
      Threshold: 10
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - !Ref MySNSTopic
  MySNSTopic:
    Type: 'AWS::SNS::Topic'
    Properties:
      DisplayName: MySNSTopic
      Subscription:
        - Endpoint: your-email@example.com
          Protocol: email

Этот шаблон YAML определяет два ресурса: таблицу DynamoDB и сигнал тревоги. Давайте разберем это шаг за шагом.

Чтобы создать таблицу DynamoDB, мы используем тип ресурса AWS::DynamoDB::Table. Мы указываем имя таблицы, в данном случае MyTable. В таблице есть единственный атрибут id, который имеет тип N(числовой). Мы указываем атрибут idв качестве первичного ключа с типом хеш-ключа.

В таблице предусмотрено 5 единиц емкости чтения и 5 единиц емкости записи. Вы можете настроить эти значения в соответствии со своими требованиями.

Далее мы создаем сигнал тревоги, используя тип ресурса AWS::CloudWatch::Alarm. Сигнал тревоги называется MyDynamoDBTableAlarmи используется для мониторинга показателя использованных единиц емкости чтения для таблицы DynamoDB.

Мы устанавливаем пространство имен тревоги AWS/DynamoDBи указываем имя метрики как ConsumedReadCapacityUnits. Размеры сигнала тревоги устанавливаются по имени таблицы, на которую мы ссылаемся с помощью !Ref MyDynamoDBTable. Это гарантирует, что сигнал тревоги будет связан с таблицей DynamoDB, которую мы создали ранее.

Статистика сигнала тревоги установлена ​​на значение SampleCount, которое измеряет количество проб, взятых за указанный период. В данном случае период устанавливается равным 300 секундам (5 минутам). Сигнализация настроена на оценку показателя за 1 период.

Если среднее количество выборок потребляемых единиц емкости чтения превышает пороговое значение 10, сигнал тревоги запускает действие. В нашем случае действие отправляет уведомление на адрес электронной почты, указанный в ресурсе MySNSTopic. Адрес электронной почты можно настроить, изменив свойство Endpoint.

Если говорить о ресурсе MySNSTopic, то он использует тип ресурса AWS::SNS::Topicдля создания темы в социальных сетях. Теме присвоено отображаемое имя MySNSTopic. Мы настроили подписку на эту тему с установленным протоколом emailи предоставленным примером адреса электронной почты. При необходимости вы можете изменить адрес электронной почты или добавить дополнительные конечные точки подписки.

И всё! С помощью этого шаблона CloudFormation вы можете легко создать таблицу DynamoDB и сигнализацию для отслеживания потребляемых ею единиц емкости чтения. Используя CloudFormation, вы можете автоматизировать предоставление ресурсов AWS и управление ими, упрощая обслуживание вашей инфраструктуры в виде кода.

Не забудьте заменить адрес электронной почты, указанный в качестве примера, на свой собственный, чтобы вы могли получать оповещения о тревогах. Кроме того, вы можете дополнительно настроить шаблон в соответствии с вашими конкретными требованиями.

Надеюсь, эта статья оказалась для вас полезной и помогла понять, как создать таблицу DynamoDB и сигналы тревоги с помощью AWS CloudFormation. Приятного кодирования!