まず、スタートページに行き、「Get Started」をクリックします。
「Step 1: Welcome to Amazon ECS」のページで「Custom」を選択します。「Amazon ECS Sample」とは、AWSが用意しているサンプルタスク定義を使い、「Custom」はユーザーのタスク定義を使うという意味です。
「Step 2: Create custom Task Definition」のページで、「Task Definition Name」を設定し、「Add Container Definition」をクリックします。なお、「Container Definitions」はコンテナー定義の指定で、「Volumes」はホストとコンテナーのディスクを共有するホスト側の設定です。
下記のようにタスクの定義を設定し「ADD」をクリックします。
タスクの定義を決定したら「Next Step」をクリックします。
「Step 3: Schedule Tasks」では、Serviceを作成し「Next Step」をクリックします。「Run Tasks Once 」はSchedulerによって1回は実行されるが、その後再実行は行われないコンテナーで、「Create a service」は常時実行するよう、Schedulerが監視するコンテナーです。いずれかを選択します。
「Desired number of Tasks」はTaskを実行を希望するContainer instance数です。「Create a service」を選んだ場合、Elastic Load Balancingの設定が行えます。
「Step 4: Configure Cluster」では、Clusterの設定を行い「Review&Launch」をクリックします。「Number of Instaces」はAuto Scalingに設定するContainer instance数です。「Security Ingress CIDR」はセキュリティを許可するCIDR(Classless Inter-Domain Routing)アドレスです。デフォルトは自分自身のみで、自動生成されるセキュリティグループで設定されます。
「IAM Role Information」では、「Create IAM Role」でロールを新規作成できます。ここでは、ECSのfull accessを許可するロール「ec2-ec2-role」を作成し設定しています。
「Step 5: Review」では設定内容を確認し、「Launch Instance&Run Service」をクリックします。
「AWS CloudFormation」(以下、CloudFormation)でVPNやEC2などが作成されることを確認します。
また、コンテナー作成後にブラウザーでアクセスし、正常に表示されることを確認します。
なお、「Step 3: Schedule Tasks」で設定した「Desired number of Tasks」は「Disired count」としてServiceの値に設定されます。
「Step 4: Configure Cluster」で設定した「Number of Instaces」は「Auto Scaling」に設定されます。
下記は、今回ECSでコンテナーを作成した際の設定ファイルです。
{ ""family"": ""HTTPContainer"", ""containerDefinitions"": [ { ""name"": ""HTTPCon"", ""image"": ""{ユーザー名}/docker-repo:latest"", ""cpu"": ""10"", ""memory"": ""512"", ""entryPoint"": [], ""environment"": [ { ""name"": ""Version"", ""value"": ""latest"" }, { ""name"": ""Name"", ""value"": ""HTTPCon"" } ], ""command"": [], ""portMappings"": [ { ""hostPort"": ""80"", ""containerPort"": ""80"" } ], ""volumesFrom"": [], ""links"": [], ""mountPoints"": [], ""essential"": ""true"" } ], ""volumes"": [] }
下記は、ECSでコンテナーを作成したときにCloudFormationで作成されたインスタンスの一覧です。
Logical ID | Physical ID | Type |
---|---|---|
InternetGateway | igw-47b84622 | AWS::EC2::InternetGateway |
Vpc | vpc-0fe33d6a | AWS::EC2::VPC |
ElbSecurityGroup | sg-e819888d | AWS::EC2::SecurityGroup |
PubSubnetAz2 | subnet-22379855 | AWS::EC2::Subnet |
AttachGateway | EC2Co-Attac-1NG7CWOTF0XZ7 | AWS::EC2::VPCGatewayAttachment |
PubSubnetAz1 | subnet-6c844435 | AWS::EC2::Subnet |
RouteViaIgw | rtb-9042e1f5 | AWS::EC2::RouteTable |
PublicRouteViaIgw | EC2Co-Publi-70O78UUHSBC2 | AWS::EC2::Route |
PubSubnet2RouteTableAssociation | rtbassoc-bbcb63de | AWS::EC2::SubnetRouteTableAssociation |
PubSubnet1RouteTableAssociation | rtbassoc-bacb63df | AWS::EC2::SubnetRouteTableAssociation |
EcsElasticLoadBalancer | EC2Contai-EcsElast-198KJGQ2I7790 | AWS::ElasticLoadBalancing::LoadBalancer |
EcsSecurityGroup | sg-f6198893 | AWS::EC2::SecurityGroup |
EcsInstanceLc | EC2ContainerService-default-a19f4397-c985-4df6-ba15-e0b8f68d38e9-EcsInstanceLc-XY0G9L02YZK2 | AWS::Auto Scaling::LaunchConfiguration |
EcsInstanceAsg | EC2ContainerService-default-a19f4397-c985-4df6-ba15-e0b8f68d38e9-EcsInstanceAsg-8UWCIE3HITI | AWS::Auto Scaling::Auto ScalingGroup |
Copyright © ITmedia, Inc. All Rights Reserved.