

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

# Amazon ECS Anywhere を使用して Amazon WorkSpaces で Amazon ECS タスクを実行する
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere"></a>

*Akash Kumar、Amazon Web Services*

## 概要
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-summary"></a>

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 を起動します。

## 前提条件と制限事項
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-prereqs"></a>
+ アクティブな AWS アカウント
+ AWS コマンドラインインターフェイス (AWS CLI)
+ [マシンに設定されている](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) AWS 認証情報

## アーキテクチャ
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-architecture"></a>

**ターゲットテクノロジースタック**
+ 仮想プライベートクラウド (VPC)
+ Amazon ECS クラスター
+ Amazon WorkSpaces
+ Simple AD を使用した AWS Directory Service

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

![ECS Anywhere は ECS クラスターをセットアップし、Simple AD を使用して WorkSpaces を起動します。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/da8b2249-3423-485c-9fef-6f902025e969/images/fd354d14-f29b-4b9e-8f1a-c3cb7ed4d6bf.png)


 

このアーキテクチャには、以下のサービスとリソースが含まれます。
+ カスタム 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 タスクの例

## ツール
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-tools"></a>
+ [AWS Directory Service Simple Active Directory (Simple AD) ](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_simple_ad.html) は、Samba 4 Active Directory 互換サーバーを搭載したスタンドアロンの管理対象ディレクトリです。Simple AD では、AWS Managed Microsoft AD が提供する機能のサブセットを使用できます。例えば、ユーザーを管理する機能や Amazon EC2 インスタンスに安全に接続する機能などがあります。
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) は、クラスターでコンテナの実行、停止、管理をサポートする、高速でスケーラブルなコンテナ管理サービスです。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ 「[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)」は、AWS クラウドで実行されるアプリケーションとインフラストラクチャの管理に役立ちます。アプリケーションとリソースの管理が簡略化され、オペレーション上の問題の検出と解決時間が短縮され、AWS リソースを大規模かつセキュアに管理できるようになります。
+ [Amazon WorkSpaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html) は、*WorkSpaces* として知られる、クラウドベースの仮想 Microsoft Windows または Amazon Linux デスクトップをユーザーにプロビジョニングするのに役立ちます。WorkSpaces は、ハードウェアの調達とデプロイ、または複雑なソフトウェアのインストールの必要性を排除します。

## エピック
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-epics"></a>

### ECS クラスターをセットアップ
<a name="set-up-the-ecs-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ECS クラスターを作成して設定する。 | ECS クラスターを作成するには、次の手順を含む [AWS ドキュメント](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html)の指示に従います。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere.html) | クラウドアーキテクト | 

### Amazon WorkSpaces を起動する
<a name="launch-amazon-workspaces"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Simple AD をセットアップし、Amazon WorkSpaces を起動します。 | 新しく作成した VPC に Simple AD ディレクトリをプロビジョニングして Amazon WorkSpaces を起動するには、[AWS ドキュメント](https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-simple-ad.html)の指示に従ってください。 | クラウドアーキテクト | 

### ハイブリッド環境用に AWS Systems Manager をセットアップする
<a name="set-up-aws-systems-manager-for-a-hybrid-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 添付のスクリプトをダウンロードしてください。 | ローカルマシンで、「*添付ファイル*」セクションにある `ssm-trust-policy.json` および `ssm-activation.json` ファイルをダウンロードします。 | クラウドアーキテクト | 
| IAM ロールを追加します。 | ビジネス要件に基づいて環境変数を追加します。<pre>export AWS_DEFAULT_REGION=${AWS_REGION_ID}<br />export ROLE_NAME=${ECS_TASK_ROLE}<br />export CLUSTER_NAME=${ECS_CLUSTER_NAME}<br />export SERVICE_NAME=${ECS_CLUSTER_SERVICE_NAME}</pre><br />以下のコマンドを実行してください。<pre>aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://ssm-trust-policy.json</pre> | クラウドアーキテクト | 
| AmazonSSMManagedInstanceCore ポリシーを IAM ロールに追加します。 | 以下のコマンドを実行してください。<pre>aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore</pre> | クラウドアーキテクト | 
| [AmazonEC2ContainerServiceforEC2Role] ポリシーを IAM ロールに追加します。 | 以下のコマンドを実行してください。<pre>aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role</pre> | クラウドアーキテクト | 
| IAM ロールを検証します。 | 次のコマンドを実行して、IAM ロールを検証します。<pre>aws iam list-attached-role-policies --role-name $ROLE_NAME</pre> | クラウドアーキテクト | 
| Systems Manager を起動します。 | 以下のコマンドを実行してください。<pre>aws ssm create-activation --iam-role $ROLE_NAME | tee ssm-activation.json</pre> | クラウドアーキテクト | 

### ECS クラスターにWorkSpaces を追加
<a name="add-workspaces-to-the-ecs-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  WorkSpaces に接続します。 | ワークスペースに接続して設定するには、[AWS ドキュメント](https://docs.aws.amazon.com/workspaces/latest/userguide/workspaces-user-getting-started.html)の指示に従ってください。 | アプリ開発者 | 
| ecs-anywhere インストールスクリプトをダウンロードします。 | コマンドプロンプトで、次のコマンドを入力します。<pre>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</pre> | アプリ開発者 | 
| シェルスクリプトの整合性をチェックしてください。 | (オプション) 次のコマンドを実行します。<pre>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<br /><br /><br /></pre> | アプリ開発者 | 
| Amazon Linux に EPEL リポジトリを追加します。 | Enterprise Linux (EPEL) リポジトリに追加パッケージを追加するには、コマンド `sudo amazon-linux-extras install epel -y` を実行します。 | アプリ開発者 | 
| Amazon ECS Anywhere にインストールできます。 | インストールスクリプトを実行するには、次のコマンドを使用します。<pre>sudo ./ecs-anywhere-install.sh --cluster $CLUSTER_NAME --activation-id $ACTIVATION_ID --activation-code $ACTIVATION_CODE --region $AWS_REGION<br /><br /><br /></pre> |  | 
| ECS クラスターのインスタンス情報を確認します。 | Systems Manager と ECS クラスターインスタンスの情報を確認し、WorkSpaces がクラスターに追加されたことを確認するには、ローカルマシンで次のコマンドを実行します。<pre>aws ssm describe-instance-information" && "aws ecs list-container-instances --cluster $CLUSTER_NAME</pre> | アプリ開発者 | 

### WorkSpaces に ECS タスクを追加
<a name="add-an-ecs-task-for-the-workspaces"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| タスク実行 IAM ロールを作成するには | 「*添付ファイル*」セクションから `task-execution-assume-role.json` および `external-task-definition.json` をダウンロードします。 <br />ローカルマシンで次のコマンドを実行します。<pre>aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json</pre> | クラウドアーキテクト | 
| ポリシーを実行ロールに追加します。 | 以下のコマンドを実行してください。<pre>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</pre> | クラウドアーキテクト | 
| タスクロールを作成します。 | 以下のコマンドを実行してください。<pre>aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json<br /><br /><br /></pre> | クラウドアーキテクト | 
| タスク定義をクラスターに登録します。 | ローカルマシンで次のコマンドを実行します。<pre>aws ecs register-task-definition --cli-input-json file://external-task-definition.json</pre> | クラウドアーキテクト | 
| タスクを実行します。 | ローカルマシンで次のコマンドを実行します。<pre>aws ecs run-task --cluster $CLUSTER_NAME --launch-type EXTERNAL --task-definition nginx</pre> | クラウドアーキテクト | 
| タスクの実行状態を検証します。 | タスク ID を取得するには、次のコマンドを実行します。<pre>export TEST_TASKID=$(aws ecs list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns[0]')</pre><br />タスク ID を使用して、次のコマンドを実行します。<pre>aws ecs describe-tasks --cluster $CLUSTER_NAME --tasks ${TEST_TASKID}</pre> | クラウドアーキテクト | 
| WorkSpace でタスクを確認します。 | NGINX が WorkSpace で実行されていることを確認するには、コマンド ` curl http://localhost:8080` を実行します。 | アプリ開発者 | 

## 関連リソース
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-resources"></a>
+ [ECS クラスター](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)
+ [ハイブリッド環境の設定](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html)
+ [Amazon WorkSpaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html)
+ [Simple AD](https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-simple-ad.html)

## アタッチメント
<a name="attachments-da8b2249-3423-485c-9fef-6f902025e969"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/da8b2249-3423-485c-9fef-6f902025e969/attachments/attachment.zip)」