Amazon Web Services ブログ

Amazon ECS Anywhere の開始方法 – 一般提供の開始

Amazon Elastic Container Service (Amazon ECS) が 2014 年にリリースされて以来、AWS は、モバイルデバイス用のサービスである AWS Wavelength や、AWS が所有するフルマネージド型のハードウェアを使用して、お客様の環境に拡張するサービスである AWS Outposts など、AWS リージョンの外で Amazon ECS タスクを実行するための他のオプションをリリースしてきました。

しかし、規制、レイテンシー、データ所在地に関する要件、または既存のインフラストラクチャへの投資を活用したいという要望を理由として、アプリケーションをオンプレミスで実行する必要があるお客様もいます。このような場合、お客様は個別のコンテナオーケストレーションソフトウェアをインストール、運用、管理する必要があり、AWS 環境とオンプレミス環境全体でさまざまなツールを使用する必要があります。お客様からは、このような複雑さとコストを増大させることなく、オンプレミスのコンテナを管理する方法を求める声が寄せられました。

昨年ジェフがあらかじめ発表9したとおり、Amazon ECS Anywhere の一般提供を発表します。Amazon ECS Anywhere は、Amazon ECS の新機能で、お客様がオンプレミスでコンテナベースのアプリケーションを簡単に実行および管理することを可能にする機能です。これには、仮想マシン (VM)、ベアメタルサーバー、その他のカスタマー管理インフラストラクチャが含まれます。

ECS Anywhere では、AWS で使用しているものと同じクラウドベースかつフルマネージド型の高いスケーラビリティを備えたコンテナオーケストレーションサービスを使用して、カスタマー管理のインフラストラクチャでコンテナを実行および管理できます。オンプレミスで独自のコンテナオーケストレーターを準備、実行、更新、保守する必要がなくなり、シンプルなエージェントをインストールすることで、ハイブリッド環境の管理とインフラストラクチャへのクラウドの活用がより容易になります。

ECS Anywhere は、すべてのコンテナベースのアプリケーション用に一貫したツールと API を提供するとともに、クラスター管理、ワークロードスケジューリング、クラウド内、およびカスタマー管理のインフラストラクチャの両方でのモニタリング用に同じ Amazon ECS エクスペリエンスを提供します。短縮されたレイテンシーを維持しつつ独自のハードウェアで、または一貫した単一のコンテナオーケストレーターを使用してクラウド内で、エッジロケーションでのデータ処理などのコンテナワークロードを実行することで、コストと複雑さの軽減のメリットを享受できます。

Amazon ECS Anywhere – 開始方法
ECS Anywhere の使用を開始するには、オンプレミスのサーバーまたは VM (外部インスタンスとも呼ばれます) を ECS クラスターに登録します。AWS Systems Manager Agent、Amazon ECS コンテナエージェント、および Docker をこれらの外部インスタンスにインストールする必要があります。外部インスタンスには、AWS API との通信を許可する IAM ロールが必要です。詳細については、ECS デベロッパーガイドの必要な IAM アクセス許可を参照してください。

ECS Anywhere のクラスターを作成するには、ECS コンソールの [Create Cluster] (クラスターの作成) ページで、[Networking Only] (ネットワークのみ) テンプレートを選択します。このオプションは、AWS Fargate または外部インスタンスキャパシティーで使用します。登録するオンプレミスのサーバーに地理的に最も近い AWS リージョンを使用することをお勧めします。

これにより、外部インスタンスを登録するための空のクラスターが作成されます。[ECS Instances] (ECS インスタンス) タブで、[Register External Instances] (外部インスタンスの登録) を選択して、アクティベーションコードとインストールスクリプトを取得します。

[Step 1: External instances activation details] (ステップ 1: 外部インスタンスのアクティブ化の詳細) ページの [Activation key duration (in days)] (アクティベーションキー期間 (日数)) に、アクティベーションキーをアクティブのままにする日数を入力します。アクティベーションキーは、最大 1,000 のアクティベーションに使用できます。[Number of instances] (インスタンス数) で、クラスターに登録する外部インスタンスの数を入力します。[Instance role] (インスタンスロール) で、外部インスタンスに関連付ける IAM ロールを入力します。

[Next step] (次のステップ) を選択して、登録コマンドを取得します。

[Step 2: Register external instances] (ステップ 2: 外部インスタンスを登録する) ページで、登録コマンドをコピーします。クラスターに登録する外部インスタンスでこのコマンドを実行します。

オンプレミスサーバーまたは VM に登録コマンドを貼り付けます。その後、各外部インスタンスは AWS Systems Manager マネージドインスタンスとして登録され、Amazon ECS クラスターに登録されます。

x86_64ARM64 の両方の CPU アーキテクチャがサポートされています。サポートされているオペレーティングシステムの一覧を次に示します。

  • CentOS 7、CentOS 8
  • RHEL 7
  • Fedora 32、Fedora 33
  • openSUSE Tumbleweed
  • Ubuntu 18、Ubuntu 20
  • Debian 9、Debian 10
  • SUSE Enterprise Server 15

ECS エージェントが起動し、登録が完了すると、[ECS Instances] (ECS インスタンス) タブに外部インスタンスが表示されます。

既存のクラスターに外部インスタンスを追加することもできます。この場合、Amazon EC2 インスタンスと外部インスタンスの両方に mi-* のプレフィックスが付いていることがわかります。

これで、外部インスタンスがクラスターに登録されたので、タスク定義を作成する準備が整いました。Amazon ECS には、サービスの作成時またはスタンドアロンタスクの実行時に、タスク定義が EXTERNAL 起動タイプと互換性があるかどうかを検証するために、requiresCompatibilities パラメータが用意されています。次に、タスク定義の例を示します。

{
	"requiresCompatibilities": [
		"EXTERNAL"
	],
	"containerDefinitions": [{
		"name": "nginx",
		"image": "public.ecr.aws/nginx/nginx:latest",
		"memory": 256,
		"cpu": 256,
		"essential": true,
		"portMappings": [{
			"containerPort": 80,
			"hostPort": 8080,
			"protocol": "tcp"
		}]
	}],
	"networkMode": "bridge",
	"family": "nginx"
}

ECS コンソールでタスク定義を作成できます。[Task Definition] (タスク定義) で、[Create new task definition] (新しいタスク定義の作成) を選択します。[Launch type] (起動タイプ) で [EXTERNAL] を選択し、外部インスタンスを使用するようにタスクとコンテナ定義を設定します。

[Tasks] (タスク) タブで、[Run new task] (新しいタスクの実行) を選択します。[Run Task] (タスクの実行) ページの [Cluster] (クラスター) で、タスク定義を実行するクラスターを選択します。[Number of tasks] (タスクの数) で、[EXTERNAL] 起動タイプで実行するタスクのコピー数を入力します。

または、[Services] (サービス) タブで [Create] (作成) を選択します。[Configure service] (サービスの設定) では、クラスターで実行および維持するタスク定義のコピーを指定できます。登録された外部インスタンスでタスクを実行するには、[Launch type] (起動タイプ) で [EXTERNAL] を選択します。この起動タイプを選択すると、ロードバランサー、タグの伝達、およびサービス検出の統合はサポートされません。

外部インスタンスで実行するタスクは、[bridge]、[host] (ホスト)、または [none] (なし) のネットワークモードを使用する必要があります。awsvpc ネットワークモードはサポートされていません。各ネットワークモードの詳細については、Amazon ECS ベストプラクティスガイドのネットワークモードを選択するを参照してください。

これで、タスクを実行し、EXTERNALFARGATEEC2 といったキャパシティープロバイダーのタイプを同じ ECS サービスに関連付けて、どのようにタスクを分割するかを指定できます。

留意点
ここで留意すべきことがいくつかあります。

接続: オンプレミスのサーバーで実行されている ECS エージェントと AWS リージョンの ECS コントロールプレーン間のネットワーク接続が失われた場合、既存の ECS タスクは通常どおり実行されます。タスクが他の AWS のサービスとの接続を維持している場合は、タスクロールの認証情報がアクティブである限り、引き続きやり取りします。サービスの一部として開始されたタスクが単独でクラッシュまたは終了した場合、接続が復元されるまで ECS はタスクを置き換えることができません。

モニタリング: ECS Anywhere を使用すると、クラスターとサービスの Amazon CloudWatch メトリクスを取得したり、CloudWatch Logsグドライバー (awslogs) を使用してコンテナのログを取得したり、ECS CloudWatch イベントストリームにアクセスしてクラスターのイベントをモニタリングしたりできます。

ネットワーキング: ECS 外部インスタンスは、アウトバウンドトラフィックを生成したり、データを処理したりするアプリケーションを実行するために最適化されています。アプリケーションでウェブサービスなどのインバウンドトラフィックが必要な場合は、機能がネイティブでサポートされるまで、これらのワークロードをロードバランサーの背後に配置するための回避策を採用する必要があります。詳細については、ECS Anywhere を使用したネットワークを参照してください。

データセキュリティ: お客様がデータセキュリティを維持できるように、ECS Anywhere は、タスクの状態、またはコンテナの状態 (実行中かどうかにかかわらず、パフォーマンスカウンターなど) に関連する AWS リージョンメタデータにのみ送信します。この通信は、Transport Layer Security (TLS) を介して転送中に認証および暗号化されます。

ECS Anywhere パートナー
ECS Anywhere は、お客様が ECS Anywhere のメリットを活用できるようにし、この機能にさらに他の機能を提供するため、さまざまな ECS Anywhere パートナーと統合されています。ここでは、パートナーが自らの経験や提供内容を共有するために書いたブログ記事をいくつかご紹介します。(この記事が公開されているリンクで更新しています。)

今すぐご利用いただけます
Amazon ECS Anywhere は、ECS がサポートされているすべての商用リージョン (AWS 中国リージョンを除く) で利用できるようになりました。ECS Anywhereでは、最低料金や前払いのコミットメントはありません。各管理対象の ECS Anywhere タスクにつき、インスタンス時間ごとにお支払いいただきます。詳細については、料金のページを参照してください。

詳細については、Amazon ECS デベロッパーガイドの ECS Anywhere を参照してください。Amazon ECS の AWS フォーラム、または通常の AWS サポート担当者を通じてフィードバックをお寄せください。

Amazon ECS Anywhere を今すぐ始めましょう

Channy

更新情報。ECS Anywhere のクールなデモを見て、ホームオフィスで Raspberry Pi クラスターを操作し、その詳細なブログ投稿をお読みください。