1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python(Django) x AWS 一人アドベントカレンダーAdvent Calendar 2024

Day 8

【AWS】CloudWatchイベントでprefixを利用して最新のjob-definitionバージョンを取得する方法

Posted at

概要

CloudwatchEventsで、AWS Batchのイベントパターンを使用する場合、少し書き方で工夫が必要と思ったので、紹介します。

job-definitionの最新バージョンを取得できる?

AWS Batchのジョブステータスの変更をCloudwatchEventsをイベントパターンで指定する場合、以下のようにすると思います。jobDefinitionに特定のジョブ定義を指定することで、そのジョブのステータス変更のみを検知するようにできます。

{
  "detail-type": ["Batch Job State Change"],
  "source": ["aws.batch"],
  "detail": {
    "jobDefinition": ["arn:aws:batch:ap-northeast-1:012345678901:job-definition/sample-batch-job-definition"],
    "status": ["FAILED"]
  }
}

ただし、この場合、最新バージョンが作成されていても取得されませんでした。

例えば最新バージョンが5の場合、以下のように:5と指定すれば、取得されます。

    "jobDefinition": ["arn:aws:batch:ap-northeast-1:012345678901:job-definition/sample-batch-job-definition:5"],

ただし、これだとジョブ定義側に変更があるたびに、CloudWatchEvents側も変更しなければならないので、面倒だなと思いました。

Prefixを利用して最新バージョンを取得

CloudWatchイベントパターンでジョブ定義の特定のバージョンを指定せずに、最新バージョンを取得できる方法として、prefixを利用した方法があります。

以下のように、jobDefinitionフィールドにprefixを使用してジョブ定義名のみを指定。

{
  "detail-type": ["Batch Job State Change"],
  "source": ["aws.batch"],
  "detail": {
    "jobDefinition": [{
      "prefix": "arn:aws:batch:ap-northeast-1:012345678901:job-definition/sample-batch-job-definition"
    }],
    "status": ["FAILED"]
  }
}

上記のようにすることで、指定のジョブ定義の最新バージョンを取得することができました。こちらの方がメンテナンスを簡素化できて良いですね。ご参考ください。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?