column
コラム
[ECS/Fargate/IaC] EventBridgeからECSコンテナに引数を渡す
-
TAG
AWS ECS EventBridge Fargate -
UPDATE
2022/03/28
DockerFileに引数を渡すEvent Bridgeを作成しよう!
こんにちは、クラウドCoEの熊谷です。
javaコマンドにバッチアプリの名称を引数として設定してjavaのバッチアプリを起動するとします。
その場合のDockerfileの記載例、EventBridgeの記載例をご説明します!

Dockerfile
Dockerfile内では変数JOB_NAMEを指定します。
FROM public.ecr.aws/amazoncorretto/amazoncorretto:11 MAINTAINER [email protected] VOLUME /tmp RUN /usr/bin/yum install -y jq python37 curl procps wget tar unzip\ && rm -rf /var/cache/yum/* \ && yum clean all RUN python3 --version RUN curl -kL https://bootstrap.pypa.io/get-pip.py | python3 RUN pip install awscli RUN aws --version COPY hogehoge.jar / COPY start.sh / RUN ["chmod", "+x", "/start.sh"] ENTRYPOINT /start.sh ${JOB_NAME}
javaコマンド実行シェル
Dockerfileで定義した変数を第一引数にjavaコマンドを実行するシェルを定義します。
#!/bin/bash
java -jar ./hogehoge.jar "--job=${1}"
Event Bridge(CloudFormation)
ポイントはcontainerOverridesのJOB_NAMEです。
これで実行したいバッチの本数分Event Bridgeを作成し、Event Bridgeで引数JOB_NAMEを定義することで実行するバッチ処理を定義します。
※ECSクラスタ・IAMロール・VPC等の設定は割愛します。
BT0101EventRule:
Type: AWS::Events::Rule
Properties:
State: ENABLED
# https://docs.aws.amazon.com/eventbridge/34f8171/userguide/eb-create-rule-schedule.html
ScheduleExpression: "rate(10 minutes)"
# UTCなので+9:00で記載する必要があるため、この設定は00:00で起動する意味になります。
#ScheduleExpression: cron(0 9 * * ? *)
Targets:
- Id: bt0101execute
Arn: #ECSClusterのArn
RoleArn:
#EventBridgeがECSタスクを実行する為のIAMロール
EcsParameters:
TaskDefinitionArn: # タスク定義
TaskCount: 1
LaunchType: FARGATE
NetworkConfiguration:
AwsVpcConfiguration:
# PublicSubnetを利用する場合はENABLEDにする必要があります。
AssignPublicIp: DISABLED
SecurityGroups:
- # Security Group
Subnets:
- # コンテナを実行したいサブネット
- # コンテナを実行したいサブネット
Input: !Join [
'',
[
"{",
" \"containerOverrides\": [ ",
" {",
" \"name\": \"bt0101-batch\",",
" \"environment\": [",
" {",
" \"name\": \"JOB_NAME\",",
" \"value\": \"pekepekejob\"",
" }",
" ]",
" }",
" ]",
"}",
]
]
ECSクラスタのタスクスケジュールのタブから確認できます。
引数が設定されていることが分かります。
皆さんのお役に立てれば幸いです!
-
PICK UP
ピックアップ
-
ピックアップコンテンツがありません
-
RANKING
人気の記事
-
-
1
AWS CloudFormationでBlueGr…
AWS CloudFormationでBlueGreenデプロイを実現してみた(…
2019/10/25
-
2
Lambdaのマルチアカウントデプロイ 設計編
Lambdaのマルチアカウントデプロイ 設計編
2021/03/01
-
3
~マルチアカウントのベストプラクティスを手軽に実現…
~マルチアカウントのベストプラクティスを手軽に実現~AWS Control To…
2019/09/27
-
4
DevOps、その遙かなる道程(第2回)
DevOps、その遙かなる道程(第2回)
2019/08/30
-
5
DevOps、その遙かなる道程(第1回)
DevOps、その遙かなる道程(第1回)
2019/08/01
-
-
ARCHIVE
アーカイブ
-
- June 2023 (2)
- May 2023 (1)
- April 2023 (1)
- March 2023 (2)
- February 2023 (2)
- January 2023 (1)
- December 2022 (2)
- October 2022 (2)
- September 2022 (2)
- August 2022 (1)
- June 2022 (1)
- May 2022 (1)



