AWS OutpostsのAmazon Elastic Container Service
AWS Outposts は、オンプレミス施設でネイティブ AWS サービス、インフラストラクチャ、運用モデルを有効にします。AWS Outposts 環境では、AWS で使用するのと同じ AWS クラウド API、ツール、インフラストラクチャを使用できます。
AWS Outposts の Amazon ECS は、オンプレミスのデータやアプリケーションの近くで実行が必要な、低レイテンシーのワークロードに最適です。
AWS Outposts の詳細については、AWS Outposts ユーザーガイドを参照してください。
考慮事項
AWS Outposts で Amazon ECS を使用する際の考慮事項は以下のとおりです。
-
Amazon Elastic Container Registry、AWS Identity and Access Management、Network Load Balancer は、AWS Outposts ではなく AWS リージョンで実行されます。これにより、これらのサービスとコンテナ間のレイテンシーが増加します。
-
AWS Fargate は AWS Outposts で使用できません。
以下に、AWS Outposts のネットワーク接続に関する考慮事項を示します。
-
AWS Outposts とその AWS リージョン間のネットワーク接続が失われた場合、クラスターは引き続き実行されます。ただし、接続が復元されるまで、新しいクラスターを作成したり、既存のクラスターで新しいアクションを実行したりすることはできません。インスタンスに障害が発生した場合、インスタンスは自動的に置き換えられません。The CloudWatch Logs エージェントは、ログとイベントデータを更新できません。
-
AWS OutpostsとAWS リージョン間で、信頼性が高く、可用性が高く、低レイテンシーの接続を提供することをお勧めします。
前提条件
AWS Outposts で Amazon ECS を使用するための前提条件は以下のとおりです。
-
オンプレミスのデータセンターに Outpost をインストールして設定しておく必要があります。
-
Outpost とその AWS リージョンとの間に、信頼できるネットワーク接続が必要です。
AWS Outposts でのクラスター作成の概要
以下は、設定の概要です。
-
AWS Outposts に対する権限を持つロールとポリシーを作成します。
-
AWS Outposts の権限を持つ IAM インスタンスプロファイルを作成します。
-
VPC を作成、または AWS Outposts と同じリージョンにある既存の VPC を使用します。
-
サブネットを作成、または AWS Outposts に関連付けられている既存のサブネットを使用します。
これは、コンテナインスタンスが実行されるサブネットです。
-
クラスター内にあるコンテナインスタンスのセキュリティグループを作成します。
-
Amazon ECS クラスターを作成します。
-
クラスターでインスタンスを起動するための、Amazon ECS コンテナエージェント環境変数を定義します。
-
コンテナを実行します。
Amazon ECS を AWS Outposts に統合する方法の詳細については、「Extend Amazon ECS across two AWS Outposts rack
次の例では、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 に関連付けられたサブネットを作成します。
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 に適切な 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 コールのファイルの情報については、「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 に配置されます。