-
概要 ECS Taskを定期実行したい要件があり、それをただ実行するならEventBridgeからcronのように呼び出すことになる。 しかし、ECS Taskそのものにはリトライ処理が無く、EventBridgeだけだと複数のジョブの処理などに限界があったので、今回はStepFunctionsを検証した。その辺りをざっくりまとめる。 なお、今回はAWSコンソールの作業のみでIaCは検証のため無し。 EventBridgeのリトライ処理について EventBridgeでもリトライ処理はできるが、意図したエラーハンドリングが出来ない可能性がある。 例えば、ECS Taskでアプリが例外を吐いてもリトライされない。 おそらくECS Taskそのものが起動しないなどのエラーだけをリトライ処理できると思われるので、何をトリガーにリトライ処理をしたいかは確認しておく必要がある。 アプリのエラーについては素直にStepFunctionsを使うと良さそう。 下記の記事で詳しく記載されていた。 ちなみに自分の場合、FargateのECS Taskでも同様だったので、EventBridge自体の制約だと思われる。 [AWS] EventBridge Rules による ECS Scheduled Task はエラー時リトライできない 要件 自分で作成したコンテナイメージを使いたい コンテナイメージにコマンドを上書きして、実行させたい(イメージを共通化) リトライ処理したい 定期実行したい コンテナイメージ 今回はシンプルにこんなコードを用意した。 コードの良し悪しはさておき、引数を取って、各関数を実行させられるかの確認。 <?php function main(){ global $argc; global $argv; print("start: run php test function\n"); if ($argc != 2){ print("info: please set argument\n"); return; } $argval = $argv[1]; print($argval()); } function example_1(){ print("result: exmaple 1\n"); } function example_2(){ print("Created
Mon, 20 Feb 2023 13:53:37 +0000 -
概要 AmazonECR(Amazon Elastic Container Registry)の使い方メモ。 公式ドキュメント パブリックなイメージだったら、hub.docker.comで良いと思うが、会社で使うイメージはプライベートなリポジトリが必要である。 Dockerが公式に出しているregistryコンテナを使えば、プライベートリポジトリを管理できるようだが、AWSではECRというマネージドのサービスがある。 今回はECRにリポジトリを作成して、イメージをPushする所まで。 リポジトリ作成 まず、AWSでECSの画面を表示し、リポジトリを選択。 次にリポジトリを作成を選択。 任意のリポジトリ名を設定する。role単位(example-app,example-phpなど)で作成。 これで作成完了。超簡単。画面下にイメージプッシュの手順が記載されている。 イメージのプッシュ まずはECRへログインする。もちろん、自分のアカウントがECRにアクセスできる権限でないと駄目。 $(aws ecr --profile ここにプロファイル名 get-login --no-include-email --region ap-northeast-1) Login Succeeded 手順だとprofile名抜けているので、初めてだとアクセスできなくて詰まるかもしれない。 自分で作成したDockerfileをビルドする。 docker build -t inamuu-test01 . Sending build context to Docker daemon 7.68kB Step 1/5 : From nginx:latest ---> 71c43202b8ac Step 2/5 : MAINTAINER inamuu ---> Using cache ---> 6ad1e68f5596 Step 3/5 : COPY ./var/www/html /var/www/html ---> Using cache ---> 8fa5219e2db1 Step 4/5 : COPY .docker Created
Tue, 04 Sep 2018 14:23:25 +0000