Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon ECS-Ressourcen mithilfe der AWS CloudFormation Konsole erstellen
Eine Möglichkeit, Amazon ECS mit zu verwenden, AWS CloudFormation ist die AWS Management Console. Hier können Sie Ihre AWS CloudFormation Stacks für Amazon ECS-Komponenten wie Aufgabendefinitionen, Cluster und Services erstellen und sie direkt von der Konsole aus bereitstellen. Das folgende Tutorial zeigt, wie Sie die AWS CloudFormation Konsole verwenden können, um einen Amazon ECS-Service, eine Aufgabendefinition und einen Cluster zu erstellen.
Voraussetzungen
In diesem Tutorial wird davon ausgegangen, dass die folgenden Voraussetzungen erfüllt sind.
-
Die Schritte in Einrichtung für die Verwendung von Amazon ECS wurden ausgeführt.
-
Ihr IAM-Benutzer verfügt über die erforderlichen Berechtigungen, die im Beispiel für eine AmazonECS_ FullAccess IAM-Richtlinie angegeben sind.
Schritt 1: Erstellen Sie eine Stack-Vorlage
Gehen Sie wie folgt vor, um eine AWS CloudFormation Stack-Vorlage für einen Amazon ECS-Service und andere verwandte Ressourcen zu erstellen.
-
Erstellen Sie mit einem Texteditor Ihrer Wahl eine Datei mit dem Namen
ecs-tutorial-template.yaml
. -
Fügen Sie die folgende Vorlage in die
ecs-tutorial-template.yaml
Datei ein und speichern Sie die Änderungen.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
Schritt 2: Erstellen Sie einen Stack für Amazon ECS-Ressourcen
Nachdem Sie eine Datei für die Vorlage erstellt haben, können Sie die folgenden Schritte ausführen, um mithilfe der AWS CloudFormation Konsole einen Stack mit der Vorlage zu erstellen.
Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie auf der Seite Stacks in der oberen rechten Ecke die Option Stack erstellen und dann mit neuen Ressourcen (Standard) aus.
-
Wählen Sie „Eine vorhandene Vorlage auswählen“.
-
Wählen Sie „Eine Vorlagendatei hochladen“ und anschließend „Datei auswählen“, um die
ecs-tutorial-template
Datei auszuwählen.Nachdem die Datei in einen Amazon S3 S3-Bucket hochgeladen wurde, können Sie In Infrastructure Composer anzeigen wählen, um die Vorlage in Infrastructure Composer zu visualisieren. Weitere Informationen zu AWS CloudFormation Vorlagen und Infrastructure Composer finden Sie im AWS CloudFormation Benutzerhandbuch unter Visuelles Erstellen von Vorlagen mit Infrastructure Composer.
-
Wählen Sie Weiter aus.
-
Geben Sie auf der Seite Stack-Details angeben unter Stackname den folgenden Namen für den Stack ein:
ecs-tutorial-stack
. Behalten Sie alle Werte für Parameter unter Parameter als Standardwerte bei und wählen Sie dann Weiter. -
Aktivieren Sie auf der Seite „Stack-Optionen konfigurieren“ unter Funktionen das Kontrollkästchen, um die AWS CloudFormation Erstellung von IAM-Ressourcen zu bestätigen. Diese Bestätigung ist erforderlich, um die Amazon ECS-Aufgabenausführungsrolle, wie in der Vorlage definiert, zu erstellen. Behalten Sie die anderen Einstellungen als Standardeinstellungen bei und wählen Sie Weiter.
-
Überprüfen Sie die Stack-Details auf der Seite Überprüfen und erstellen und wählen Sie dann Submit, um die Stack-Erstellung zu starten.
Schritt 3: Überprüfen
Gehen Sie wie folgt vor, um die Erstellung von Amazon ECS-Ressourcen anhand der bereitgestellten Vorlage zu überprüfen.
Melden Sie sich bei https://console.aws.amazon.com/cloudformation
an AWS Management Console und öffnen Sie die AWS CloudFormation Konsole. -
Wählen Sie auf der Seite Stacks die Option. ecs-tutorial-stack
-
Wählen Sie den Tab „Ereignisse“. Wenn der Status des Ereignisses wie folgt lautet
CREATE_IN_PROGRESS
, warten Sie, bis die Erstellung abgeschlossen ist und sich der Status in ändert.CREATE_COMPLETE
-
Nachdem der Status der Ereignisse zu gewechselt ist
CREATE_COMPLETE
, wählen Sie die Registerkarte Ressourcen aus. Es werden Ressourcen mit der logischen IDECSCluster
ECSTaskDefinition
, und angezeigtECSService
. -
Um die Erstellung eines Amazon ECS-Clusters zu überprüfen, wählen Sie die zugehörige physische ID aus
ECSCluster
. Sie werden zur Amazon ECS-Konsole weitergeleitet, wo Sie den Namen des erstellten Clusters sehen könnenCFNCluster
. -
Um die Erstellung eines Amazon ECS-Service zu überprüfen, wählen Sie die zugehörige physische ID aus
ECSService
. Sie werden zur Amazon ECS-Konsole weitergeleitet, wo Sie den aufgerufenen Service sehen könnencfn-service
, der im Cluster erstellt wurdecfnCluster
. -
Um die Erstellung einer Amazon ECS-Aufgabendefinition zu überprüfen, wählen Sie die zugehörige physische ID aus
ECSTaskDefinition
. Sie werden zur Amazon ECS-Konsole weitergeleitet, wo Sie die Version der Aufgabendefinition mit dem Namen sehen könnentask-definition-cfn
.
Schritt 4: Bereinigen von Ressourcen
Gehen Sie wie folgt vor, um Ressourcen zu schonen und weitere Kosten zu vermeiden.
-
Wählen Sie auf der Seite Stacks die Option. ecs-tutorial-stack
-
Wählen Sie Löschen aus.
-
Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie erneut Löschen.
-
Wählen Sie die Registerkarte Ereignisse. Der Status für die Ressourcen
ecs-tutorial-stack
ändert sich in DELETE_IN_PROGRESS und dann in DELETE_COMPLETE, nachdem die Ressourcen gelöscht oder deregistriert wurden. Das Löschen dauert ein paar Minuten. -
Wählen Sie die Registerkarte Resources (Ressourcen) aus. Sie sehen nun eine Liste mit logischen IDs, deren Status auf DELETE_COMPLETE aktualisiert wurde.