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

AWS Fargate タスク定義にblocking設定を確認してみた

Last updated at Posted at 2025-05-17

はじめに

Fargateのblockingモードをタスクごとに制御できないか記事にしました。
本記事は2025年5月17時点の記事となります。

手順

詳細に説明されていたため、以下の記事を参考にしました。
https://dev.classmethod.jp/articles/amazon-ecs-set-default-log-driver-blocking-mode/

現在のECSのdefaultLogDriverModeを確認したところ、デフォルトのため「blocking」になっていることを確認しました。

aws ecs list-account-settings --name defaultLogDriverMode --effective-settings
{
    "settings": [
        {
            "name": "defaultLogDriverMode",
            "value": "blocking",
            "principalArn": "arn:aws:iam::AWSアカウント番号:root",
            "type": "user"
        }
    ]
}
[cloudshell-user@ip-10-132-82-52 ~]$ 

タスク定義のmode non-blockingがどこに設定されるか確認した。

現在の仕様では新規でタスク定義を作成すると自動でmode non-blockingが入ります。

image.png

タスク定義のmode non-blockingを誤った文字列で設定して作成してみた

non-brockingで値を設定してタスク定義を作成ボタンを押したらエラーが出力しました。
image.png

誤った値を設定するとエラーが出力されることが分かりました。

The non-brocking mode specified for log configuration options is invalid.
ログ構成オプションに指定された非ブロッキング モードが無効です。

image.png

タスク定義のmode blockingを誤った文字列で設定して作成してみた

image.png

The brocking mode specified for log configuration options is invalid.
ログ構成オプションに指定されたブロッキング モードが無効です

image.png
誤った値を設定するとエラーが出力されることが分かりました。

アカウント設定がblockingですがタスク定義もblockingで設定できるか確認した

問題なくblockingでタスク定義を作成できました。
image.png

            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/test-apache",
                    "mode": "blocking",  ←タスク定義
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "ap-northeast-1",
                    "awslogs-stream-prefix": "ecs"
                },
                "secretOptions": []
            },
            "systemControls": []
        }

補足情報

デプロイタイプ ローリングアップデートでした。
Fargateはサービス更新しても新タスクが正常に実行されるまでは旧タスクは終了しません。

新タスク実行中のエビデンス
image.png

新タスクと新タスクが実行中のエビデンス
image.png

新タスクが正常に実行されたため、旧タスクが停止しました。
image.png

コンテナ内のメタ情報を確認

コンテナに接続設定は以下の記事が大変分かりやすくまとめていました。
ECS Exec
https://qiita.com/okubot55/items/b1fb07b2de08c354275b

以下の記事を参考にしました。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4-fargate.html

blockingモードを確認しようとしましたが、私が使用しているイメージにcurlコマンドが入っていないことが判明
仮に本番環境のタスクの場合はcurlをインストールを気軽にできないためメタ情報取得は諦めます。

# aws ecs execute-command --region ap-northeast-1 --cluster <クラスタ名> --task <タスクID> --container <コンテナ名> --interactive --command "/bin/sh"

# curl ${ECS_CONTAINER_METADATA_URI_V4}
/bin/sh: 7: curl: not found
# 
# 
# wget -qO- $ECS_CONTAINER_METADATA_URI_V4
/bin/sh: 10: wget: not found
# 

タスク定義

image.png
JSONのタブを選択する。

           "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/test-apache",
                    "mode": "non-blocking",  ← non-blockingモードになっている
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "ap-northeast-1",
                    "awslogs-stream-prefix": "ecs"
                },
                "secretOptions": []

まとめ

AWS 公式サイトの引用

blocking2025年6月25日より、Amazon ECSはログ記録よりもタスクの可用性を優先するため、デフォルトのログドライバーモードを から に変更しますnon-blocking。この変更後もこのモードを引き続き使用するにはblocking、次のいずれかを実行してください。
modeコンテナ定義のオプションlogConfigurationを として設定しますblocking。
defaultLogDriverModeアカウント設定を に設定しますblocking。

現在はECSのアカウント設定でデフォルトで「blockingモード」なっており、新規にタスク定義作成で「mode non-blocking」が自動で入ることが分かりました。

2025/6/25からはアカウント設定で「non-blockingモード」になるそうで
各タスク毎にblockingモードにしたい場合は、タスク定義にて「mode blocking」オプションを含める必要があります。

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