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?

ECSタスクはSecrets Managerの値を毎回取得する?それとも起動時のみ?実際に検証してみた

Last updated at Posted at 2025-07-13

はじめに

ECSのタスク定義では、Secrets Managerで格納しているシークレット値を取得して環境変数に設定することができます。
このタスク定義をもとにECSタスクを起動する場合、タスクコンテナの内部では環境変数がどのような形式で保持されるのか気になったので調査してみました。
考えられる選択肢は以下の2つで、どちらの挙動になるかを検証します。

  1. シークレットの値が取り出された状態で設定されている
  2. シークレットのARNが設定されており、参照のたびにSecrets Managerから値を取得する

結論

# env
KEY=test

シークレット値が取り出された状態で設定されていました。

検証

構築成果物

検証のために作成したTerraformコードを以下に公開しています。
https://github.com/rindo-610/poc-secretsmanager-ecs-env

実行環境

  • macOS 14.4.1
  • Terraform v1.12.2
  • aws-cli/2.27.50

併せて、Session Manager Plugin がインストールされている必要があります(後述する ECS Exec を使用するため)。
下記コマンドで確認できます。インストールされていない場合はこちらに従ってインストールしてください。

$ session-manager-plugin

The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.

構築内容を簡単に説明すると、ECSクラスター・タスク定義・サービス、Secrets Manager、必要なVPCやIAMをTerraformで定義しています。
Secrets Managerのシークレットは、プレーンテキストでtestと設定しています。
タスク定義の環境変数KEYには、上記シークレットのARNをvalueFromとして設定しており、このシークレット値がタスクコンテナ内でどのように設定されているかを確認することが今回のゴールです。

コンテナに接続

Fargateをタスクに用いる場合、コンテナ内に接続するためにはECS Execを有効にしてからCLIでアクセスする必要があります。
今回、ECS Execの有効化はTerraformで行っています。

resource "aws_ecs_service" "main" {
  (中略)
  enable_execute_command = true # ECS Execを有効化
}

以下のコマンドを実行し、コンテナ内に接続します。

$ aws ecs execute-command --cluster [クラスター名] --task [タスクID] --container [コンテナ名] --region [リージョン名] --interactive --command "/bin/sh"

The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.


Starting session with SessionId: ecs-execute-command-xxxxxxxxxxxxxxxxxxxxxxxxxx
# 

コンテナ内に接続後、envコマンドにより環境変数を確認します。

# env
(中略)
KEY=test

シークレット値testが取り出された状態で設定されているため、参照するたびにSecrets Managerからシークレット値を取りにいっているのではなく、タスク起動時に一度シークレット値を取得していることがわかりました。

おわりに

直感的にはタスク起動時に取得したシークレット値をコンテナ内に保持しつづけるだろうと思っていたので、それを実際に検証して確認できてよかったです。
もし参照のたびにSecrets Managerから値を取得していたとしたら、ECSタスクが頻繁にAPIリクエストを行うことになり、リクエスト回数による料金がかさんでしまうと思ったので、今回の検証結果に少し安心しました。

参考

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?