Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création de ressources Amazon ECS à l'aide de la AWS CloudFormation console
L'une des manières d'utiliser Amazon ECS AWS CloudFormation est d'utiliser le AWS Management Console. Ici, vous pouvez créer vos AWS CloudFormation piles pour les composants Amazon ECS tels que les définitions de tâches, les clusters et les services et les déployer directement depuis la console. Le didacticiel suivant montre comment utiliser la AWS CloudFormation console pour créer un service Amazon ECS, une définition de tâche et un cluster.
Prérequis
Ce didacticiel part du principe que les prérequis suivants sont remplis.
-
Vous devez avoir suivi les étapes de Configurer l'utilisation d'Amazon ECS.
-
Votre utilisateur IAM dispose des autorisations requises spécifiées dans l'exemple de politique Amazon ECS_ FullAccess IAM.
Étape 1 : créer un modèle de pile
Suivez les étapes ci-dessous pour créer un modèle de AWS CloudFormation pile pour un service Amazon ECS et d'autres ressources associées.
-
À l'aide de l'éditeur de texte de votre choix, créez un fichier appelé
ecs-tutorial-template.yaml
. -
Dans le
ecs-tutorial-template.yaml
fichier, collez le modèle suivant et enregistrez les modifications.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
Étape 2 : créer une pile pour les ressources Amazon ECS
Après avoir créé un fichier pour le modèle, vous pouvez suivre ces étapes pour créer une pile avec le modèle à l'aide de la AWS CloudFormation console.
Connectez-vous à la AWS CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.
-
Sur la page Stacks, dans le coin supérieur droit, choisissez Create stack, puis choisissez avec de nouvelles ressources (standard).
-
Choisissez Choisir un modèle existant.
-
Choisissez Télécharger un fichier modèle, puis choisissez Choisir un fichier pour sélectionner le
ecs-tutorial-template
fichier.Une fois le fichier chargé dans un compartiment Amazon S3, vous pouvez choisir Afficher dans Infrastructure Composer pour visualiser le modèle dans Infrastructure Composer. Pour plus d'informations sur les AWS CloudFormation modèles et Infrastructure Composer, voir Création visuelle de modèles avec Infrastructure Composer dans le guide de AWS CloudFormation l'utilisateur.
-
Choisissez Suivant.
-
Sur la page Spécifier les détails de la pile, sous Nom de la pile, saisissez le nom suivant pour la pile :
ecs-tutorial-stack
. Laissez toutes les valeurs des paramètres sous Paramètres comme valeurs par défaut, puis choisissez Next. -
Sur la page Configurer les options de pile, sous Fonctionnalités, cochez la case pour confirmer la AWS CloudFormation création de ressources IAM. Cet accusé de réception est nécessaire pour créer le rôle d'exécution des tâches Amazon ECS tel que défini dans le modèle. Conservez les autres paramètres par défaut et choisissez Next.
-
Vérifiez les détails de la pile sur la page Révision et création, puis choisissez Soumettre pour lancer la création de la pile.
Étape 3 : vérifier
Suivez les étapes suivantes pour vérifier la création de ressources Amazon ECS à l'aide du modèle fourni.
Connectez-vous à la AWS CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.
-
Sur la page Stacks, choisissez ecs-tutorial-stack.
-
Choisissez l'onglet Événements. Si le statut de l'événement indique
CREATE_IN_PROGRESS
, attendez que la création soit terminée et que les statuts passent à.CREATE_COMPLETE
-
Une fois que les statuts des événements sont passés à
CREATE_COMPLETE
, choisissez l'onglet Ressources. Vous verrez les ressources avec l'ID logiqueECSCluster
ECSTaskDefinition
, etECSService
respectivement. -
Pour vérifier la création d'un cluster Amazon ECS, choisissez l'ID physique associé à
ECSCluster
. Vous serez redirigé vers la console Amazon ECS où vous pourrez voir le cluster créé appeléCFNCluster
. -
Pour vérifier la création d'un service Amazon ECS, choisissez l'ID physique associé à
ECSService
. Vous serez redirigé vers la console Amazon ECS où vous pourrez voir le service appelécfn-service
créé dans le clustercfnCluster
. -
Pour vérifier la création d'une définition de tâche Amazon ECS, choisissez l'ID physique associé à
ECSTaskDefinition
. Vous serez redirigé vers la console Amazon ECS où vous pourrez voir la révision de la définition de la tâche avec le nomtask-definition-cfn
.
Étape 4 : Nettoyer les ressources
Pour nettoyer les ressources et éviter d'encourir des coûts supplémentaires, procédez comme suit.
Connectez-vous à la AWS CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.
-
Sur la page Stacks, choisissez ecs-tutorial-stack.
-
Sélectionnez Delete (Supprimer).
-
Lorsque vous êtes invité à confirmer, sélectionnez à nouveau Supprimer.
-
Choisissez l'onglet Événements. État des
ecs-tutorial-stack
modifications apportées à DELETE_IN_PROGRESS puis à DELETE_COMPLETE après la suppression ou le désenregistrement des ressources. La suppression prend quelques minutes. -
Sélectionnez l'onglet Ressources. Vous verrez maintenant une liste d'identifiants logiques dont le statut a été mis à jour en DELETE_COMPLETE.