使用 Bitbucket 部署 AWS CloudWatch 警报
![Warren Marusiak 头像](https://wac-cdn.atlassian.com/dam/jcr:7509aefb-43e8-401d-90fe-0850cbe6bb13/wmarusiak_headshot%20(1).png?cdnVersion=2022)
Warren Marusiak
高级技术传播者
为了演示如何使用 Jira Software 和各种互联工具开发、部署和管理应用,我们的团队创建了 ImageLabeller,这是一款基于 AWS 构建的简单演示应用,它使用机器学习将标签应用于图像。
本页面介绍如何使用 Opsgenie 监控 ImageLabeller。在您开始之前,我们建议阅读 ImageLabeller 架构页面,以了解背景信息。
为 Opsgenie 集成添加警报存储库
转到 Jira 并创建一个新 Jira 事务,将 AWS CloudWatch 警报存储库添加到 Bitbucket。在本例中,Jira 事务 ID 为 IM-9。
![Opsgenie 添加警报屏幕截图](https://wac-cdn.atlassian.com/dam/jcr:c75dad73-8773-4cae-9182-5206f7e50abc/jsw_issueaddawsalarmsbitbucket.png?cdnVersion=2022)
转到 Bitbucket,并单击“创建”,然后单击“存储库”。
![存储库屏幕截图](https://wac-cdn.atlassian.com/dam/jcr:769bcd52-1077-4816-8574-d5ab7e86ab18/bbc_createrepository1.png?cdnVersion=2022)
选择相应“工作区”和“项目”。将“默认分支名称”设置为主线。单击“创建存储库”以继续。
![创建存储库屏幕截图](https://wac-cdn.atlassian.com/dam/jcr:e0007eb5-6c21-4c50-8106-4045ed67887a/bbc_createrepositorycloudwatchalarms.png?cdnVersion=2022)
在您的终端中转到 CloudWatchAlarms 存储库,运行以下命令,将您的 AWS CloudFormation 模板代码推送到 Bitbucket。
git add --all
git commit -m "IM-9 add CloudWatchAlarms to Bitbucket"
git remote add origin git@bitbucket.org: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
将 SNS 主题订阅端点设置为您从 Opsgenie 复制的端点 URL。SubmitImageLambdaAlarm 监控 submitImage AWS Lambda 发出的单个指标。如果一分钟内调用次数超过 10 次,则会发出警报。
用于部署到 AWS 的 bitbucket-pipelines.yml
在您的终端中转到 CloudWatchAlarms 存储库,创建一个以您的 Jira 事务 ID 命名的分支。
definitions:
steps:
- step: &deploy-test-usw1
name: Deploy Test us-west-1
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-west-1'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-staging-use2
name: Deploy Staging us-east-2
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-east-2'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-production-usw2
name: Deploy Production us-west-2
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-west-2'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-production-use1
name: Deploy Proudction us-east-1
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-east-1'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-production-cac1
name: Deploy Production ca-central-1
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'ca-central-1'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
pipelines:
default:
- step:
<<: *deploy-test-usw1
deployment: Test us-west-1
- step:
<<: *deploy-staging-use2
deployment: Staging us-east-2
branches:
mainline:
- step:
<<: *deploy-production-usw2
deployment: Production us-west-2
- step:
<<: *deploy-production-use1
deployment: Production us-east-1
- step:
<<: *deploy-production-cac1
deployment: Production ca-central-1
请记住,在管道运行之前,您需要启用管道、设置部署环境并将 AWS 访问密钥添加到存储库。
推送到功能分支
从命令行运行以下命令,将您的变更推送到 CloudWatchAlarms 存储库的 IM-9 分支。在提交消息中包含 Jira 事务 ID 和分支名称,以使 Jira Bitbucket 集成能够跟踪您的项目中正在发生的情况。
git add --all
git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms"
git push -u origin IM-9
单击“管道”,然后单击“IM-9”以查看正在运行的管道。
![IM-9 运行管道屏幕截图](https://wac-cdn.atlassian.com/dam/jcr:f8dcbbc8-b7fe-4e72-9684-b759edbb2fac/bbc_seepipelinecloudwatchalarms.png?cdnVersion=2022)
创建拉取请求
如需创建拉取请求,请单击“拉取请求”,然后单击“创建拉取请求”。完成拉取请求,并单击“管道”以查看生产部署。
![创建拉取请求屏幕截图](https://wac-cdn.atlassian.com/dam/jcr:f251fcf2-c0a2-4059-b16b-4c88db3b809e/bbc_createpullrequestcloudwatchalarms.png?cdnVersion=2022)
测试警报
通过触发您刚才设置的 AWS CloudWatch 提醒或单击“创建提醒”来生成提醒。
![观看警报屏幕截图](https://wac-cdn.atlassian.com/dam/jcr:f06384db-c4a8-493d-813d-f9fe26d5fa56/opsgenie_testawscloudwatchalarms.png?cdnVersion=2022)
漂亮!您做到了。ImageLabeller 现已启动并运行。
分享这篇文章
下一主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。
![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)