AWS CloudWatch アラームを Bitbucket でデプロイする

当社のチームは Jira Software とさまざまな接続ツールを使用してアプリケーションを開発、デプロイ、管理する方法を説明するために、機械学習を使用してイメージにラベルを添付する AWS 上に構築されたシンプルなデモ アプリケーションである ImageLabeller を作成しました。

このページでは、Opsgenie で ImageLabeller を監視する方法について説明します。はじめに、背景を知るために ImageLabeller アーキテクチャ ページと ImageLabeller を Bitbucket でデプロイするページを読むことをお勧めします。

Opsgenie 統合用のアラーム リポジトリを追加する

Jira に移動して、AWS CloudWatch アラーム リポジトリを Bitbucket に追加するための新しい Jira 課題を作成します。この例では、Jira 課題 ID は IM-9 です。

Bitbucket にアラーム リポジトリを追加するための Jira 課題のスクリーンショット

Bitbucket に移動して [作成]、[リポジトリ] の順にクリックします。

Bitbucket で CloudWatch アラーム リポジトリを作成するスクリーンショット

適切なワークスペースプロジェクトを選択します。[デフォルトのブランチ名] を mainline に設定します。[リポジトリを作成] をクリックして続行します。

Bitbucket のリポジトリ作成モーダルのスクリーンショット

ターミナルの CloudWatchAlarms リポジトリに移動して以下を実行し、AWS CloudFormation テンプレート コードを Bitbucket にプッシュします。

1 2 3 4 5 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

Alarms template.yml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 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 より多い場合は、1 分でアラームが鳴ります。

AWS にデプロイする bitbucket-pipelines.yml

ターミナルの CloudWatchAlarms リポジトリに移動して、Jira 課題 ID にちなんだ名前のブランチを作成します。

1 git checkout -b IM-9

次の yaml で bitbucket-pipelines.yml ファイルを作成します。これによって、テスト、ステージング、本番の各環境の Bitbucket パイプラインが定義されます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 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 統合で追跡できるようにします。

1 2 3 git add --all git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms" git push -u origin IM-9

[Pipelines]、[IM-9] の順にクリックして、実行中のパイプラインを確認します。

アラームを追加する Bitbucket パイプラインを実行しているスクリーンショット

プル リクエストを作成する

プル リクエストを作成するには [プル リクエスト]、[プル リクエストを作成] の順にクリックします。プル リクエストが終了したら [Pipelines] をクリックして本番環境のデプロイを確認します。

アラームを追加する Bitbucket プル リクエストのスクリーンショット

アラームのテスト

先ほど設定した AWS CloudWatch アラームをトリガーするか、[アラートを作成] をクリックしてアラートを生成します。

Opsgenie の AWS CloudWatch アラームのテストのスクリーンショット

 

おめでとうございます、これで完了です。ImageLabeller が稼動しています。

 

最終更新日 2021年09月24日)
次でキャッシュ 1:35 AM on Oct 19, 2021 |

その他のヘルプ