Amazon ECS Anywhere を使用して Amazon WorkSpaces で Amazon ECS タスクを実行する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon ECS Anywhere を使用して Amazon WorkSpaces で Amazon ECS タスクを実行する

作成者:Akash Kumar (AWS)

概要

Amazon Elastic Container Service (Amazon ECS) Anywhere は、Amazon Web Services (AWS) マネージドインフラストラクチャやカスタマーマネージドインフラストラクチャを含むあらゆる環境の Amazon ECS タスクのデプロイをサポートします。これは、クラウド上で稼働し、常に最新の状態に保たれる、完全に AWS マネージド型のコントロールプレーンを使用しながら行うことができます。 

多くの場合、企業はコンテナベースのアプリケーションの開発に Amazon WorkSpaces を使用します。このため、ECS タスクをテストして実行するには、Amazon Elastic Compute Cloud (Amazon EC2) または Amazon ECS クラスターの AWS Fargate が必要でした。Amazon ECS Anywhere を使用することで、Amazon WorkSpaces を外部インスタンスとして ECS クラスターに直接追加できるようになり、タスクを直接実行できるようになりました。これにより、Amazon WorkSpaces のローカルの ECS クラスターを使用してコンテナをテストできるため、開発時間を短縮できます。コンテナアプリケーションのテストに EC2 または Fargate インスタンスを使用するコストを節約することもできます。

このパターンは、Amazon ECS Anywhere を使用して ECS タスクを Amazon WorkSpaces にデプロイする方法を示しています。ECS クラスターをセットアップし、AWS Directory Service Simple AD を使用して WorkSpaces を起動します。次に、サンプルの ECS タスクは WorkSpaces で NGINX を起動します。

前提条件と制限

アーキテクチャ

ターゲットテクノロジースタック

  • 仮想プライベートクラウド (VPC)

  • Amazon ECS クラスター

  • Amazon WorkSpaces

  • Simple AD を使用した AWS Directory Service

ターゲット アーキテクチャ

ECS Anywhere は ECS クラスターを設定し、Simple AD を使用して WorkSpaces を起動します。

このアーキテクチャには、以下のサービスとリソースが含まれます。

  • カスタム VPC にパブリックサブネットとプライベートサブネットを持つ ECS クラスター

  • Amazon WorkSpaces へのユーザーアクセスを提供するための VPC 内の Simple AD

  • Simple AD を使用して VPC にプロビジョニングされた Amazon WorkSpaces

  • Amazon WorkSpaces をマネージドインスタンスとして追加するために AWS Systems Manager がアクティブ化されました

  • Amazon ECS と AWS Systems Manager Agent (SSM Agent) を使用して、Amazon WorkSpaces がSystems Manager と ECS クラスターに追加されました

  • ECS クラスターの WorkSpaces で実行する ECS タスクの例

ツール

  • AWS Directory Service Simple Active Directory (Simple AD) は、Samba 4 Active Directory 互換サーバーを搭載したスタンドアロンの管理対象ディレクトリです。Simple AD では、AWS Managed Microsoft AD が提供する機能のサブセットを使用できます。例えば、ユーザーを管理する機能や Amazon EC2 インスタンスに安全に接続する機能などがあります。

  • Amazon Elastic Container Service (Amazon ECS) は、クラスターでコンテナの実行、停止、管理をサポートする、高速でスケーラブルなコンテナ管理サービスです。

  • AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。

  • AWS Systems Manager」は、AWS クラウドで実行されるアプリケーションとインフラストラクチャの管理に役立ちます。アプリケーションとリソースの管理が簡略化され、オペレーション上の問題の検出と解決時間が短縮され、AWS リソースを大規模かつセキュアに管理できるようになります。

  • Amazon WorkSpaces は、WorkSpaces として知られる、クラウドベースの仮想 Microsoft Windows または Amazon Linux デスクトップをユーザーにプロビジョニングするのに役立ちます。WorkSpaces は、ハードウェアの調達とデプロイ、または複雑なソフトウェアのインストールの必要性を排除します。

エピック

タスク説明必要なスキル

ECS クラスターを作成して設定する。

ECS クラスターを作成するには、次の手順を含む AWS ドキュメントの指示に従います。

  • [クラスターの互換性の選択] で、[ネットワーキングのみ] を選択します。これにより、Amazon WorkSpace が ECS クラスターの外部インスタンスとしてサポートされます。

  • 新しい VPC を作成することを選択します。

クラウドアーキテクト
タスク説明必要なスキル

Simple AD をセットアップし、Amazon WorkSpaces を起動します。

新しく作成した VPC に Simple AD ディレクトリをプロビジョニングして Amazon WorkSpaces を起動するには、AWS ドキュメントの指示に従ってください。

クラウドアーキテクト
タスク説明必要なスキル

添付のスクリプトをダウンロードしてください。

ローカルマシンで、「添付ファイル」セクションにある ssm-trust-policy.json および ssm-activation.json ファイルをダウンロードします。

クラウドアーキテクト

IAM ロールを追加します。

ビジネス要件に基づいて環境変数を追加します。

export AWS_DEFAULT_REGION=${AWS_REGION_ID} export ROLE_NAME=${ECS_TASK_ROLE} export CLUSTER_NAME=${ECS_CLUSTER_NAME} export SERVICE_NAME=${ECS_CLUSTER_SERVICE_NAME}

以下のコマンドを実行してください。

aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://ssm-trust-policy.json
クラウドアーキテクト

AmazonSSMManagedInstanceCore ポリシーを IAM ロールに追加します。

以下のコマンドを実行してください。

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
クラウドアーキテクト

[AmazonEC2ContainerServiceforEC2Role] ポリシーを IAM ロールに追加します。

以下のコマンドを実行してください。

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role
クラウドアーキテクト

IAM ロールを検証します。

次のコマンドを実行して、IAM ロールを検証します。

aws iam list-attached-role-policies --role-name $ROLE_NAME
クラウドアーキテクト

Systems Manager を起動します。

以下のコマンドを実行してください。

aws ssm create-activation --iam-role $ROLE_NAME | tee ssm-activation.json
クラウドアーキテクト
タスク説明必要なスキル

WorkSpaces に接続します。

ワークスペースに接続して設定するには、AWS ドキュメントの指示に従ってください。

アプリ開発者

ecs-anywhere インストールスクリプトをダウンロードします。

コマンドプロンプトで、次のコマンドを入力します。

curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh" && sudo chmod +x ecs-anywhere-install.sh
アプリ開発者

シェルスクリプトの整合性をチェックしてください。

(オプション) 次のコマンドを実行します。

curl -o "ecs-anywhere-install.sh.sha256" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh.sha256" && sha256sum -c ecs-anywhere-install.sh.sha256
アプリ開発者

Amazon Linux に EPEL リポジトリを追加します。

Enterprise Linux (EPEL) リポジトリに追加パッケージを追加するには、コマンド sudo amazon-linux-extras install epel -y を実行します。

アプリ開発者

Amazon ECS Anywhere にインストールできます。

インストールスクリプトを実行するには、次のコマンドを使用します。

sudo ./ecs-anywhere-install.sh --cluster $CLUSTER_NAME --activation-id $ACTIVATION_ID --activation-code $ACTIVATION_CODE --region $AWS_REGION

ECS クラスターのインスタンス情報を確認します。

Systems Manager と ECS クラスターインスタンスの情報を確認し、WorkSpaces がクラスターに追加されたことを確認するには、ローカルマシンで次のコマンドを実行します。

aws ssm describe-instance-information" && "aws ecs list-container-instances --cluster $CLUSTER_NAME
アプリ開発者
タスク説明必要なスキル

タスク実行 IAM ロールを作成するには

「添付ファイル」セクションから task-execution-assume-role.json および external-task-definition.json をダウンロードします。 

ローカルマシンで次のコマンドを実行します。

aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json
クラウドアーキテクト

ポリシーを実行ロールに追加します。

以下のコマンドを実行してください。

aws iam --region $AWS_DEFAULT_REGION attach-role-policy --role-name $ECS_TASK_EXECUTION_ROLE --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
クラウドアーキテクト

タスクロールを作成します。

以下のコマンドを実行してください。

aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json
クラウドアーキテクト

タスク定義をクラスターに登録します。

ローカルマシンで次のコマンドを実行します。

aws ecs register-task-definition --cli-input-json file://external-task-definition.json
クラウドアーキテクト

タスクを実行します。

ローカルマシンで次のコマンドを実行します。

aws ecs run-task --cluster $CLUSTER_NAME --launch-type EXTERNAL --task-definition nginx
クラウドアーキテクト

タスクの実行状態を検証します。

タスク ID を取得するには、次のコマンドを実行します。

export TEST_TASKID=$(aws ecs list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns[0]')

タスク ID を使用して、次のコマンドを実行します。

aws ecs describe-tasks --cluster $CLUSTER_NAME --tasks ${TEST_TASKID}
クラウドアーキテクト

WorkSpace でタスクを確認します。

NGINX が WorkSpace で実行されていることを確認するには、コマンド  curl http://localhost:8080 を実行します。

アプリ開発者

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip