Membuat sumber daya Amazon ECS menggunakan konsol AWS CloudFormation - Amazon Elastic Container Service

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 menggunakan konsol AWS CloudFormation

Salah satu cara untuk menggunakan Amazon ECS AWS CloudFormation adalah melalui. AWS Management Console Di sini Anda dapat membuat AWS CloudFormation tumpukan untuk komponen Amazon ECS seperti definisi tugas, kluster, dan layanan dan menerapkannya langsung dari konsol. Tutorial berikut menunjukkan bagaimana Anda dapat menggunakan AWS CloudFormation konsol untuk membuat layanan Amazon ECS, definisi tugas, dan cluster.

Prasyarat

Tutorial ini mengasumsikan bahwa prasyarat berikut telah selesai.

Langkah 1: Buat template tumpukan

Gunakan langkah-langkah berikut untuk membuat template AWS CloudFormation tumpukan untuk layanan Amazon ECS dan sumber daya terkait lainnya.

  1. Menggunakan editor teks pilihan Anda, buat file bernamaecs-tutorial-template.yaml.

  2. Dalam ecs-tutorial-template.yaml file, tempel template berikut dan simpan perubahannya.

    AWSTemplateFormatVersion: 2010-09-09 Description: A template that deploys an application that is built on an Apache web server Docker image by creating an Amazon ECS cluster, task definition, and service. The template also creates networking and logging resources, and an Amazon ECS task execution role. Parameters: ClusterName: Type: String Default: CFNCluster Description: Name of the ECS Cluster TaskFamily: Type: String Default: task-definition-cfn Description: Family name for the Task Definition ServiceName: Type: String Default: cfn-service Description: Name of the ECS Service ContainerImage: Type: String Default: public.ecr.aws/docker/library/httpd:2.4 Description: Container image to use for the task TaskCpu: Type: Number Default: 256 AllowedValues: [256, 512, 1024, 2048, 4096] Description: CPU units for the task TaskMemory: Type: Number Default: 512 AllowedValues: [512, 1024, 2048, 4096, 8192, 16384] Description: Memory (in MiB) for the task DesiredCount: Type: Number Default: 1 Description: Desired number of tasks to run LogGroupName: Type: String Default: /ecs/fargate-task-definition Description: CloudWatch Log Group name VpcCidr: Type: String Default: 10.0.0.0/16 Description: CIDR block for the VPC PublicSubnet1Cidr: Type: String Default: 10.0.0.0/24 Description: CIDR block for public subnet 1 PublicSubnet2Cidr: Type: String Default: 10.0.1.0/24 Description: CIDR block for public subnet 2 Resources: # VPC and Networking Resources VPC: Type: AWS::EC2::VPC Properties: CidrBlock: !Ref VpcCidr EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: !Sub ${AWS::StackName}-VPC InternetGateway: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Name Value: !Sub ${AWS::StackName}-IGW InternetGatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: InternetGatewayId: !Ref InternetGateway VpcId: !Ref VPC PublicSubnet1: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [0, !GetAZs ''] CidrBlock: !Ref PublicSubnet1Cidr MapPublicIpOnLaunch: true Tags: - Key: Name Value: !Sub ${AWS::StackName}-PublicSubnet1 PublicSubnet2: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [1, !GetAZs ''] CidrBlock: !Ref PublicSubnet2Cidr MapPublicIpOnLaunch: true Tags: - Key: Name Value: !Sub ${AWS::StackName}-PublicSubnet2 PublicRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub ${AWS::StackName}-PublicRouteTable DefaultPublicRoute: Type: AWS::EC2::Route DependsOn: InternetGatewayAttachment Properties: RouteTableId: !Ref PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGateway PublicSubnet1RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet1 PublicSubnet2RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet2 # Security Group ECSSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Security group for ECS tasks VpcId: !Ref VPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 0.0.0.0/0 # IAM Roles ECSTaskExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: ecs-tasks.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy # CloudWatch Logs TaskLogGroup: Type: AWS::Logs::LogGroup DeletionPolicy: Retain UpdateReplacePolicy: Retain Properties: LogGroupName: !Ref LogGroupName RetentionInDays: 30 # ECS Resources ECSCluster: Type: AWS::ECS::Cluster Properties: ClusterName: !Ref ClusterName ECSTaskDefinition: 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"s EntryPoint: - sh - '-c' Essential: true Image: !Ref ContainerImage LogConfiguration: LogDriver: awslogs Options: mode: non-blocking max-buffer-size: 25m awslogs-create-group: 'true' awslogs-group: !Ref LogGroupName awslogs-region: !Ref 'AWS::Region' awslogs-stream-prefix: ecs Name: sample-fargate-app PortMappings: - ContainerPort: 80 HostPort: 80 Protocol: tcp Cpu: !Ref TaskCpu ExecutionRoleArn: !GetAtt ECSTaskExecutionRole.Arn Family: !Ref TaskFamily Memory: !Ref TaskMemory NetworkMode: awsvpc RequiresCompatibilities: - FARGATE RuntimePlatform: OperatingSystemFamily: LINUX ECSService: Type: AWS::ECS::Service DependsOn: - PublicSubnet1RouteTableAssociation - PublicSubnet2RouteTableAssociation Properties: ServiceName: !Ref ServiceName Cluster: !Ref ECSCluster DesiredCount: !Ref DesiredCount LaunchType: FARGATE NetworkConfiguration: AwsvpcConfiguration: AssignPublicIp: ENABLED SecurityGroups: - !Ref ECSSecurityGroup Subnets: - !Ref PublicSubnet1 - !Ref PublicSubnet2 TaskDefinition: !Ref ECSTaskDefinition Outputs: ClusterName: Description: The name of the ECS cluster Value: !Ref ECSCluster TaskDefinitionArn: Description: The ARN of the task definition Value: !Ref ECSTaskDefinition ServiceName: Description: The name of the ECS service Value: !Ref ECSService VpcId: Description: The ID of the VPC Value: !Ref VPC PublicSubnet1: Description: The ID of public subnet 1 Value: !Ref PublicSubnet1 PublicSubnet2: Description: The ID of public subnet 2 Value: !Ref PublicSubnet2 SecurityGroup: Description: The ID of the security group Value: !Ref ECSSecurityGroup ExecutionRoleArn: Description: The ARN of the task execution role Value: !GetAtt ECSTaskExecutionRole.Arn

Langkah 2: Buat tumpukan untuk sumber daya Amazon ECS

Setelah membuat file untuk template, Anda dapat mengikuti langkah-langkah ini untuk membuat tumpukan dengan template dengan menggunakan AWS CloudFormation konsol.

  1. Masuk ke AWS Management Console dan buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pada halaman Stacks, di sudut kanan atas, pilih Buat tumpukan, lalu pilih dengan sumber daya baru (standar).

  3. Pilih Pilih template yang sudah ada.

  4. Pilih Unggah file templat lalu pilih Pilih file untuk memilih ecs-tutorial-template file.

    Setelah file diunggah ke bucket Amazon S3, Anda dapat memilih View in Infrastructure Composer untuk memvisualisasikan template di Infrastructure Composer. Untuk informasi selengkapnya tentang AWS CloudFormation template dan Infrastructure Composer, lihat Membuat template secara visual dengan Infrastructure Composer di AWS CloudFormation Panduan Pengguna.

  5. Pilih Berikutnya.

  6. Pada halaman Tentukan detail tumpukan, di bawah nama Stack, berikan nama berikut untuk tumpukan:ecs-tutorial-stack. Biarkan semua nilai untuk parameter di bawah Parameter sebagai default, lalu pilih Berikutnya.

  7. Pada halaman Configure stack options, di bawah Capabilities, pilih kotak centang untuk mengakui AWS CloudFormation pembuatan resource IAM. Pengakuan ini diperlukan untuk membuat peran eksekusi tugas Amazon ECS seperti yang didefinisikan dalam template. Biarkan pengaturan lainnya sebagai default dan pilih Berikutnya.

  8. Tinjau detail tumpukan pada halaman Tinjauan dan buat lalu pilih Kirim untuk memulai pembuatan tumpukan.

Langkah 3: Verifikasi

Gunakan langkah-langkah berikut untuk memverifikasi pembuatan sumber daya Amazon ECS menggunakan templat yang disediakan.

  1. Masuk ke AWS Management Console dan buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pada halaman Stacks, pilih ecs-tutorial-stack.

  3. Pilih tab Acara. Jika status acara mengatakanCREATE_IN_PROGRESS, tunggu sampai pembuatan selesai dan status berubah menjadi. CREATE_COMPLETE

  4. Setelah status acara beralih keCREATE_COMPLETE, pilih tab Sumber Daya. Anda akan melihat sumber daya dengan ID LogisECSCluster,ECSTaskDefinition, dan ECSService masing-masing.

  5. Untuk memverifikasi pembuatan klaster Amazon ECS, pilih ID Fisik yang terkait dengannyaECSCluster. Anda akan diarahkan ke konsol Amazon ECS di mana Anda dapat melihat cluster yang dibuat dipanggil. CFNCluster

  6. Untuk memverifikasi pembuatan layanan Amazon ECS, pilih ID Fisik yang terkait dengannyaECSService. Anda akan diarahkan ke konsol Amazon ECS di mana Anda dapat melihat layanan yang disebut cfn-service yang dibuat di cluster. cfnCluster

  7. Untuk memverifikasi pembuatan definisi tugas Amazon ECS, pilih ID Fisik yang terkait dengannyaECSTaskDefinition. Anda akan diarahkan ke konsol Amazon ECS di mana Anda dapat melihat revisi definisi tugas dengan nama. task-definition-cfn

Langkah 4: Bersihkan Sumber Daya

Untuk membersihkan sumber daya dan menghindari biaya lebih lanjut, ikuti langkah-langkah ini.

  1. Masuk ke AWS Management Console dan buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pada halaman Stacks, pilih ecs-tutorial-stack.

  3. Pilih Hapus.

  4. Saat diminta konfirmasi, pilih Hapus lagi.

  5. Pilih tab Acara. Status untuk ecs-tutorial-stack perubahan pada DELETE_IN_PROGRESS dan kemudian ke DELETE_COMPLETE setelah sumber daya dihapus atau dideregistrasi. Penghapusan memakan waktu beberapa menit.

  6. Pilih tab Sumber Daya. Anda sekarang akan melihat daftar ID Logis dengan Status diperbarui ke DELETE_COMPLETE.