

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

# AWS CDK で Amazon ECS Anywhere を設定して、オンプレミスコンテナアプリケーションを管理します。
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk"></a>

*Amazon Web Services、Dr. Rahul Sharad Gaikwad*

## 概要
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-summary"></a>

「[Amazon ECS Anywhere](https://aws.amazon.com/ecs/anywhere/)」は、Amazon Elastic Container Service (Amazon ECS) の拡張機能です。ECS Anywhere を使用して、ネイティブの Amazon ECS タスクをオンプレミス環境または顧客管理型環境にデプロイできます。この機能は、コストを削減し、複雑なローカルコンテナのオーケストレーションと操作を軽減することに役立ちます。ECS Anywhere を使用して、オンプレミス環境とクラウド環境の両方でコンテナアプリケーションをデプロイして実行できます。これにより、チームが複数のドメインやスキルセットを習得しまたは複雑なソフトウェアを独自に管理しする必要がなくなります。

このパターンは、AWS Cloud Development Kit (「[AWS CDK](https://aws.amazon.com/cdk/)」) スタックを使用して ECS Anywhere を設定する手順を示しています。

## 前提条件と制限事項
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ AWS コマンドラインインターフェイス (AWS CLI)は、「インストール」および「設定」されています。(AWS CLI ドキュメントの「[AWS CLI のインストール、更新、アンインストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください)。 
+ AWS CDK Toolkit がインストールされ、設定されています。(AWS CDK ドのキュメントの「[AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)」を参照し、指示に従ってバージョン 2 をグローバルにインストールします。)
+ ノードパッケージマネージャー (npm) は、TypeScript で AWS CDK 用にインストールし設定されています。（npm ドキュメントの「[Node.js と npm のダウンロードとインストール](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)」を参照してください。）

**制限事項**
+ 制限と考慮事項については、「Amazon ECS のドキュメント」の「[外部インスタンス (Amazon ECS Anywhere)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-anywhere.html#ecs-anywhere-considerations)」を参照してください。

**製品バージョン**
+ AWS CDK Toolkit バージョン 2
+ npm バージョン 7.20.3 以降
+ Node.js バージョン 16.6.1 以降

## アーキテクチャ
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-architecture"></a>

**ターゲットテクノロジースタック**
+ AWS CloudFormation
+ AWS CDK
+ Amazon ECS Anywhere
+ AWS Identity and Access Management (IAM)

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

次の図は、このパターンで実装されたように、TypeScript でAWS CDK を使用する ECS Anywhere 設定の高レベルのシステムアーキテクチャを示しています。

1. AWS CDK スタックをデプロイする場合、AWS に CloudFormation スタックが作成されます。

1. CloudFormation スタックは Amazon ECS クラスターと関連する AWS リソースをプロビジョニングします。

1. Amazon ECS クラスターに外部インスタンスを登録するには、仮想マシン (VM) に AWS Systems Manager Agent (SSM Agent) をインストールし、その VM を AWS Systems Manager 管理型インスタンスとして登録する必要があります。 

1. また、Amazon ECS コンテナエージェントと Docker を VM にインストールして、Amazon ECS クラスターの外部インスタンスとして登録する必要があります。

1. 外部インスタンスを Amazon ECS クラスターに登録して設定すると、外部インスタンスとして登録された VM 上で複数のコンテナを実行できます。

![\[TypeScript とともに AWS CDK を使用した ECS Anywhere のセットアップ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/3ed63c00-40e7-4831-bb9d-63049c3490aa/images/ff7dc774-830d-4b9f-8262-7314afe7a033.png)


 

**自動化とスケール**

このパターンで提供される「[GitHub リポジトリ](https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples/)」、AWS CDK をInfrastructure as Code (IaC) ツールとして使用して、このアーキテクチャの設定を作成します。AWS CDK は、リソースのオーケストレーションと ECS Anywhere のセットアップに役立ちます。

## ツール
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) は、AWS クラウドインフラストラクチャをコードで定義してプロビジョニングするのに役立つソフトウェア開発フレームワークです。
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。

**Code**

このパターンのソースコードは、「[Amazon ECS Anywhere CDK Samples](https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples)」リポジトリにある GitHub で利用できます。リポジトリをクローンして使用するには、次のセクションの指示に従います。

## エピック
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-epics"></a>

### AWS CDK の設定を確認
<a name="verify-aws-cdk-configuration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS CDK のバージョンを確認します。 | 以下のコマンドを使用して、AWS CDK Toolkit のバージョンを確認します。<pre>cdk --version</pre>このパターンには AWS CDK バージョン 2 が必要です。旧バージョンの AWS CDK を使用している場合は、「[AWS CDK のドキュメント](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)」の指示に従って更新してください。 | DevOps エンジニア | 
| AWS 認証情報を設定します。 | 認証情報を設定するには、`aws configure` コマンドを実行し、プロンプトに従ってください。<pre>$aws configure<br />AWS Access Key ID [None]: <your-access-key-ID><br />AWS Secret Access Key [None]: <your-secret-access-key><br />Default region name [None]: <your-Region-name><br />Default output format [None]:</pre> | DevOps エンジニア | 

### AWS CDK 環境の起動
<a name="bootstrap-the-aws-cdk-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SAM コードリポジトリを複製します。 | 以下のコマンドを使用して、このパターンの GitHub コードリポジトリを複製します。<pre>git clone https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples.git</pre> | DevOps エンジニア | 
| 環境を起動します。 | 使用したいアカウントと AWS リージョンに AWS CloudFormation テンプレートをデプロイするには、以下のコマンドを実行します。<pre>cdk bootstrap <account-number>/<Region></pre>詳細については、AWS CDK ドキュメントの「[ブートストラップ](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)」を参照してください。 | DevOps エンジニア | 

### プロジェクトを構築してデプロイ
<a name="build-and-deploy-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| パッケージの依存関係をインストールし、TypeScript ファイルをコンパイルします。 | パッケージの依存関係をインストールし、次のコマンドを実行して TypeScript ファイルをコンパイルします。<pre>$cd amazon-ecs-anywhere-cdk-samples<br />$npm install<br />$npm fund </pre>これらのコマンドは、すべてのパッケージをサンプルリポジトリからインストールします。 パッケージが見つからないというエラーが表示される場合は、以下のいずれかのコマンドを使用してください。<pre>$npm ci   </pre>-または-<pre>$npm install -g @aws-cdk/<package_name></pre>詳細については、npm のドキュメントの「[npm ci](https://docs.npmjs.com/cli/v7/commands/npm-ci)」と「[npm install](https://docs.npmjs.com/cli/v7/commands/npm-install)」を参照してください。 | DevOps エンジニア | 
| プロジェクトをビルドします。 | プロジェクト コードをビルドするには、次のコマンドを実行します。<pre>npm run build</pre>プロジェクトの構築とデプロイの詳細については、「AWS CDK のドキュメント」の「[初めての AWS CDK アプリケーション](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#:~:text=the%20third%20parameter.-,Synthesize%20an%20AWS%20CloudFormation%20template,-Synthesize%20an%20AWS)」を参照してください。 | DevOps エンジニア | 
| プロジェクトをデプロイします。 | プロジェクトコードをデプロイするには、コマンドを実行します。<pre>cdk deploy</pre> | DevOps エンジニア | 
| スタックの作成と出力を検証します。 | 「[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)」で** **AWS CloudFormation コンソールを開き、`EcsAnywhereStack` スタックを選択します。**[出力]** タブに、外部 VM で実行するコマンドが表示されます。 | DevOps エンジニア | 

### オンプレミスマシンの設定
<a name="set-up-an-on-premises-machine"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Vagrant を使用して VM を設定します。 | デモンストレーションの目的で、「[HashiCorp Vagrant](https://www.vagrantup.com/)」を使用して VM を作成できます。Vagrant は、ポータブルな仮想ソフトウェア開発環境を構築し保守するためのオープンソースユーティリティです。Vagrantfile が置かれているルートディレクトリから  `vagrant up`  コマンドを実行して Vagrant VM を作成します。詳細については、「Vagrant のドキュメント」を参照してください。 | DevOps エンジニア | 
| VM を外部インスタンスとして登録します。 | 1. `vagrant ssh` コマンドを使用して Vagrant VM にログインします。詳細については、「Vagrant のドキュメント」を参照してください。2. VM を AWS Systems Manager に登録しまたは外部インスタンスをアクティブ化するために使用できるアクティベーションコードと ID を作成します。このコマンドからの出力に、  `ActivationId` と  `ActivationCode` 値が含まれます。 <pre>aws ssm create-activation --iam-role EcsAnywhereInstanceRole | tee ssm-activation.json</pre>3. アクティベーション ID とコード値を出力します。<pre>export ACTIVATION_ID=<activation-ID><br />export ACTIVATION_CODE=<activation-code></pre>4. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。<pre>curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh" && sudo chmod +x ecs-anywhere-install.sh</pre>5. オンプレミス サーバーまたは VM でインストール スクリプトを実行します。<pre>sudo ./ecs-anywhere-install.sh \<br />    --cluster test-ecs-anywhere \<br />     --activation-id $ACTIVATION_ID \<br />     --activation-code $ACTIVATION_CODE \<br />    --region <Region></pre>VM の設定と登録の詳細については、「Amazon ECS のドキュメント」の「[クラスターへの外部インスタンスの登録](https://docs.amazonaws.cn/en_us/AmazonECS/latest/developerguide/ecs-anywhere-registration.html)」を参照してください。 | DevOps エンジニア | 
| ECS Anywhere と外部 VM のステータスを確認してください。 | 仮想ボックスが Amazon ECS コントロールプレーンに接続され、実行中になっているかを確認するには、以下のコマンドを使用します。<pre>aws ssm describe-instance-information<br />aws ecs list-container-instances --cluster $CLUSTER_NAME</pre> | DevOps エンジニア | 

### クリーンアップ
<a name="clean-up"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをクリーンアップして削除する。 | このパターンを確認したら、追加料金が発生しないように、作成したリソースを削除する必要があります。クリーンアップするには、以下のコマンドを実行します。<pre>cdk destroy</pre> | DevOps エンジニア | 

## 関連リソース
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-resources"></a>
+ 「[Amazon ECS Anywhere のドキュメント](https://aws.amazon.com/ecs/anywhere/)」 
+ 「[Amazon ECS Anywhere デモ](https://www.youtube.com/watch?v=-eud6yUXsJM)」
+ 「[Amazon ECS Anywhere Workshop Samples](https://github.com/aws-samples/aws-ecs-anywhere-workshop-samples)」