Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat sumber daya Amazon ECS denganAWS CloudFormation
Amazon ECS terintegrasi denganAWS CloudFormation, layanan yang dapat Anda gunakan untuk memodelkan dan menyiapkanAWS sumber daya dengan templat yang Anda tentukan. Dengan cara ini, Anda dapat lebih cepat dalam membuat dan mengelola sumber daya dan infrastruktur Anda. Dengan menggunakanAWS CloudFormation, Anda dapat membuat templat yang menjelaskan semuaAWS sumber daya yang Anda inginkan, seperti klaster Amazon ECS tertentu. Kemudian,AWS CloudFormation mengurus penyediaan dan konfigurasi sumber daya tersebut untuk Anda.
Saat Anda menggunakanAWS CloudFormation, Anda dapat menggunakan kembali templat Anda untuk menyiapkan sumber daya Amazon ECS Anda dengan cara yang konsisten dan berulang kali. Anda menjelaskan sumber daya Anda satu kali, lalu sediakan sumber daya yang sama lagi di beberapaAkun AWS danWilayah AWS.
Amazon ECS danAWS CloudFormation templat
Untuk menyediakan dan mengonfigurasi sumber daya untuk Amazon ECS dan layanan terkait, pastikan Anda terbiasa dengan AWS CloudFormationtemplat. AWS CloudFormationTemplat adalah file teks dalam format JSON atau YAML yang menggambarkan sumber daya yang ingin Anda sediakan diAWS CloudFormation tumpukan Anda. Jika Anda tidak terbiasa dengan format JSON atau YAM, atau keduanya, Anda dapat menggunakanAWS CloudFormation Designer untuk mulai menggunakanAWS CloudFormation templat. Untuk informasi selengkapnya, lihat Apa yang dimaksud dengan AWS CloudFormation Designer? dalam Panduan Pengguna AWS CloudFormation.
Amazon ECS mendukung pembuatan klaster, definisi tugas, layanan, dan set tugasAWS CloudFormation. Contoh berikut menunjukkan cara membuat sumber daya dengan templat ini menggunakanAWS CLI. Anda juga dapat membuat sumber daya ini menggunakanAWS CloudFormation konsol. Untuk informasi selengkapnya tentang cara membuat sumber daya menggunakanAWS CloudFormation konsol, lihat PanduanAWS CloudFormation Pengguna.
Contoh template
Membuat sumber daya Amazon ECS menggunakan tumpukan terpisah
Contoh berikut ini menunjukkan cara membuat sumber daya Amazon ECS dengan menggunakan tumpukan terpisah untuk setiap sumber daya.
Ketentuan tugas Amazon ECS
Anda dapat menggunakan templat berikut untuk membuat tugas Linux Fargate.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "taskdefinition": { "Type": "AWS::ECS::TaskDefinition", "Properties": { "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::
aws_account_id
:role/ecsTaskExecutionRole", "family": "fargate-task-definition-cfn", "memory":"512", "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "runtimePlatform": { "OperatingSystemFamily": "LINUX" } } } } }
YAKL
AWSTemplateFormatVersion: 2010-09-09 Resources: taskdefinition: Type: 'AWS::ECS::TaskDefinition' Properties: 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::
aws_account_id
:role/ecsTaskExecutionRole' family: fargate-task-definition-cfn memory: '512' networkMode: awsvpc requiresCompatibilities: - FARGATE runtimePlatform: OperatingSystemFamily: LINUX
Klaster Amazon ECS
Anda dapat menggunakan templat berikut untuk membuat klaster kosong.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "ECSCluster": { "Type": "AWS::ECS::Cluster", "Properties": { "ClusterName": "MyEmptyCluster" } } } }
YAKL
AWSTemplateFormatVersion: 2010-09-09 Resources: ECSCluster: Type: 'AWS::ECS::Cluster' Properties: ClusterName: MyEmptyCluster
Membuat beberapa sumber daya Amazon ECS dalam satu tumpukan
Anda dapat menggunakan contoh template berikut untuk membuat beberapa sumber daya Amazon ECS dalam satu tumpukan. Template membuat klaster Amazon ECS yang diberi namaCFNCluster
. Cluster berisi definisi tugas Linux Fargate. Template juga membuat layanan yang bernamacfn-service
yang meluncurkan dan mempertahankan definisi tugas Fargate. Sebelum Anda menggunakan perintah ini, pastikan bahwa subnet dan ID grup keamanan di layananNetworkConfiguration
semuanya milik VPC yang sama.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "ECSCluster": { "Type": "AWS::ECS::Cluster", "Properties": { "ClusterName": "CFNCluster" } }, "taskdefinition": { "Type": "AWS::ECS::TaskDefinition", "Properties": { "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::
aws_account_id
:role/ecsTaskExecutionRole", "family": "task-definition-cfn", "memory": "512", "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "runtimePlatform": { "OperatingSystemFamily": "LINUX" } } }, "ECSService": { "Type": "AWS::ECS::Service", "Properties": { "ServiceName": "cfn-service", "Cluster": { "Ref": "ECSCluster" }, "DesiredCount": 1, "LaunchType": "FARGATE", "NetworkConfiguration": { "AwsvpcConfiguration": { "AssignPublicIp": "ENABLED", "SecurityGroups": [ "sg-abcdef01234567890
" ], "Subnets": [ "subnet-abcdef01234567890
" ] } }, "TaskDefinition": { "Ref": "taskdefinition" } } } } }
YAKL
AWSTemplateFormatVersion: 2010-09-09 Resources: ECSCluster: Type: 'AWS::ECS::Cluster' Properties: ClusterName: CFNCluster taskdefinition: Type: 'AWS::ECS::TaskDefinition' Properties: 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::
aws_account_id
:role/ecsTaskExecutionRole' family: task-definition-cfn memory: '512' networkMode: awsvpc requiresCompatibilities: - FARGATE runtimePlatform: OperatingSystemFamily: LINUX ECSService: Type: 'AWS::ECS::Service' Properties: ServiceName: cfn-service Cluster: !Ref ECSCluster DesiredCount: 1 LaunchType: FARGATE NetworkConfiguration: AwsvpcConfiguration: AssignPublicIp: ENABLED SecurityGroups: -sg-abcdef01234567890
Subnets: -subnet-abcdef01234567890
TaskDefinition: !Ref taskdefinition
MenggunakanAWS CLI untuk membuat sumber daya dari template
Perintah berikut membuat tumpukan yang bernamaecs-stack
menggunakan file tubuh template yang bernamaecs-template-body.json
. Pastikan bahwa file tubuh template dalam format JSON atau YAKL. Lokasi file ditentukan dalam--template-body
parameter. Dalam hal ini, file tubuh template terletak di direktori saat ini.
aws cloudformation create-stack \ --stack-name
ecs-stack
\ --template-body file://ecs-template-body.json
Untuk memastikan bahwa sumber daya dibuat dengan benar, periksa konsol Amazon ECS atau gunakan perintah berikut:
-
Perintah berikut mencantumkan semua definisi tugas.
aws ecs list-task-definitions
-
Perintah berikut mencantumkan semua cluster.
aws ecs list-clusters
-
Perintah berikut mencantumkan semua layanan yang didefinisikan dalam cluster
. GantiCFNCluster
dengan nama cluster tempat Anda ingin membuat layanan.CFNCluster
aws ecs list-services \ --cluster
CFNCluster
Pelajari selengkapnya tentang AWS CloudFormation
Untuk mempelajari selengkapnya tentang AWS CloudFormation, lihat sumber daya berikut: