LoginSignup
4
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-11-29

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

  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構築時に作られるイベントに影響でちゃってるとか??

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1