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

More than 1 year has passed since last update.

EC2にアタッチしたIAMロール vs ECS タスク起動ロール

Last updated at Posted at 2023-04-08

AWSのサービス諸々ありますが、IAMが一番難しいです…。
それぞれのサービス特有の権限とIAMロールの権限が競合するときや、複数のIAMロールが付与された環境にて優先される権限等、枚挙にいとまがありません。
今回は特にECS on EC2 環境での

  • EC2にアタッチしたIAMロール
  • ECS タスク起動ロール

が競合した際、どちらが優先されるのか実験したいと思います。
(ECSタスク起動ロールとタスクロールの違いはここでは解説しません💦)

実験

両者が競合する状況として、EC2で起動しているコンテナのCloudWatchへの書き込みを想定しました。
図のような状況です。

名称未設定ファイル.drawio (3).png

この場合、EC2にアタッチしたIAMロール、ECS タスク起動ロールのどちらが優先されるのでしょうか?

ChatGPTさんによると、どちらかに権限があれば書き込みが出来るそうですが...。

手順

ECRにイメージのpush

hello-worldするDockerfileを用意し、ECRにpushします

Dockerfile
FROM hello-world

スクリーンショット 2023-04-08 9.39.33.png

OK

タスクの追加&ECSクラスタの作成

まずはタスクの作成、イメージURlは先ほどpushしたhello-worldイメージのURlをします。
スクリーンショット 2023-04-08 9.42.27.png

続いてクラスタの作成。
スクリーンショット 2023-04-08 9.53.18.png

ここまではデフォルトの権限(ecsTaskExecutionRole)を用いています。
この権限にはAmazonECSTaskExecutionRolePolicyのポリシーがついているため、CloudWatchへの書き込みができるはずです!

早速hello-worldしてみましょう!٩( ᐛ )و
スクリーンショット 2023-04-08 9.58.10.png

大丈夫そうですね!
ではそれぞれのパターンで調査してみます。

結果

EC2 ECS ログ
あり あり
なし あり
あり なし
なし なし x

ChatGPTさんの言う通りになりました!

なしなしの場合はログ出力がなく、以下のようなエラーメッセージが出てました。
スクリーンショット 2023-04-08 10.23.22.png

詳細
状況の理由 CannotStartContainerError: Error response from daemon: failed to initialize logging driver: failed to create Cloudwatch log stream: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerbo

まとめ

IAMにはAllow、Denyの概念もあり、さらにややこしいです。

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