Amazon ECRでAmazon EventBridgeのサポートが追加されましたっ!!

2019.11.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、森です。

ECRへのプッシュ/削除時のアクションをトリガーできるように、Amazon EventBridgeのサポートが追加されるようになりました。

EventBridge Support in Amazon Elastic Container Registry

この追加機能により複雑なワークフローを実現することもできるようになる と説明されています。

イメージがプッシュされたときに継続的な統合、継続的な展開パイプラインをトリガーしたり、イメージが削除されたときにDevOpsチームSlackチャネルにメッセージを投稿したり などです

使ってみる

イメージのPush、削除をトリガーし、Slackに通知を送ってみようと思います。

Amazon EventBridgeのコンソールに移動し、新しいルールを作成します。

名前と説明 は任意のものを入力します。

パターンを定義の項目で、イベントパターンを選択し、関連する項目を選択していきます。

  • イベント一致パターン: サービスごとの事前定義パターン
  • サービスプロバイダー: AWS
  • サービス名: Elastic Container Registry(ECR)
  • イベントタイプ: ECR Image Action (アクションタイプとしてDELETEとPUSHの両方が含まれています)

イベントバスを選択の項目で、 AWS のデフォルトのイベントバス選択したイベントバスでルールを有効にする をチェックします

ターゲットを選択の項目で、次にイベントの行き先を指定します。

今回はslackに通知するので、SNSでSlackにメッセージ送信する #slack のブログを参考にSNSでSlackにメッセージ送信する機能を作成しておきます。

ターゲットにSNSトピック, トピックには作成済みのトピック名を選択します。

ここまで入力したら作成ボタンを押して作成します。

あとは新しいバージョンのコンテナをECRにプッシュし、イベント通知の確認をします。

サンプルとして、nginxのイメージを使用しています。

PUSH

docker tag nginx:latest <ECRのURL>/cm-mori-sample-repo:latest
docker push <ECRのURL>/cm-mori-sample-repo:latest

ECRにpushされました。 連携先のslackをみてみると、

メッセージが届いています。(成型していないので雑ですがご勘弁を。。。)

アクションタイプはPUSHとなっていることがわかります。 "action-type\":\"PUSH\",

DELETE

ECRのコンソールでイメージを選択して削除してみます。

削除が完了すると、slackにメッセージが届きました。

アクションタイプはDELETEとなっていることがわかります。 "action-type\":\"DELETE\",

ECRのイベントと結びつけて色々なことができるようになりました。 今回試したことはECRのアクションに応じてSNSトピックを実行することでしたが、パイプラインを起動したり、ECSタスクを起動したりといった複雑なこともできそうです。

日々CI/CDの改善を行う人にはかなり良い機能ではないでしょうか?是非とも使いたいですね。

では、またの日を

参考