Это вторая часть в трех частях серии, где мы создаем шаблон облака для того, что я думаю о том, как довольно типичная среда: одно виртуальное частное облако разбило на две подсети и включая два экземпляра. Если вы еще не читали первую часть в серии, я призываю вас проверить это сейчас!
- Часть 1: Мы настраиваем VPC и подсети
Настройка группы «Админанструкторов»
Для этого проекта мы создаем общие «администраторы» группы, которая имеет доступ к резервной копии с нашими резервами базы данных. Я вообще не допускаю никому прямую доступ к консоли EC2, если они действительно не нуждаются в этом, поэтому я не решаю, что в этом шаблоне (кроме того, не каждое действие веб-консоли EC2 можно управлять таким образом). Мое мышление вот что мы обычно даем «администраторы» или «разработчики» учетных записей в отдельных экземплярах, им не нужна веб-консоль EC2, чтобы сделать их работу.
TutorialAdminGroup: Type: AWS::IAM::Group Properties: Policies: - PolicyName: TutorialAdminPolicy PolicyDocument: Statement: - Effect: Allow Action: - s3:ListBucket - s3:ListBucketByTags - s3:ListBucketMultipartUploads - s3:ListBucketVersions Resource: !Sub ${TutorialBackupS3Bucket.Arn} - Effect: Allow Action: - s3:PutObject - s3:DeleteObject - s3:GetObject Resource: !Sub ${TutorialBackupS3Bucket.Arn}/*
Мы используем IAM Group Resource создать нашу новую группу. Единственное свойство, которое мы предоставляем, это Политики
Свойство, содержащее список PolicyName
и Полтительный документ
Пары, в этом случае мы определяем только то, что мы назвали «TustorialAdminPolicy».
А Полтительный документ
содержит Заявление
который содержит список Эффект
экземпляры; Каждый из тех, кто в свою очередь содержит Действие
Собственность со списком разрешений. Мы используем Ресурс
Свойство, чтобы связать со ссылкой на наше ведро, в этом случае арн Backup Bucket. Если мы посмотрим на первый Эффект
Вы увидите, что мы присваиваем четыре разрешения «ListBucket …» для нашего резервного ведра. Второй эффект наносил еще три действия в каждый файл в резервном ведре, что указано /*
в конце арна ведра.
Любая учетная запись, которую мы добавляем к этой группе, смогут загрузить или удалять любой из файлов в ведре (а также загрузку). В этом случае, когда мы говорим «файлы», мы действительно имеем в виду дампы базы данных для этого проекта. Они также смогут подтянуть консоль S3 для ведра, но им понадобится ссылка непосредственно к ведрю . Они не смогут войти в S3 и просматривать список всех ведер.
Последнее примечание: поскольку мы создаем роль IAM с нашим шаблоном, нам нужно позволить облачности знать, что это нормально. Отсюда, нам нужно добавить --capabilities
Флаг нашему AWS
команды.
aws cloudformation create-stack \ --stack-name tutorial \ --template-body file://template.yaml \ --parameters ParameterKey=KeyPairName,ParameterValue=cloudfront-tutorial \ --tags Key=Project,Value=cf-tutorial \ --capabilities CAPABILITY_IAM
Если вы не включите тег, облачность выйдет с ошибкой. Один и тот же флаг можно использовать с командами «Обновить».
Установить роль для наших экземпляров
Далее нам нужно настроить роль, которую наши экземпляры могут предположить, чтобы получить доступ к ресурсам (на данный момент, просто резервное копирование).
TutorialInstanceRole: Type: AWS::IAM::Role Properties: ManagedPolicyArns: - arn:aws-us-gov:iam::aws:policy/CloudWatchAgentServerPolicy - arn:aws-us-gov:iam::aws:policy/service-role/AmazonEC2RoleforSSM - arn:aws-us-gov:iam::aws:policy/AmazonSSMReadOnlyAccess AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: ec2.amazonaws.com Action: sts:AssumeRole
Мы используем Роль ресурса Чтобы создать нашу новую роль экземпляра и назначить три консервированных политики …
- Первый дает экземпляр запустить Cloudwatch агент и отправьте события в CloudWatch Service.
- Далее позволяет экземпляру взаимодействовать с Системный менеджер позволить нам управлять экземплярами как группу
- Последний предоставляет доступ только для чтения к магазину параметров Manager Systems.
Служба Cloudwatch Amazon будет составлять данные, представленные вашими экземплярами, и позволит вам настроить отчеты, приборные панели и оповещения на основе этих данных (i.e. Когда использование CPU становится слишком высоким или доступным дисковым пространством слишком мало). Systems Manager предоставляет некоторые инструменты для управления вашими экземплярами, такие как установка исправлений или пакета программного обеспечения. Он позволяет вам выполнять эти действия по нескольким экземплярам как группу, которая может быть удобна. Я не собираюсь пойти на эти услуги подробно здесь Но я призываю вас проводить некоторое время, проверяя их, если вы еще этого не сделали.
TutorialInstanceRolePolicy: Type: AWS::IAM::Policy Properties: PolicyName: TutorialInstanceRolePolicy Roles: - Ref: TutorialInstanceRole PolicyDocument: Statement: - Effect: Allow Action: - s3:ListBucket - s3:ListBucketByTags - s3:ListBucketMultipartUploads - s3:ListBucketVersions Resource: !Sub ${TutorialBackupS3Bucket.Arn} - Effect: Allow Action: - s3:PutObject - s3:DeleteObject - s3:GetObject Resource: !Sub ${TutorialBackupS3Bucket.Arn}/*
Мы создаем новый Ресурс политики что мы присваиваем нашими случару. Мы связываем роль, которую мы только что создали, а затем добавьте новую политику, которая обеспечивает доступ к ведрю резервного копирования. Как видите, он точно такой же, как роль, которую мы создали для наших администраторов группы.
Последняя часть этой головоломки — это «профиль экземпляра», который мы можем назначить нашим экземплярам.
TutorialInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref TutorialInstanceRole
Со всей другой работой здесь здесь не так много. Мы создаем новый Inductionprofile Resource и свяжите это с нашей ролью. Когда мы предоставляем экземпляры, мы можем назначить им этот профиль, у них будет возможность записи в наше резервное копирование, отправлять данные о производительности и события в CloudWatch и принять удаленные команды из System Manager.
Предоставление групп журналов CloudWatch
Самое последнее, что нам нужно, прежде чем Provisioning — пара облака CloudWatch журнальные группы . Мы можем проинструктировать наши экземпляры отправить некоторые из своих файлов журналов на эти группы, а затем просмотреть журналы через консоль CloudWatch.
TutorialBootLog: Type: AWS::Logs::LogGroup TutorialKernelLog: Type: AWS::Logs::LogGroup
Мы используем Loggroup. Ресурс для создания двух новых групп журналов. Эти группы будут именами после имени, которые мы предоставляем в шаблоне с некоторыми случайными символами, прикрепленными к концу. Мы создаем группы сейчас, потому что мы собираемся ссылаться на них напрямую, когда мы предоставляем экземпляры.
Предоставление сервера базы данных
Я знаю, что вы думаете: все это работает, и мы только сейчас оказываем нашими случаями! Это правда, было много препаратов и вещей, которые нужно подумать о Но мы намошнем на пути к шаблону, который повторяет наши серверы повторяемой и достаточно безопасной образом. Просто подумайте обо всех шаблонах, которые вы будете писать!
Мы собираемся сначала предоставить сервер базы данных. Это немного вовлечено, поэтому я собираюсь сломать его на куски. Сначала мы предоставляем новый экземпляр с Ресурс экземпляра …
TutorialDatabaseServer: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: files: /etc/profile.d/cloudformation-init.sh: content: !Sub | export BACKUP_S3_BUCKET="${TutorialBackupS3Bucket}"
Обратите внимание, что в коде STANZA выше я останавливаюсь перед свойствами, мы перейдем к свойствам дальше.
Первое, что мы делаем, это настроен «метаданные» для сценария инициализации облака инициализации (мы будем называть это в самом конце) с Может формация INITY . Это были мы сказали сценарию инициализации, что мы хотели бы сделать, когда он работает, в этом случае мы добавляем новую переменную среды в новый файл в /etc/profile.d.d.d
называется CloudFormation-init.sh
Отказ Всякий раз, когда кто-то входит в машину этот скрипт (вместе со всем остальным в каталоге) будет оценен, конечный результат будет то, что имя нашего резервного копирования будет доступно через Backup_s3_bucket
Переменная среды. Имейте в виду, что в этом метадате ничего не делают на своем собственном: сценарий инициализации будет использовать его, когда он выполнит, и мы сделаем это в конце определения нашего экземпляра.
Нам также необходимо предоставить файл конфигурации для агента CloudWatch. Этот агент будет собирать данные о производительности и файлам журнала и отправить их обратно в службу CloudWatch.
/etc/amazon/amazon-cloudwatch-agent.json: content: !Sub | { "metrics": { "append_dimensions": { "AutoScalingGroupName": "${!aws:AutoScalingGroupName}", "ImageId": "${!aws:ImageId}", "InstanceId": "${!aws:InstanceId}", "InstanceType": "${!aws:InstanceType}" }, "metrics_collected": { "cpu": { "measurement": [ "cpu_usage_idle", "cpu_usage_iowait", "cpu_usage_user", "cpu_usage_system" ], "metrics_collection_interval": 30, "totalcpu": false }, "disk": { "measurement": [ "used_percent", "inodes_free" ], "metrics_collection_interval": 30, "resources": [ "*" ] }, "diskio": { "measurement": [ "io_time" ], "metrics_collection_interval": 30, "resources": [ "*" ] }, "mem": { "measurement": [ "mem_used_percent" ], "metrics_collection_interval": 30 }, "statsd": { "metrics_aggregation_interval": 30, "metrics_collection_interval": 10, "service_address": ":8125" }, "swap": { "measurement": [ "swap_used_percent" ], "metrics_collection_interval": 30 } } }, "logs": { "logs_collected": { "files": { "collect_list": [ { "log_group_name": "${TutorialBootLog}", "file_path": "/var/log/boot.log" }, { "log_group_name": "${TutorialKernelLog}", "file_path": "/var/log/messages" } ] } } } }
Этот файл конфигурации сообщает CloudWatch Agent для отправки данных на CPU, Disk, Memory и использование файлов SWAP обратно на CloudWatch, а также два файла журнала: журналы загрузочного и ядра.
Далее мы установим свойства для нашего экземпляра …
Properties: ImageId: !Ref ImageId InstanceType: !Ref InstanceType KeyName: !Ref KeyPairName NetworkInterfaces: - SubnetId: !Ref TutorialPrivateSubnet DeviceIndex: 0 GroupSet: - !Ref TutorialPrivateSecurityGroup BlockDeviceMappings: - DeviceName: !Sub "/dev/${RootDevice}" Ebs: VolumeSize: !Ref VolumeSize VolumeType: gp2 IamInstanceProfile: !Ref TutorialInstanceProfile Tags: - Key: "Name" Value: "Tutorial Database Server"
Вернуться в Часть 1 Мы создаем эти параметры и предоставили значения по умолчанию для них, теперь они наконец вступают в игру. Если вы оглянетесь на вершину шаблона, вы увидите, что мы устанавливаем параметры для изображения, тип экземпляра, названию ключа и объем корневого объема. В то время как наш шаблон требует, чтобы имя ключа было при условии, что другие значения заполнены значениями по умолчанию. Мое ожидание состоит в том, что значения по умолчанию обычно используются, большая часть причины они находятся в верхней части параметра, — это легко получить.
Первое, что мы делаем, выбираете изображение, которое мы хотели бы, чтобы этот экземпляр, в указанном выше, у нас есть ссылка на параметр, значение по умолчанию для Amazon Linux 2 изображение. Существуют другие изображения Linux, я выбрал этот в основном, потому что у него уже есть инструменты AWS и то облака, делая вещи, которые намного проще. Также интересно, если вы разрабатываете локально, вы можете работать с Amazon Linux 2 Docker Consier на вашей рабочей станции.
Далее мы используем наш тип экземпляра параметра, значения по умолчанию для T2.Micro
потому что это учебное пособие, и я не хочу стоить вам денег; Этот тип имеет право на использование под Бесплатный ярус Amazon Отказ Если вы не использовали свои 750 часов использования бесплатного уровня для месяца, вы не должны взиматься за предоставление этих экземпляров. Повышение стоимости, микро экземпляр, вероятно, достаточно, чтобы провести сайт с низким уровнем движения, как ваш персональный блог.
Мы устанавливаем имя пары ключей, которое мы хотим использовать для обеспечения нашего экземпляра, обратите внимание, что значение, которое мы ссылаемся в KeyName
Свойство — это один параметр, который мы устанавливаем для этого скрипта в части 1. Вам нужно будет иметь эту ключевую пару удобно, чтобы SSH к экземпляру.
Мы хотели бы сервер базы данных быть в нашей частной подсети, и мы позаботимся о том, когда указываем NetworkInterfaces
имущество. Здесь мы передаем ссылку на нашу частную подсеть, мы тогда устанавливаем группу безопасности в нашу «частную» группу безопасности с Комплект комфорта
Свойство сетевого интерфейса.
Каждый случай нуждается в дисковом пространстве, и мы можем настроить Эластичный блок-магазин (EBS) Тома для нашего примера с BlockDevicemapsings
имущество. Мы отображаем в одном объеме 250 ГБ (ссылка на наш параметр) в корневое устройство, используя функцию замещения с нашим параметром, чтобы установить значение для /dev/xvda
Мы выбрали тип громкости «общего назначения» (GP2).
Тип объема по умолчанию — «GP2», и это разумный выбор, дополнительная информация о различных типах может быть найдена в Документация типа громкости EBS . Также обратите внимание, что корневое устройство, которое сапоги экземпляра из могут варьироваться от одного распределения Linux на другой. Например, при Ubuntu объем корневого корня должен быть сопоставлен на /dev/sda1
; Если экземпляр не сможет найти громкость, вы увидите, что он начнется в консоли EC2, но она остановится всего за пару минут.
Вместо того, чтобы управлять полномочиями для наших экземпляров EC2, мы вдумчиво создали профиль! Мы устанавливаем профиль для нашего экземпляра с IaminstanceProfile
недвижимость и пройти ссылку на этот профиль.
Наконец, мы устанавливаем теги на наш экземпляр, в этом случае мы устанавливаем тег «Имя».
С той из того, что осталось единственное, что нужно сделать, это вызвать скрипт инициализации облака, когда начнется экземпляр. Чтобы сделать это, мы пишем маленький скрипт, который звонит CFN-init
во время начала.
UserData: Fn::Base64: !Sub | #!/bin/bash -xe # cloudformation initialize /opt/aws/bin/cfn-init -v -s ${AWS::StackName} --region ${AWS::Region} -r TutorialDatabaseServer # download and install cloudwatch agent wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm yum -y install amazon-cloudwatch-agent.rpm mv /etc/amazon/amazon-cloudwatch-agent.json /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.json sudo systemctl enable amazon-cloudwatch-agent sudo systemctl start amazon-cloudwatch-agent
Документация для CFN-init
это Доступно на площадке облака . В примере вы можете видеть, что мы называем сценарий с именем нашего стека, область развертывания стека и именем нашего сервера. Когда скрипт работает, осмотрит Метаданные
Свойство, которое мы устанавливаем в начале нашего экземпляра Stanza и проведем эти задачи. Для этого анализа сценарий инициализации добавит этот новый файл в /etc/profile.d.d.d
С нашей пользовательской средой переменных.
CFN-init
Скрипт обрабатывает получение наших файлов конфигурации, записанные на диск, другое, что нам нужно сделать, это установить и запустить агент CloudWatch. Следующий бит скрипта загружает текущую версию, устанавливает ее, перемещает наш файл конфигурации на место, а затем включает и запускает службу, чтобы агент записался во время загрузки.
И это все… Для нашего сервера базы данных. Нам нужно сделать почти то же самое для нашего веб-сервера.
TutorialWebServer: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: files: /etc/profile.d/cloudformation-init.sh: content: !Sub | export BACKUP_S3_BUCKET="${TutorialBackupS3Bucket}" export DATABASE_SERVER="${TutorialDatabaseServer.PrivateIp}"
В основном все точно так же, но есть пара небольших различий. Когда мы настроим Метаданные
Для скрипта инициализации мы добавили другую переменную среды, которая содержит частный IP-адрес сервера базы данных, таким образом, мы можем развернуть этот шаблон более раз, и веб-сервер в каждом стеке будет знать, где найти соответствующий сервер базы данных.
Я не включаю в эту статью, но мы предоставляем тот же файл конфигурации для агента CloudWatch, который мы использовали для веб-сервера. Если вы пишете шаблон вместе с этой статьей, найдите минуту, чтобы скопировать и вставить эту стропу в файл сейчас.
Properties: ImageId: !Ref ImageId InstanceType: !Ref InstanceType KeyName: !Ref KeyPairName NetworkInterfaces: - SubnetId: !Ref TutorialPublicSubnet DeviceIndex: 0 GroupSet: - !Ref TutorialPublicSecurityGroup BlockDeviceMappings: - DeviceName: !Sub "/dev/${RootDevice}" Ebs: VolumeSize: !Ref VolumeSize VolumeType: gp2 IamInstanceProfile: !Ref TutorialInstanceProfile Tags: - Key: "Name" Value: "Tutorial Web Server" UserData: Fn::Base64: !Sub | #!/bin/bash -xe # cloudformation initialize /opt/aws/bin/cfn-init -v -s ${AWS::StackName} --region ${AWS::Region} -r TutorialDatabaseServer # download and install cloudwatch agent wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm yum -y install amazon-cloudwatch-agent.rpm mv /etc/amazon/amazon-cloudwatch-agent.json /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.json sudo systemctl enable amazon-cloudwatch-agent sudo systemctl start amazon-cloudwatch-agent
С точки зрения свойств, единственное отличие состоит в том, что мы поместили наш веб-сервер в публичную подсеть, чтобы он мог общаться с публичным Интернетом (в качестве веб-серверов так часто нужно делать).
На данный момент мы охватывали первые четыре цели, которые мы выложили для себя в части 1. С шаблоном, когда он стоит прямо сейчас, мы можем …
- Предоставление ресурсов для проекта
- Уход за пенсию для проекта
- Изолировать ресурсы для проекта
- Отчет о ресурсах по проекту
Я думаю, что это довольно значительная веха! Отсюда мы можем настроить шаблон, чтобы соответствовать конкретному проекту и с помощью одной команды настроить среду. Если у нас есть клиент, который хочет «тест» и «производственную» среду, все, что нам нужно сделать, это дважды для того, чтобы сделать шаблон дважды.
Отчет о ресурсах
Это немного за пределами области облачности, но я думал, что мы сделаем короткий перерыв от шаблона и посмотрим на некоторые способы использования тегов, которые мы так усердно размещаем на наших ресурсах. Посмотрите на биллинговая консоль для вашего аккаунта. Вы будете сброшены на приборной панели, а некоторые сводные данные для вашей учетной записи будут видны.
Если вы еще не сделали это уже, нажмите ссылку «Explorer» из левой панели навигации и включите его для своей учетной записи. Это удобный инструмент, который позволяет выполнять несколько простых запросов и сообщать о ваших ресурсах и их расходах.
Затем нажмите на ссылку «Теги распределения затрат», также на левой панели навигации. На вершине вы можете увидеть, что есть некоторые метки распределения затрат, которые AWS может генерировать на свой собственный, продолжать кнопку «Activate», чтобы включить. Ниже на странице будет список всех тегов, которые мы определили (а также любые теги, которые вы уже настроили). Вы можете выбрать, какие теги вы хотите сделать доступным в проводнике затрат Но мой совет просто нажать на самый верхний флажок и сделать их все активными. Вы никогда не знаете, когда тег пригодится! Нажмите кнопку «Активировать» и подтвердите, что да, вы хотите, чтобы теги были «активными».
Теперь Щелкните обратно в ссылку «Explorer» и нажмите «Проводник запуска запуска». Если вы только что активировали Explorer стоимостью, вам, вероятно, придется ждать до завтра; Продолжайте в виду и попробуйте вернуться в этот раздел.
Если проводник затрат имеет данные об руке, то вам будет представлен другой приборной панели, пытающейся обобщить ваши расходы на Amazon. Нажмите на значок увеличительного стекла на левой панели навигации и выберите «Стоимость и использование», построитель отчетов появится с вашими последними шестью месяцами расходов. Нажмите на «Последние 6 месяцев» и выберите «1 м» из «исторического» раздела внизу, это покажет ваш последний месяц расходов.
С правой стороны находится список фильтров, и именно здесь теги будут пригодны. Нажмите на ссылку «тег» в списке фильтров, появится список ваших тегов; Нажмите «Проект» и список всех ваших значений для тега «Проект» будет перечислен. В этом уроке мы выкладываем «CF-Tuctorial» в теги «Проекта», установите флажок для «CF-Tuctorial», а затем нажмите кнопку «Применить фильтры», чтобы обновить отчет.
На сегодняшний день вы смотрите, скорее всего, очень тусклый отчет, потому что мы использовали недорогие экземпляры свободных уровней. Но, по-прежнему, то, что у нас есть, — это отчет только в ресурсах, которые принадлежат этому проекту. Если вы должны были разместить тег «Клиент» в своих шаблонах, вы можете сообщить об всей стоимости клиента (возможно, вы можете использовать это, чтобы выяснить, как законопронит), и вы можете сломать затраты клиента по конкретным проектам. Это ценный инструмент и, безусловно, стоит привести некоторое время в изучении ваших вариантов.
Установите сигналы тревоги на использование экземпляра
Я думаю об этом, связанный с нашими целями отчетности: мы хотели бы установить некоторые тревоги, которые контролируют данные, которые мы отправляем в CloudWatch, чтобы сообщить, если наши серверы начинают выходить из рельсов. Мы установим сигналы тревоги, когда использование CPU становится высоким или если мы начнем выходить из дискового пространства Но держу пари, вы можете думать о многих других вещах, которые вы хотели бы контролировать.
Мы собираемся использовать Простое уведомление об обслуживании предупредить нас, когда сигнал тревоги попадет. То, как это будет работать, так это то, что когда CloudWatch видит триггер тревоги, он отправит сообщение на SNS «Тему». Это будет наша обязанность войти в консоль SNS и добавим себя в список уведомлений (по электронной почте или текстовому сообщению), мы не собираемся заполнить список подписчиков.
TutorialAlarmTopic: Type: AWS::SNS::Topic Properties: TopicName: TutorialAlarms
Мы используем Тема Ресурс для создания нашей новой тревоги целевой теме. С созданной темой SNS, мы теперь можем создать нашу первую тревогу.
TutorialDatabaseCPUAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: Database Server CPU Usage High AlarmActions: - !Ref TutorialAlarmTopic MetricName: CPUUtilization Namespace: AWS/EC2 Statistic: Average Period: 60 EvaluationPeriods: 3 Threshold: 89 ComparisonOperator: GreaterThanThreshold Dimensions: - Name: InstanceId Value: !Ref TutorialDatabaseServer
С Тревоги Ресурс. Мы создаем аварийный сигнал для использования CPU на сервере базы данных, если сервер использует более 89% процессора в течение более 3 минут, то сигнал тревоги будет вызвать и отправить сообщение на нашу тему SNS.
TutorialDatabaseDiskAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: Database Server Disk Usage High AlarmActions: - !Ref TutorialAlarmTopic MetricName: disk_used_percent Namespace: CWAgent Statistic: Average Period: 60 EvaluationPeriods: 3 Threshold: 89 ComparisonOperator: GreaterThanThreshold Dimensions: - Name: InstanceId Value: !Ref TutorialDatabaseServer - Name: ImageId Value: !Ref ImageId - Name: InstanceType Value: !Ref InstanceType - Name: path Value: / - Name: device Value: !Sub ${RootDevice}1 - Name: fstype Value: !Ref RootFsType
Этот следующий сигнал тревоги предназначен для объема диска, используемого сервером базы данных, здесь мы устанавливаем тревогу для запуска, если используется более 89% диска. Этот также будет дождаться, пока диск будет в этом состоянии за 3 минуты, прежде чем вызвать тревогу.
Предоставление этой тревоги немного больше работы, вы можете видеть, что нам пришлось добавить несколько Размеры
Чтобы получить настройку тревоги. Это потому, что когда агент CloudWatch сообщает об этих данных, это ссылается на все эти размеры, и нам нужно сопоставить их все, чтобы иметь рабочую тревогу. Если бы мы покинули один из них, то сигнал тревоги не будет соответствовать никаких данных и никогда не запускает.
Единственное левое немного — это резервные задания, но мы оставим это для части 3. ;-)
Поздравляем о проведении своего пути через весь этот материал! Хотя может быть довольно сухое чтение, вы действительно можете получить много шаблонов по строительству пробега для проектов, которые вы знаете, вы будете развертываться снова и снова.
- Часть 3: Резервное копирование рабочих мест и упаковка
Оригинал: «https://dev.to/cmiles74/provision-programmatically-with-cloudformation-finally-some-instances-2dha»