Amazon ECS Anywhere を で設定してオンプレミスのコンテナアプリケーションを管理する AWS CDK - AWS 規範ガイダンス

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

Amazon ECS Anywhere を で設定してオンプレミスのコンテナアプリケーションを管理する AWS CDK

作成者: Rahul Sharad Gaikwad (AWS)

コードリポジトリ: amazon-ecs-anywhere-cdk-samples

環境:PoC またはパイロット

テクノロジー: モダナイゼーション、コンテナとマイクロサービス DevOps、ハイブリッドクラウド、インフラストラクチャ

ワークロード:その他すべてのワークロード

AWS サービス: AWS CDK、Amazon ECS、AWSアイデンティティとアクセス管理

[概要]

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

このパターンは、AWSCloud Development Kit (AWS CDK) スタックを使用して ECS Anywhere をセットアップするステップを示しています。

前提条件と制限

前提条件

  • アクティブ AWS アカウント。

  • AWS コマンドラインインターフェイス (AWS CLI) がインストールされ、設定されています。(AWSCLIドキュメントの「 のインストール、更新、アンインストールAWSCLI」を参照してください。) 

  • AWS CDK ツールキット、インストールおよび設定済み。(AWSCDKドキュメントの AWS CDK Toolkit を参照し、 手順に従ってバージョン 2 をグローバルにインストールします)。

  • ノードパッケージマネージャー (npm)、 AWSCDKの 用にインストールおよび設定されています TypeScript。(npm ドキュメントの「Node.js と npm のダウンロードとインストール」を参照してください。)

機能制限

製品バージョン

  • AWS CDK ツールキットバージョン 2

  • npm バージョン 7.20.3 以降

  • Node.js バージョン 16.6.1 以降

アーキテクチャ

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

  • AWS CloudFormation

  • AWS CDK

  • Amazon ECS Anywhere

  • AWS Identity and Access Management (IAM)

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

次の図は、このパターンで実装されている TypeScriptAWSCDKと を使用した ECS Anywhere セットアップの高レベルのシステムアーキテクチャを示しています。

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

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

  3. Amazon ECSクラスターに外部インスタンスを登録するには、仮想マシン (SSMVM) に AWS Systems Manager Agent ( エージェント) をインストールし、VM を AWS Systems Manager マネージドインスタンスとして登録する必要があります。 

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

  5. 外部インスタンスが Amazon ECSクラスターに登録および設定されると、VM で複数のコンテナを実行できます。これは外部インスタンスとして登録されます。

ECS AWSCDKで を使用する任意の場所のセットアップ TypeScript。

自動化とスケール

このパターンで提供されるGitHub リポジトリは、 をInfrastructure as Code (IaC) ツールAWSCDKとして使用して、このアーキテクチャの構成を作成します。AWS CDK は、リソースをオーケストレーションし、ECSAnywhere をセットアップするのに役立ちます。

ツール

コード

このパターンのソースコードは GitHub、Amazon ECS Anywhere CDK サンプルリポジトリの で使用できます。リポジトリをクローンして使用するには、次のセクションの指示に従います。

エピック

タスク説明必要なスキル

AWS CDK バージョンを確認します。

次のコマンドを実行して、 AWS CDK Toolkit のバージョンを確認します。

cdk --version

このパターンにはAWSCDKバージョン 2 が必要です。以前のバージョンの がある場合はAWSCDK、AWSCDKドキュメントの指示に従って更新します。

DevOps エンジニア

AWS 認証情報を設定します。

認証情報を設定するには、aws configure コマンドを実行し、プロンプトに従ってください。

$aws configure AWS Access Key ID [None]: <your-access-key-ID> AWS Secret Access Key [None]: <your-secret-access-key> Default region name [None]: <your-Region-name> Default output format [None]:
DevOps エンジニア
タスク説明必要なスキル

AWS CDK コードリポジトリをクローンします。

コマンドを使用して、このパターンの GitHub コードリポジトリをクローンします。

git clone https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples.git
DevOps エンジニア

環境を起動します。

使用するアカウントとAWSリージョンにAWS CloudFormation テンプレートをデプロイするには、次のコマンドを実行します。

cdk bootstrap <account-number>/<Region>

詳細については、AWSCDKドキュメントの「Bootstrapping」を参照してください。

DevOps エンジニア
タスク説明必要なスキル

パッケージの依存関係をインストールし、 TypeScript ファイルをコンパイルします。

パッケージの依存関係をインストールし、次のコマンドを実行して TypeScript ファイルをコンパイルします。

$cd amazon-ecs-anywhere-cdk-samples $npm install $npm fund

これらのコマンドは、すべてのパッケージをサンプルリポジトリからインストールします。 

重要:パッケージが見つからないというエラーが表示される場合は、以下のいずれかのコマンドを使用してください。

$npm ci

—または—

$npm install -g @aws-cdk/<package_name>

詳細については、npm のドキュメントの「npm ci」と「npm install」を参照してください。

DevOps エンジニア

プロジェクトをビルドします。

プロジェクト コードをビルドするには、次のコマンドを実行します。

npm run build

プロジェクトの構築とデプロイの詳細については、AWSCDKドキュメントの最初のAWSCDKアプリケーションを参照してください。

DevOps エンジニア

プロジェクトをデプロイします。

プロジェクトコードをデプロイするには、コマンドを実行します。

cdk deploy
DevOps エンジニア

スタックの作成と出力を検証します。

https://console.aws.amazon.com/cloudformation でAWS CloudFormation コンソールを開き、EcsAnywhereStackスタックを選択します。Outputs タブには、外部 VM で実行するコマンドが表示されます。

DevOps エンジニア
タスク説明必要なスキル

Vagrant を使用して VM を設定します。

デモンストレーションの目的で、HashiCorp Vagrant を使用して VM を作成できます。Vagrant は、ポータブルな仮想ソフトウェア開発環境を構築し保守するためのオープンソースユーティリティです。Vagrantfile が置かれているルートディレクトリから  vagrant up  コマンドを実行して Vagrant VM を作成します。詳細については、「Vagrant のドキュメント」を参照してください。

DevOps エンジニア

VM を外部インスタンスとして登録します。

1. vagrant ssh コマンドを使用して Vagrant VM にログインします。詳細については、「Vagrant のドキュメント」を参照してください。

2. VM を AWS Systems Manager に登録し、外部インスタンスをアクティブ化するために使用できるアクティベーションコードと ID を作成します。このコマンドからの出力に、  ActivationId と  ActivationCode 値が含まれます。 

aws ssm create-activation --iam-role EcsAnywhereInstanceRole | tee ssm-activation.json

3. アクティベーション ID とコード値を出力します。

export ACTIVATION_ID=<activation-ID> export ACTIVATION_CODE=<activation-code>

4. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。

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

5. オンプレミス サーバーまたは VM でインストール スクリプトを実行します。

sudo ./ecs-anywhere-install.sh \ --cluster test-ecs-anywhere \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE \ --region <Region>

VM のセットアップと登録の詳細については、Amazon ECSドキュメントの「外部インスタンスをクラスターに登録する」を参照してください。

DevOps エンジニア

ECS Anywhere と外部 VM のステータスを確認します。

仮想ボックスが Amazon ECSコントロールプレーンに接続され、実行されているかどうかを確認するには、次のコマンドを使用します。

aws ssm describe-instance-information aws ecs list-container-instances --cluster $CLUSTER_NAME
DevOps エンジニア
タスク説明必要なスキル

リソースをクリーンアップして削除する。

このパターンを確認したら、追加料金が発生しないように、作成したリソースを削除する必要があります。クリーンアップするには、以下のコマンドを実行します。

cdk destroy
DevOps エンジニア

関連リソース