AWS OutpostsのAmazon Elastic Container Service - Amazon Elastic Container Service

AWS OutpostsのAmazon Elastic Container Service

AWS Outposts は、オンプレミス施設でネイティブ AWS サービス、インフラストラクチャ、運用モデルを有効にします。AWS Outposts 環境では、AWS クラウドで使用するのと同じ AWS API、ツール、インフラストラクチャを使用できます。AWS Outposts の Amazon ECS は、オンプレミスのデータやアプリケーションの近くで実行が必要な、低レイテンシーのワークロードに最適です。AWS Outposts の詳細については、AWS Outposts ユーザーガイドを参照してください。

Prerequisites

Amazon ECS を AWS Outposts で使用するための前提条件を次に示します。

  • オンプレミスのデータセンターに AWS Outposts をインストールして設定しておく必要があります。

  • AWS Outposts とAWS リージョンの間に信頼できるネットワーク接続が必要です。

  • AWS Outposts で使用できるインスタンスタイプの十分な容量が必要です。

  • すべての Amazon ECS コンテナインスタンスには、Amazon ECS コンテナエージェント 1.33.0 以降が必要です。

Limitations

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-id vpc-xxxxxxxx \ --outpost-arn arn:aws:outposts:us-west-2:123456789012:outpost/op-xxxxxxxxxxxxxxxx \ --availability-zone-id usw2-az1

次の例では、AWS Outposts に Amazon ECS クラスターを作成します。

  1. AWS Outposts に対する権限を持つロールとポリシーを作成します。

    aws iam create-role –-role-name ecsRole \ –assume-role-policy-document file://ecs-policy.json aws iam put-role-policy –-role-name ecsRole –-policy-name ecsRolePolicy \ –-policy-document file://role-policy.json
  2. AWS Outposts の権限を持つ IAM インスタンスプロファイルを作成します。

    aws iam create-instance-profile --instance-profile-name outpost aws iam add-role-to-instance-profile --instance-profile-name outpost \ --role-name ecsRole
  3. VPC を作成します。

    aws ec2 create-vpc --cidr-block 10.0.0.0/16
  4. コンテナインスタンスのセキュリティグループを作成し、AWS Outposts に適切な CIDR 範囲を指定します。(この手順は、AWS Outposts では異なります。)

    aws ec2 create-security-group --group-name MyOutpostSG aws ec2 authorize-security-group-ingress --group-name MyOutpostSG --protocol tcp \ --port 22 --cidr 10.0.3.0/24 aws ec2 authorize-security-group-ingress -~-~group-name MyOutpostSG -~-~protocol tcp \ --port 80 --cidr 10.0.3.0/24
  5. クラスターを作成します。

  6. Amazon ECS コンテナエージェント環境変数を定義して、前のステップで作成したクラスターにインスタンスを起動し、必要なタグを定義します。

    #! /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_BEHAVIORprefer-cached に設定して、インスタンス自体でキャッシュされたイメージを使用するように Amazon ECS エージェントをデフォルトに設定します。

  7. コンテナインスタンスを作成し、このインスタンスを実行する AWS Outposts の VPC とサブネットを指定して、AWS Outposts で使用できるインスタンスタイプを指定します。(この手順は、AWS Outposts では異なります。)

    aws ec2 run-instances --count 1 --image-id ami-xxxxxxxx --instance-type c5.large \ --key-name aws-outpost-key –-subnet-id subnet-xxxxxxxxxxxxxxxxx \ --iam-instance-profile Name outpost --security-group-id sg-xxxxxx \ --associate-public-ip-address --user-data file://userdata.txt
    注記

    このコマンドは、クラスターにインスタンスを追加する場合にも使用されます。クラスターにデプロイされたコンテナは、その特定の AWS Outposts に配置されます。

  8. タスク定義を登録する

    aws ecs register-task-definition -~-~cli-input-json file://ecs-task.json
  9. タスクを実行するか、サービスを作成します。

    Run the task
    aws ecs run-task --cluster mycluster --count 1 --task-definition outpost-app:1
    Create the service
    aws ecs create-service –-cluster mycluster –-service-name outpost-service \ –-task-definition outpost-app:1 –-desired-count 1