Вот пример 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. Приятного кодирования!