Amazon ECS Exec設定方法(その3)
前提条件
ECSにリモート接続するために、ECS Execを利用いたします。
事前にECS Fargateの作成が必須になります。
下記の内容をご参考にしてください。
構成図

ECS Exec設定方法(その3)
リモートログインするためにロールの作成いたします。
1. 「IAM」をクリックする。

2. 「ポリシー」をクリックし「ポリシーの作成」をクリックする。

3. 「JSON」をクリックしてポリシーエディタをコピペいたします。
「次へ」をクリックする。
コピペ内容 | 説明(貼り付け) |
---|---|
| 「ポリシーエディタ」に貼り付けてください。 こちらはECS用になります。 |

4. 入力して「ポリシーを作成」をクリックする。
項目 | 説明(入力) |
---|---|
ポリシー名 | お好きなアルファベットで入力してください。 |

5. 再度、「ポリシー作成」をクリックする。
「JSON」をクリックしてポリシーエディタをコピペいたします。
「次へ」をクリックする。
コピペ内容 | 説明(貼り付け) |
---|---|
| 「ポリシーエディタ」に貼り付けてください。 こちらはEC2用になります。 |

7. 入力して「ポリシーを作成」をクリックする。
項目 | 説明(入力) |
---|---|
ポリシー名 | お好きなアルファベットで入力してください。 |

8. ECS用のロールを作成いたします。
「ロール」をクリックし検索からロール名を検索します。
ECS起動時に利用したロールになります。対象の「ロール名」をクリックする。

9. 「許可」をクリックし「許可を追加」をクリックする。
「ポリシーをアタッチ」をクリックする。

10. 検索からさきほど作成したECSログイン(ECS用)にポリシー名を検索する。
検索後、ポリシーが表示されたら対象を選択し。「許可を追加」をクリックする。

11. EC2用のロールを作成いたします。
「ロール」をクリックし「ロールを作成」をクリックする。

12. 選択して「次へ」をクリックする。
項目 | 説明(選択) |
---|---|
信頼されたエンティティを選択 | 「AWS のサービス」を選択してください。 |
サービスまたはユースケース | 「EC2」を選択してください。 |
ユースケース | 「EC2」を選択してください。 |

13. 検索からさきほど作成したEC2用のポリシーを検索する。
対象のポリシーを選択して「次へ」をクリックする。

14. 入力して「ロールを作成」をクリックする。
項目 | 説明(入力) |
---|---|
ロール名 | お好きなアルファベットで入力してください。 |

15. EC2のIAMロールを変更いたします。「EC2」をクリックする。

16. 「インスタンス」をクリックし対象のEC2サーバーを選択する。
「インスタンスの状態」をクリックし「セキュリティ」をクリックし「IAMロールを変更」をクリックする。

17. 選択して「IAM ロールの更新」をクリックする。
項目 | 説明(選択) |
---|---|
IAMロール | さきほど作成したEC2用のロールを選択いたします。 |

18. ECSにロールの追加を行います。
「Elastic Container Service」をクリックする。

19. 「タスク定義」から対象の「タスク定義」をクリックする。

20. 対象の「タスク定義」を選択し「新しいリビジョンの作成」をクリックする。
「新しいリビジョンの作成」をクリックする。

21. 「タスクロール」にロールを追加し「作成」をクリックする。

22. 「デプロイ」をクリックし「サービスを更新」をクリックする。

23. 「新しいデプロイの強制」にチェックマークをいれます。
「更新」をクリックする。

24. 対象のEC2サーバーにログインいたします。
下記のコマンドを実施いたします。(すでにAWS CLIの設定はされていることが前提となります。)
コマンド | 説明 |
---|---|
$ sudo yum install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm | sudoコマンドでsession-manager-pluginをインストールいたします。 |
$ aws ecs list-tasks --cluster d1j --query "taskArns[]" --output text arn:aws:ecs:ap-northeast-3:772296357377:task/d1j/97995d02d550491bbc13dcc98c62024f | ec2-userでコマンドを実施いたします。 clusterをクラスター名になります。arnをコピペいたします。 |
$ aws ecs describe-tasks --cluster d1j \ --tasks arn:aws:ecs:ap-northeast-3:772296357377:task/d1j/97995d02d550491bbc13dcc98c62024f \ --query "tasks[].containers[].name" --output text nginx | arnを利用してタスク名を確認いたします。 今回のタスク名はnginxなります。 |
$ aws ecs describe-tasks \ --cluster d1j \ --tasks arn:aws:ecs:ap-northeast-3:772296357377:task/d1j/97995d02d550491bbc13dcc98c62024f \ --query 'tasks[0].enableExecuteCommand' | クラスタ名、arnを指定して現在リモートが有効化確認いたします。 falseがでますので、現在は有効化されてません。 |
$ aws ecs update-service --cluster d1j --service nginx --enable-execute-command | リモートの有効を行います。 |
$ aws ecs update-service --cluster d1j --service nginx --force-new-deployment | 強制デプロイをいたします。数分間まってください。 |
$ aws ecs list-tasks --cluster d1j --query "taskArns[]" --output text arn:aws:ecs:ap-northeast-3:772296357377:task/d1j/a74e972bb0294b748176430f0ebc41cb | 再度、arnを確認いたします。コピペしてください。 |
$ aws ecs describe-tasks \ --cluster d1j \ --tasks arn:aws:ecs:ap-northeast-3:772296357377:task/d1j/a74e972bb0294b748176430f0ebc41cb \ --query 'tasks[0].enableExecuteCommand' | 再度、リモートが有効になったか確認いたします。 trueになっていれば問題ありません。 |
$ aws ecs execute-command --cluster d1j \ --task arn:aws:ecs:ap-northeast-3:772296357377:task/d1j/a74e972bb0294b748176430f0ebc41cb \ --container nginx \ --interactive \ --command "/bin/bash" | リモート接続をしてみます。 |

以上で「Amazon ECS Exec設定方法(その3)」を完了いたします。