

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Contoh definisi tugas Amazon ECS
<a name="example_task_definitions"></a>

Anda dapat menyalin contoh dan cuplikan untuk mulai membuat definisi tugas Anda sendiri. 

Anda dapat menyalin contoh, lalu menempelkannya saat Anda menggunakan opsi **Konfigurasi melalui JSON** di konsol. Pastikan untuk menyesuaikan contoh, seperti menggunakan ID akun Anda. Anda dapat menyertakan cuplikan dalam definisi tugas JSON Anda. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md) dan [Parameter definisi tugas Amazon ECS untuk Fargate](task_definition_parameters.md).

Untuk contoh definisi tugas lainnya, lihat [AWS Contoh Definisi Tugas](https://github.com/aws-samples/aws-containers-task-definitions) pada GitHub.

**Topics**
+ [Peladen Web](#example_task_definition-webserver)
+ [`splunk`driver log](#example_task_definition-splunk)
+ [`fluentd`driver log](#example_task_definition-fluentd)
+ [`gelf`driver log](#example_task_definition-gelf)
+ [Beban kerja pada instance eksternal](#ecs-anywhere-runtask)
+ [Peran IAM definisi gambar dan tugas Amazon ECR](#example_task_definition-iam)
+ [Entrypoint dengan perintah](#example_task_definition-ping)
+ [Dependensi kontainer](#example_task_definition-containerdependency)
+ [Volume dalam definisi tugas](#volume_sample_task_defs)
+ [Ketentuan tugas sampel Windows](#windows_sample_task_defs)

## Peladen Web
<a name="example_task_definition-webserver"></a>

Berikut ini adalah contoh definisi tugas menggunakan wadah Linux di Fargate yang menyiapkan server web:

```
{
   "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": "public.ecr.aws/docker/library/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",
   "runtimePlatform": {
        "operatingSystemFamily": "LINUX"
    },
   "requiresCompatibilities": [ 
       "FARGATE" 
    ]
}
```

Berikut ini adalah contoh definisi tugas menggunakan wadah Windows di Fargate yang menyiapkan server web:

```
{
    "containerDefinitions": [
        {
            "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<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>'; C:\\ServiceMonitor.exe w3svc"],
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "essential": true,
            "cpu": 2048,
            "memory": 4096,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "name": "sample_windows_app",
            "portMappings": [
                {
                    "hostPort": 80,
                    "containerPort": 80,
                    "protocol": "tcp"
                }
            ]
        }
    ],
    "memory": "4096",
    "cpu": "2048",
    "networkMode": "awsvpc",
    "family": "windows-simple-iis-2019-core",
    "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
    "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
    "requiresCompatibilities": ["FARGATE"]
}
```

## `splunk`driver log
<a name="example_task_definition-splunk"></a>

Cuplikan berikut menunjukkan cara menggunakan driver `splunk` log dalam definisi tugas yang mengirimkan log ke layanan jarak jauh. Parameter token Splunk ditetapkan sebagai opsi rahasia karena dapat diperlakukan sebagai data sensitif. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).

```
"containerDefinitions": [{
		"logConfiguration": {
			"logDriver": "splunk",
			"options": {
				"splunk-url": "https://cloud.splunk.com:8080",
				"tag": "tag_name",
			},
			"secretOptions": [{
				"name": "splunk-token",
				"valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:splunk-token-KnrBkD"
}],
```

## `fluentd`driver log
<a name="example_task_definition-fluentd"></a>

Cuplikan berikut menunjukkan cara menggunakan driver `fluentd` log dalam definisi tugas yang mengirimkan log ke layanan jarak jauh. Nilai `fluentd-address` ditetapkan sebagai opsi rahasia karena dapat diperlakukan sebagai data sensitif. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).

```
"containerDefinitions": [{
	"logConfiguration": {
		"logDriver": "fluentd",
		"options": {
			"tag": "fluentd demo"
		},
		"secretOptions": [{
			"name": "fluentd-address",
			"valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:fluentd-address-KnrBkD"
		}]
	},
	"entryPoint": [],
	"portMappings": [{
             "hostPort": 80,
             "protocol": "tcp",
             "containerPort": 80
             },
             {
		"hostPort": 24224,
		"protocol": "tcp",
		"containerPort": 24224
	}]
}],
```

## `gelf`driver log
<a name="example_task_definition-gelf"></a>

Cuplikan berikut menunjukkan cara menggunakan driver `gelf` log dalam definisi tugas yang mengirimkan log ke host jarak jauh yang menjalankan Logstash yang mengambil log Gelf sebagai input. Untuk informasi selengkapnya, lihat [logConfiguration](task_definition_parameters.md#ContainerDefinition-logConfiguration).

```
"containerDefinitions": [{
	"logConfiguration": {
		"logDriver": "gelf",
		"options": {
			"gelf-address": "udp://logstash-service-address:5000",
			"tag": "gelf task demo"
		}
	},
	"entryPoint": [],
	"portMappings": [{
			"hostPort": 5000,
			"protocol": "udp",
			"containerPort": 5000
		},
		{
			"hostPort": 5000,
			"protocol": "tcp",
			"containerPort": 5000
		}
	]
}],
```

## Beban kerja pada instance eksternal
<a name="ecs-anywhere-runtask"></a>

Saat mendaftarkan definisi tugas Amazon ECS, gunakan `requiresCompatibilities` parameter dan tentukan `EXTERNAL` yang memvalidasi bahwa definisi tugas kompatibel untuk digunakan saat menjalankan beban kerja Amazon ECS pada instans eksternal Anda. Jika Anda menggunakan konsol untuk mendaftarkan definisi tugas, Anda harus menggunakan editor JSON. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**penting**  
Jika tugas Anda memerlukan peran IAM eksekusi tugas, pastikan itu ditentukan dalam definisi tugas. 

Ketika Anda men-deploy beban kerja, gunakan tipe peluncuran `EXTERNAL` ketika membuat layanan atau menjalankan tugas mandiri Anda.

Berikut ini merupakan ketentuan tugas contoh.

------
#### [ Linux ]

```
{
	"requiresCompatibilities": [
		"EXTERNAL"
	],
	"containerDefinitions": [{
		"name": "nginx",
		"image": "public.ecr.aws/nginx/nginx:latest",
		"memory": 256,
		"cpu": 256,
		"essential": true,
		"portMappings": [{
			"containerPort": 80,
			"hostPort": 8080,
			"protocol": "tcp"
		}]
	}],
	"networkMode": "bridge",
	"family": "nginx"
}
```

------
#### [ Windows ]

```
{
	"requiresCompatibilities": [
		"EXTERNAL"
	],
	"containerDefinitions": [{
		"name": "windows-container",
		"image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
		"memory": 256,
		"cpu": 512,
		"essential": true,
		"portMappings": [{
			"containerPort": 80,
			"hostPort": 8080,
			"protocol": "tcp"
		}]
	}],
	"networkMode": "bridge",
	"family": "windows-container"
}
```

------

## Peran IAM definisi gambar dan tugas Amazon ECR
<a name="example_task_definition-iam"></a>

Cuplikan berikut menggunakan gambar Amazon ECR yang disebut `aws-nodejs-sample` dengan `v1` tag dari registri. `123456789012.dkr.ecr.us-west-2.amazonaws.com` Wadah dalam tugas ini mewarisi izin IAM dari peran. `arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole` Untuk informasi selengkapnya, lihat [Peran IAM tugas Amazon ECS](task-iam-roles.md).

```
{
    "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"
}
```

## Entrypoint dengan perintah
<a name="example_task_definition-ping"></a>

Cuplikan berikut menunjukkan sintaks untuk wadah Docker yang menggunakan titik masuk dan argumen perintah. Kontainer ini menge-ping `example.com` empat kali dan kemudian keluar.

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

## Dependensi kontainer
<a name="example_task_definition-containerdependency"></a>

Cuplikan ini menunjukkan sintaks untuk definisi tugas dengan beberapa kontainer di mana dependensi kontainer ditentukan. Dalam definisi tugas berikut, `envoy` wadah harus mencapai status sehat, ditentukan oleh parameter pemeriksaan kesehatan wadah yang diperlukan, sebelum `app` wadah dimulai. Untuk informasi selengkapnya, lihat [Dependensi kontainer](task_definition_parameters.md#container_definition_dependson).

```
{
  "family": "appmesh-gateway",
  "runtimePlatform": {
        "operatingSystemFamily": "LINUX"
  },
  "proxyConfiguration":{
      "type": "APPMESH",
      "containerName": "envoy",
      "properties": [
          {
              "name": "IgnoredUID",
              "value": "1337"
          },
          {
              "name": "ProxyIngressPort",
              "value": "15000"
          },
          {
              "name": "ProxyEgressPort",
              "value": "15001"
          },
          {
              "name": "AppPorts",
              "value": "9080"
          },
          {
              "name": "EgressIgnoredIPs",
              "value": "169.254.170.2,169.254.169.254"
          }
      ]
  },
  "containerDefinitions": [
    {
      "name": "app",
      "image": "application_image",
      "portMappings": [
        {
          "containerPort": 9080,
          "hostPort": 9080,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "dependsOn": [
        {
          "containerName": "envoy",
          "condition": "HEALTHY"
        }
      ]
    },
    {
      "name": "envoy",
      "image": "840364872350.dkr.ecr.region-code.amazonaws.com/aws-appmesh-envoy:v1.15.1.0-prod",
      "essential": true,
      "environment": [
        {
          "name": "APPMESH_VIRTUAL_NODE_NAME",
          "value": "mesh/meshName/virtualNode/virtualNodeName"
        },
        {
          "name": "ENVOY_LOG_LEVEL",
          "value": "info"
        }
      ],
      "healthCheck": {
        "command": [
          "CMD-SHELL",
          "echo hello"
        ],
        "interval": 5,
        "timeout": 2,
        "retries": 3
      }    
    }
  ],
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "networkMode": "awsvpc"
}
```

## Volume dalam definisi tugas
<a name="volume_sample_task_defs"></a>

Gunakan yang berikut ini untuk memahami cara menentukan volume dalam tugas.
+ Untuk informasi tentang cara mengonfigurasi volume Amazon EBS, lihat[Tentukan konfigurasi volume Amazon EBS pada penerapan Amazon ECS](configure-ebs-volume.md).
+ Untuk informasi tentang cara mengonfigurasi volume Amazon EFS, lihat[Mengonfigurasi sistem file Amazon EFS untuk Amazon ECS menggunakan konsol](tutorial-efs-volumes.md).
+ Untuk informasi tentang cara mengkonfigurasi volume FSx untuk Windows File Server, lihat[Pelajari cara mengonfigurasi FSx sistem file Windows File Server untuk Amazon ECS](tutorial-wfsx-volumes.md).
+ Untuk informasi tentang cara mengonfigurasi volume Docker, lihat[Contoh volume Docker untuk Amazon ECS](docker-volume-examples.md).
+ Untuk informasi tentang cara mengonfigurasi bind mount, lihat[Contoh Bind mount untuk Amazon ECS](bind-mount-examples.md).

## Ketentuan tugas sampel Windows
<a name="windows_sample_task_defs"></a>

Berikut ini adalah contoh definisi tugas untuk membantu Anda memulai dengan wadah Windows di Amazon ECS.

**Example Aplikasi Contoh Konsol Amazon ECS untuk Windows**  
Definisi tugas berikut adalah aplikasi sampel konsol Amazon ECS yang diproduksi di wizard yang dijalankan pertama untuk Amazon ECS; itu telah di-porting untuk menggunakan gambar wadah Windows. `microsoft/iis`  

```
{
  "family": "windows-simple-iis",
  "containerDefinitions": [
    {
      "name": "windows_sample_app",
      "image": "mcr.microsoft.com/windows/servercore/iis",
      "cpu": 1024,
      "entryPoint":["powershell", "-Command"],
      "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<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>'; C:\\ServiceMonitor.exe w3svc"],
      "portMappings": [
        {
          "protocol": "tcp",
          "containerPort": 80
        }
      ],
      "memory": 1024,
      "essential": true
    }
  ],
  "networkMode": "awsvpc",
  "memory": "1024",
  "cpu": "1024"
}
```