Статьи
Обучающие материалы
Интерактивные руководства
Развертывание оповещений AWS CloudWatch с помощью GitHub
![Фото Уоррена Марусяка](https://wac-cdn.atlassian.com/dam/jcr:7509aefb-43e8-401d-90fe-0850cbe6bb13/wmarusiak_headshot%20(1).png?cdnVersion=2022)
Уоррен Марусяк
Старший технический эксперт
Чтобы продемонстрировать, как разрабатывать и развертывать приложения, а также управлять ими с помощью Jira Software и различных подключенных инструментов, наша команда создала ImageLabeller — простое демонстрационное приложение на платформе AWS, которое с помощью машинного обучения наносит метки на изображения.
На этой странице рассказывается, как настроить предварительно обученную модель AWS SageMaker, необходимую для успешной обработки изображений в ImageLabeller. Прежде чем начать, рекомендуем ознакомиться со страницами об архитектуре ImageLabeller и развертывании ImageLabeller с помощью GitHub в качестве контекста.
Добавление репозитория оповещений для интеграции с Opsgenie
Перейдите в Jira и создайте задачу для добавления репозитория оповещений AWS CloudWatch в GitHub. В этом примере идентификатор задачи Jira — IM-10.
![снимок экрана: задача Jira по добавлению репозитория GitHub](https://wac-cdn.atlassian.com/dam/jcr:f5497e4c-8c42-4291-90f4-35fc3ddb13ca/screenshot_jsw_issueaddgithubalarmsrepository.png?cdnVersion=2022)
Перейдите на GitHub и нажмите New (Создать). Выберите подходящую организацию в поле Owner (Владелец). Нажмите Create repository (Создать репозиторий), чтобы продолжить.
![снимок экрана: создание репозитория оповещений в GitHub](https://wac-cdn.atlassian.com/dam/jcr:fdf36856-a64e-4b1d-baa2-65e1f49e85b7/screenshot_github_createalarmsrepository.png?cdnVersion=2022)
Нажмите Settings (Настройки), а затем — Secrets (Секреты). Добавьте идентификатор ключа доступа AWS как AWS_ACCESS_KEY_ID, а секретный ключ доступа AWS — как AWS_SECRET_ACCESS_KEY.
![снимок экрана: добавление ключей доступа AWS в GitHub](https://wac-cdn.atlassian.com/dam/jcr:862e11d1-ef4e-4e21-92e9-5916c67f115a/screenshot_github_addawsaccesskeyalarmsrepo.png?cdnVersion=2022)
В терминале перейдите в репозиторий CloudWatchAlarms и выполните следующие команды для отправки кода AWS CloudFormation на GitHub.
git add --all
git commit -m "IM-10 add CloudWatchAlarms to github"
git remote add origin git@github.com:PmmQuickStartGuides01/CloudWatchAlarms.git
git branch -m mainline
git push -u origin mainline
Файл шаблонов оповещений template.yml
Description: 'A description'
Resources:
OpsGenieSNS:
Type: AWS::SNS::Topic
Properties:
DisplayName: 'Opsgenie'
Subscription:
- Endpoint: 'https://api.opsgenie.com/v1/json/cloudwatch?apiKey=a4449509-6998-4d55-841d-2e6b363520c7'
Protocol: 'HTTPS'
TopicName: 'Opsgenie'
SubmitImageLambdaAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmActions:
- !Ref 'OpsGenieSNS'
AlarmDescription: 'SubmitImage Too Many Invocations'
ComparisonOperator: 'GreaterThanThreshold'
Dimensions:
- Name: FunctionName
Value: !ImportValue 'SubmitImageFunctionName'
EvaluationPeriods: 1
MetricName: 'Invocations'
Namespace: 'AWS/Lambda'
Period: 60
Statistic: 'Sum'
Threshold: 10
Задайте скопированный из Opsgenie URL-адрес конечной точки в качестве значения параметра endpoint в разделе subscription для темы SNS. SubmitImageLambdaAlarm отслеживает один показатель от SubmitImage AWS Lambda. Если число вызовов превышает 10 в минуту, срабатывает оповещение.
Действия GitHub для развертывания в AWS
Перейдите в репозиторий CloudWatchAlarms в терминале, создайте ветку с именем, соответствующим идентификатору задачи Jira, и создайте папку .github/workflows.
git checkout -b IM-10
mkdir -p .github/workflows && cd .github/workflows
Создайте файл deploy-test-staging.yml со следующим кодом YAML. В нем задается рабочий процесс развертывания для тестовых и промежуточных сред, который выполняется при отправке в ветки, отличные от основной.
name: deploy-cloudwatchalarms-test-staging
on:
push:
branches:
- '*'
- '!mainline'
jobs:
deploy-us-west-1:
runs-on: ubuntu-latest
outputs:
env-name: ${{ steps.env-name.outputs.environment }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure AWS credentials
id: creds
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: "us-west-1"
- name: Deploy to AWS CloudFormation
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: OpenDevOpsAlarms
template: template.yml
no-fail-on-empty-changeset: "1"
deploy-us-east-2:
runs-on: ubuntu-latest
needs: deploy-us-west-1
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure AWS credentials
id: creds
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: "us-east-2"
- name: Deploy to AWS CloudFormation
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: OpenDevOpsAlarms
template: template.yml
no-fail-on-empty-changeset: "1"
Затем создайте файл deploy-prod.yml со следующим кодом YAML. В нем задается рабочий процесс развертывания для рабочих сред, который выполняется, когда запрос pull объединяет изменения с основной веткой.
name: deploy-cloudwatchalarms-prod
on:
pull_request:
branches:
- mainline
jobs:
deploy-us-west-2:
runs-on: ubuntu-latest
outputs:
env-name: ${{ steps.env-name.outputs.environment }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure AWS credentials
id: creds
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: "us-west-2"
- name: Deploy to AWS CloudFormation
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: OpenDevOpsAlarms
template: template.yml
no-fail-on-empty-changeset: "1"
deploy-ca-central-1:
runs-on: ubuntu-latest
needs: deploy-us-west-2
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure AWS credentials
id: creds
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: "ca-central-1"
- name: Deploy to AWS CloudFormation
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: OpenDevOpsAlarms
template: template.yml
no-fail-on-empty-changeset: "1"
deploy-us-east-1:
runs-on: ubuntu-latest
needs: deploy-ca-central-1
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure AWS credentials
id: creds
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: "us-east-1"
- name: Deploy to AWS CloudFormation
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: OpenDevOpsAlarms
template: template.yml
no-fail-on-empty-changeset: "1"
Отправка в функциональную ветку
В командной строке выполните следующие запросы, чтобы отправить код в ветку IM-10 вашего репозитория CloudWatchAlarms.
git add --all
git commit -m "IM-10 add github actions to CloudWatchAlarms"
git push -u origin IM-10
Нажмите Actions (Действия), чтобы увидеть запущенные рабочие процессы.
![снимок экрана: запущенные рабочие процессы в GitHub](https://wac-cdn.atlassian.com/dam/jcr:ba53984a-1acd-48d1-8220-bb2d49f201bd/screenshot_github_seerunningworkflowsalarmsrepo.png?cdnVersion=2022)
Создание запроса pull
Нажмите Create pull request (Создать запрос pull), чтобы объединить его с основной веткой.
![снимок экрана: создание запроса pull в GitHub](https://wac-cdn.atlassian.com/dam/jcr:82c762bf-f4a5-4361-b528-5ba687b995a6/screenshot_github_createpullrequestalarmsrepo.png?cdnVersion=2022)
Нажмите Actions (Действия), чтобы проследить за развертыванием в рабочую среду.
![снимок экрана: развертывание в рабочую среду в GitHub](https://wac-cdn.atlassian.com/dam/jcr:743455d2-8514-433e-ba57-d9ff3376fe3a/screenshot_github_monitorproductionalarmsrepo.png?cdnVersion=2022)
Тестирование оповещения
Создайте оповещение, вызвав срабатывание только что настроенного оповещения AWS CloudWatch или нажав кнопку Create alert (Создать оповещение).
![снимок экрана: создание оповещения в Opsgenie](https://wac-cdn.atlassian.com/dam/jcr:bf0b4621-78c9-4eff-8393-e60a6e84cb4e/screenshot_opsgenie_testgithubalarmsrepo.png?cdnVersion=2022)
Проверьте, появилось ли уведомление в Slack.
![снимок экрана: уведомление Slack в Opsgenie](https://wac-cdn.atlassian.com/dam/jcr:e3e5423a-bc3d-442d-b804-fcc88788e731/screenshot_opsgenie_slackintegrationnotificationgithub.png?cdnVersion=2022)
Браво! Вам удалось настроить ImageLabeller.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.
![Рисунок: DevOps](https://wac-cdn.atlassian.com/dam/jcr:bd9d8b2c-ca36-444f-8595-719cb1990e64/Devops-community.png?cdnVersion=2022)
Сообщество DevOps
![Рисунок: DevOps](https://wac-cdn.atlassian.com/dam/jcr:297108ea-d232-4368-af51-b53af230c4fe/Simulation-workshop.png?cdnVersion=2022)
Образовательные программы DevOps
![Рисунок: карта](https://wac-cdn.atlassian.com/dam/jcr:25f6330a-4191-408f-a4e5-2e24bfba67b4/Maturity-model.png?cdnVersion=2022)