Traffine I/O

日本語

2022-12-09

ECSにおけるIAMロール

ECSにおける3つのIAMロール

ECSフレームワーク内では、コンテナの動作方法を決定する3つの主要なIAMロールが存在します。これらの各ロールはそれぞれ独自の目的を果たし、コンテナのライフサイクルの異なる段階で使用されます。

コンテナインスタンスIAMロール

非Fargateのコンテキストでは、このIAMロールはコンテナの実行をサポートするEC2インスタンスに割り当てられます。ECSクラスタを作成する際に決定されます。コンテナインスタンスIAMロールにより、基礎となるEC2インスタンスは他のAWSサービスにAPI呼び出しを行うことができます。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html

タスク実行ロール

タスク実行ロールは、ECSが他のサービスに呼び出しを行い、アプリケーションのリソースを管理するためのIAMロールです。このロールはコンテナプロセス自体ではなく、ECSエージェントによって使用されます。これにより、ECRからコンテナイメージを取得したり、CloudWatch Logsストリームを作成および管理したり、Secret ManagerやSSMパラメータストアから値を取得したりするなど、さまざまな操作が可能になります。なお、このロールの範囲は、起動タイプがEC2またはFargateによって異なります。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html

タスクロール

タスクロールは、ECS上で実行されるコンテナ化されたアプリケーションによって使用される別のIAMロールです。このロールは、S3上のファイル操作やDynamoDBからのデータの読み書きなど、他のAWSサービスとの対話が必要な場合によく使用されます。タスク実行ロールとは異なり、タスクロールの動作は起動タイプによって変化しません。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html

起動タイプに基づく動作の違い

ECSのIAMロールの動作は、選択した起動タイプ(EC2またはFargate)によって異なる場合があります。

起動タイプ: EC2

  • コンテナインスタンスIAMロール
    EC2起動タイプの文脈では、コンテナインスタンスIAMロールは主に、タスクの開始時にECRからイメージを取得し、コンテナログをCloudWatchLogsにエクスポートするための機能をサポートします。

  • タスク実行ロール
    EC2の場合、タスク実行ロールはプライベートレジストリの認証やシークレットの取得などの機能をカバーしています。Secrets ManagerやSSMパラメータストアから機密データを取得し、それらを環境変数として設定することができます。

  • タスクロール
    タスクロールは、コンテナ内で実行されるアプリケーションから開始される全てのAWS API呼び出しを実行するために使用されます。これには、S3上のファイル操作やDynamoDBからのデータの読み書きなどの操作が含まれます。

起動タイプ: Fargate

  • コンテナインスタンスIAMロール
    Fargate起動タイプでは、コンテナインスタンスIAMロールの指定はありません。

  • タスク実行ロール
    Fargateの場合、タスク実行ロールは広範な責任を持ち、通常はEC2起動タイプの場合にコンテナインスタンスIAMロールが処理する領域をカバーします。これには、タスクの開始時にECRからイメージを取得し、コンテナログをCloudWatchLogsにエクスポートする機能、プライベートレジストリの認証、およびシークレットの取得が含まれます。

  • タスクロール
    EC2起動タイプと同様に、Fargate起動タイプの場合も、タスクロールはコンテナ内で実行されるアプリケーションから開始される全てのAWS API呼び出しを実行するために使用されます。

Fargateのタスク実行ロール

Fargateのサーバーレスアーキテクチャは、基礎となるEC2インスタンスを直接管理することを許可しません。通常はEC2起動タイプのコンテナインスタンスIAMロールに割り当てられる責任を、Fargateのコンテキストではタスク実行ロールに移しているということになります。

参考

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!