Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

タスク定義の例

以下に示しているいくつかのタスク定義の例は、独自のタスク定義の作成を開始するために使用できます。詳細については、「タスク定義パラメータ」および「タスク定義の作成」を参照してください。

トピック

    例: ウェブサーバー

    以下は、ウェブサーバーをセットアップする Fargate 起動タイプを使用するタスク定義の例です。

    { "containerDefinitions": [ { "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "entryPoint": [ "sh", "-c" ], "essential": true, "image": "httpd:2.4", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample-fargate-app", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ] } ], "cpu": "256", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "family": "fargate-task-definition", "memory": "512", "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ] }

    例: WordPress と MySQL

    以下の例では、リンクする WordPress コンテナと MySQL コンテナを指定します。この WordPress コンテナはホストポート 80 に対してコンテナポート 80 を公開します。WordPress コンテナにウェブブラウザからアクセスできるようにするには、コンテナインスタンスのセキュリティグループでポート 80 を開く必要があります。

    WordPress コンテナの詳細については、公式の WordPress Docker Hub リポジトリ (https://registry.hub.docker.com/_/wordpress/) を参照してください。MySQL コンテナの詳細については、公式の MySQL Docker Hub リポジトリ (https://registry.hub.docker.com/_/mysql/) を参照してください。

    { "containerDefinitions": [ { "name": "wordpress", "links": [ "mysql" ], "image": "wordpress", "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "memory": 500, "cpu": 10 }, { "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "password" } ], "name": "mysql", "image": "mysql", "cpu": 10, "memory": 500, "essential": true } ], "family": "hello_world" }

    重要

    ロードバランサーでこのタスク定義を使用する場合は、コンテナが開始された直後に、コンテナインスタンスのウェブインターフェイスを使用して WordPress セットアップのインストールを完了する必要があります。ロードバランサーのヘルスチェック ping では、サーバーからの応答が 200 であると正常と見なしますが、WordPress はインストールが完了するまで 301 を返します。ロードバランサーのヘルスチェックが失敗した場合、ロードバランサーはそのインスタンスを登録解除します。

    例: awslogs ロギングドライバー

    以下の例では、Fargate 起動タイプを使用するタスク定義で awslogs ロギングドライバーを使用する方法を示しています。そのログは、nginx コンテナより ecs-log-streaming リージョンの us-west-2 ロググループに送信されます。詳細については、「awslogs ログドライバーを使用する」を参照してください。

    { "containerDefinitions": [ { "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "essential": true, "name": "nginx-container", "image": "nginx", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "ecs-log-streaming", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "fargate-task-1" } }, "cpu": 0 } ], "networkMode": "awsvpc", "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", "memory": "2048", "cpu": "1024", "requiresCompatibilities": [ "FARGATE" ], "family": "example_task_1" }

    例: Amazon ECR イメージとタスク定義 IAM ロール

    以下の例では、aws-nodejs-sample という名前の Amazon ECR イメージで、123456789012.dkr.ecr.us-west-2.amazonaws.com レジストリの v1 タグを使用しています。このタスクのコンテナは、arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole ロールから IAM アクセス許可を継承します。詳細については、「タスク用の IAM ロール」を参照してください。

    { "containerDefinitions": [ { "name": "sample-app", "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/aws-nodejs-sample:v1", "memory": 200, "cpu": 10, "essential": true } ], "family": "example_task_3", "taskRoleArn": "arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole" }

    例: コマンドを使用したエントリポイント

    以下の例では、エントリポイントとコマンド引数を使用する Docker コンテナの構文を示しています。このコンテナは google.com に対して ping を 508 回実行してから終了します。

    { "containerDefinitions": [ { "memory": 32, "essential": true, "entryPoint": [ "ping" ], "name": "alpine_ping", "readonlyRootFilesystem": true, "image": "alpine:3.4", "command": [ "-c", "4", "google.com" ], "cpu": 16 } ], "family": "example_task_2" }