Membuat sumber daya Amazon ECS denganAWS CloudFormation - Amazon ECS

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 clusterCFNCluster. GantiCFNCluster dengan nama cluster tempat Anda ingin membuat layanan.

    aws ecs list-services \ --cluster CFNCluster

Pelajari selengkapnya tentang AWS CloudFormation

Untuk mempelajari selengkapnya tentang AWS CloudFormation, lihat sumber daya berikut: