Help us understand the problem. What is going on with this article?

ECRからのCodePipelineが走らなくなってた話

ECRへのプッシュをトリガーにpipeline回したいけど、なんでかわからん、って話があって、下記の手順で検証してみます。

https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/create-cwe-ecr-source-console.html

  1. ECRにレポジトリ作る
  2. CodePipelineのSourseをECRにする
  3. (その他も設定)
  4. ECRにイメージをpush
  5. Pipeline回らない

ほー。確かに。

検証内容

Source

スクリーンショット 2019-11-30 0.06.46.png

ECR push

$ $(aws ecr get-login --no-include-email --region ap-northeast-1)
$ docker build -t otafuku .
$ docker tag otafuku:latest 1234567890.dkr.ecr.ap-northeast-1.amazonaws.com/otafuku:latest
$ docker push 1234567890.dkr.ecr.ap-northeast-1.amazonaws.com/otafuku:latest

スクリーンショット 2019-11-30 0.12.54.png

pushできてる

回らない

スクリーンショット 2019-11-30 0.15.19.png

(※失敗してるのは単にイメージpush前だったからで、今回はpushしても回っていないという事象)

なぜだろう?

どうやらECRにpushされた時にはCloudTrailで PushImage ってイベントがキャッチされてCloudWatch Ruleからpipelineがキックされるらしい。

push -> CloudTrail -> cloudWatchRule -> pipeline

Ruleはcodepipelineを作った時に作成されてる。今回の場合はこんな感じ。

スクリーンショット 2019-11-30 0.20.43.png

試しにターゲットにSNSを追加してみたりしつつ検証してみる

スクリーンショット 2019-11-30 0.22.24.png

しかし・・

・・う、動かない。メールも飛ばない

そして判明?!

CloudWatch Ruleのカスタムイベントパターンの構築で、ECRソースのECR Image Actionってのを選びつつ、自分で項目埋めてみたところ機能しました。(判明まで半日かかった。。)

スクリーンショット 2019-11-30 0.26.15.png

スクリーンショット 2019-11-30 0.32.03.png

解決!

ちなみにイベントはこんな感じで飛んでくるらしい

{
  "account": "123456789012",
  "detail": {
    "action-type": "PUSH",
    "image-digest": "sha256:f98d67af8e53a536502bfc600de3266556b06ed635a32d60aa7a5fe6d7e609d7",
    "image-tag": "latest",
    "repository-name": "ubuntu",
    "result": "success"
  },
  "detail-type": "ECR Image Action",
  "id": "4f5ec4d5-4de4-7aad-a046-56d5cfe1df0e",
  "region": "us-east-1",
  "resources": [],
  "source": "aws.ecr",
  "time": "2019-08-06T00:58:09Z",
  "version": "0"
}

それをこんな感じで拾う

{
  "source": [
    "aws.ecr"
  ],
  "detail-type": [
    "ECR Image Action"
  ],
  "detail": {
    "action-type": [
      "PUSH"
    ],
    "image-tag": [
      "latest"
    ],
    "repository-name": [
        "ubuntu"
    ]
  }
} 

余談

これ、関係あるんじゃないかなぁ。

Amazon Elastic Container Registry での EventBridge サポート

なんか今回に絡むあたりがアップデートされてる。codepipeline構築時に作られるイベントに影響でちゃってるとか??

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away