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 aaa@hogehoge.com 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
マルチアカウントで構成管理情報の自動収集を行う(A…
マルチアカウントで構成管理情報の自動収集を行う(AWS)
2021/06/14
-
2
Azureのコスト情報をTeamsで通知する方法
Azureのコスト情報をTeamsで通知する方法
2023/06/14
-
3
IAMを理解する第1回(機能編)
IAMを理解する第1回(機能編)
2020/01/30
-
4
ECS on Fargateの良いところ ~性能・…
ECS on Fargateの良いところ ~性能・拡張性~
2022/03/28
-
5
DevOps、その遙かなる道程(第2回)
DevOps、その遙かなる道程(第2回)
2019/08/30
-
-
ARCHIVE
アーカイブ
-
- July 2024 (1)
- January 2024 (1)
- December 2023 (2)
- 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)