AWS OutpostsのAmazon Elastic Container Service
AWS Outposts は、オンプレミス施設でネイティブ AWS サービス、インフラストラクチャ、運用モデルを有効にします。AWS Outposts 環境では、AWS クラウドで使用するのと同じ AWS API、ツール、インフラストラクチャを使用できます。AWS Outposts の Amazon ECS は、オンプレミスのデータやアプリケーションの近くで実行が必要な、低レイテンシーのワークロードに最適です。AWS Outposts の詳細については、AWS Outposts ユーザーガイドを参照してください。
前提条件
Amazon ECS を AWS Outposts で使用するための前提条件を次に示します。
-
オンプレミスのデータセンターに AWS Outposts をインストールして設定しておく必要があります。
-
AWS Outposts と リージョンの間に信頼できるネットワークAWS接続が必要です。
-
AWS Outposts で使用できるインスタンスタイプの十分な容量が必要です。
-
すべての Amazon ECS コンテナインスタンスには、Amazon ECS コンテナエージェント 1.33.0 以降が必要です。
制約事項
AWS Outpostsで Amazon ECS を使用する際の制限事項を次に示します。
-
Amazon Elastic Container Registry、AWS Identity and Access Management Network Load Balancer、Classic Load Balancer、および Amazon Route 53 は、AWS Outposts ではなく、AWSリージョンで実行されます。これにより、これらのサービスとコンテナ間のレイテンシーが増加します。
-
AWS Fargate は で使用できません。AWS Outposts
ネットワーク接続に関する考慮事項
以下に、AWS Outposts のネットワーク接続に関する考慮事項を示します。
-
AWS Outposts とその AWS リージョン間のネットワーク接続が失われた場合、クラスターは引き続き実行されます。ただし、接続が復元されるまで、新しいクラスターを作成したり、既存のクラスターで新しいアクションを実行したりすることはできません。インスタンスに障害が発生した場合、インスタンスは自動的に置き換えられません。The CloudWatch Logs エージェントは、ログとイベントデータを更新できません。
-
AWS OutpostsとAWS リージョン間で、信頼性が高く、可用性が高く、低レイテンシーの接続を提供することをお勧めします。
AWS Outposts で、Amazon ECS クラスターの作成
AWS Outposts での Amazon ECS クラスターの作成は、AWS クラウドでの Amazon ECS クラスターの作成に似ています。AWS Outposts で Amazon ECS クラスターを作成するときは、AWS Outposts に関連付けられた サブネットを指定する必要があります。
AWS Outposts は AWS リージョンの拡張であり、1 つのアカウントの Amazon VPC を拡張して、複数のアベイラビリティーゾーンおよび関連する AWS Outposts にまたがることができます。AWS Outposts を設定するとき、サブネットをそれに関連付けて、リージョン VPC 環境をオンプレミス施設に拡張します。AWS Outposts のインスタンスは、サブネットが関連付けられたアベイラビリティーゾーンと同様に、リージョン VPC の一部として表示されます。

AWS CLI
AWS CLI を使用して AWS Outposts に Amazon ECS クラスターを作成するには、AWS Outposts に関連付けられたセキュリティグループとサブネットを指定します。
AWS Outposts に関連付けられたサブネットを作成します。
aws ec2 create-subnet \ --cidr-block
10.0.3.0/24
\ --vpc-idvpc-xxxxxxxx
\ --outpost-arn arn:aws:outposts:us-west-2
:123456789012:outpost/op-xxxxxxxxxxxxxxxx
\ --availability-zone-idusw2-az1
次の例では、AWS Outposts に Amazon ECS クラスターを作成します。
-
AWS Outposts に対する権限を持つロールとポリシーを作成します。
role-policy.json
ファイルは、リソースに対する効果とアクションを含むポリシードキュメントです。ファイル形式の情報については、「IAM API リファレンス」の「PutRolePolicy」を参照してください。aws iam create-role –-role-name
ecsRole
\ --assume-role-policy-document file://ecs-policy.json aws iam put-role-policy --role-nameecsRole
--policy-nameecsRolePolicy
\ --policy-document file://role-policy.json -
AWS Outposts の権限を持つ IAM インスタンスプロファイルを作成します。
aws iam create-instance-profile --instance-profile-name
outpost
aws iam add-role-to-instance-profile --instance-profile-nameoutpost
\ --role-nameecsRole
-
VPC を作成します。
aws ec2 create-vpc --cidr-block
10.0.0.0/16
-
コンテナインスタンスのセキュリティグループを作成し、AWS Outposts に適切な CIDR 範囲を指定します。(この手順は、AWS Outposts では異なります。)
aws ec2 create-security-group --group-name
MyOutpostSG
aws ec2 authorize-security-group-ingress --group-nameMyOutpostSG
--protocol tcp \ --port 22 --cidr10.0.3.0/24
aws ec2 authorize-security-group-ingress --group-nameMyOutpostSG
--protocol tcp \ --port 80 --cidr10.0.3.0/24
-
クラスターを作成します。
-
Amazon ECS コンテナエージェント環境変数を定義して、前のステップで作成したクラスターにインスタンスを起動し、クラスター (例えば、クラスターが Outpost 用であることを示す
Outpost
など) を識別するのに役立つタグを定義して追加します。#! /bin/bash cat << ‘EOF’ >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_IMAGE_PULL_BEHAVIOR=prefer-cached ECS_CONTAINER_INSTANCE_TAGS={“environment”: ”Outpost”} EOF
注記 リージョン内の Amazon ECR からコンテナイメージをプルすることによる遅延を回避するには、イメージキャッシュを使用します。これを行うには、タスクを実行するたびに、
ECS_IMAGE_PULL_BEHAVIOR
をprefer-cached
に設定して、インスタンス自体でキャッシュされたイメージを使用するように Amazon ECS エージェントをデフォルトに設定します。 -
コンテナインスタンスを作成し、このインスタンスを実行する AWS Outposts の VPC とサブネットを指定して、AWS Outposts で使用できるインスタンスタイプを指定します。(この手順は、AWS Outposts では異なります。)
userdata.txt
ファイルは、インスタンスの起動後にそのインスタンスが一般的な自動設定タスクを実行したり、スクリプトを実行したりするために使用できるユーザーデータが含まれています。API コールのファイルの情報については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「起動時に Linux インスタンスでコマンドを実行」を参照してください。aws ec2 run-instances --count 1 --image-id
ami-xxxxxxxx
--instance-typec5.large
\ --key-nameaws-outpost-key
–-subnet-idsubnet-xxxxxxxxxxxxxxxxx
\ --iam-instance-profile Nameoutpost
--security-group-idsg-xxxxxx
\ --associate-public-ip-address --user-datafile://userdata.txt
注記 このコマンドは、クラスターにインスタンスを追加する場合にも使用されます。クラスターにデプロイされたコンテナは、その特定の AWS Outposts に配置されます。
-
タスク定義を登録します。次のコマンドを使用して
ecs-task.json
をタスク定義の名前で代用してください。aws ecs register-task-definition --cli-input-json file://
ecs-task.json
-
タスクを実行するか、サービスを作成します。