[PYTHON] Création d'AWS Fargate Service avec AWS CDK

introduction

Je souhaite créer un service AWS Fargate à l'aide d'AWS CDK (Python).

Le code créé cette fois-ci est ici

↑ Créez la configuration suivante avec ce code.

Diagramme

CDK_Fargate-全体構成.png

Préparation

couler

  1. Variables d'environnement
  2. cdk install
  3. cdk init
  4. [Mise en œuvre](# Mise en œuvre)
  5. cdk deploy
  6. [Contrôle de fonctionnement](# Contrôle de fonctionnement)
  7. cdk destroy

cdk install

$ npm install -g aws-cdk

Si cdk ne peut pas être exécuté, vérifiez s'il est dans votre PATH.

$ which node
/path/to/bin/node
$ export
...
PATH=/path/to/hoge:/path/to/fuga
...
$ export PATH=$PATH:/path/to/current/bin
$ export
...
PATH=/path/to/hoge:/path/to/fuga:/path/to/current/bin
...

Paramètres des variables d'environnement

export AWS_ACCESS_KEY_ID=hoge
export AWS_SECRET_ACCESS_KEY=fuga
export ROLE_ARN=arn:aws:iam::xxxxxxxxxxxx:role/ecsTaskExecutionRole
export ECR_REGISOTRY=xxxxxxxxxxxx:role.dkr.ecr.ap-northeast-1.amazonaws.com/django-app:latest

cdk init

$ mkdir /path/to/cdk_fargate
$ cd /path/to/cdk_fargate
$ cdk init --language python

la mise en oeuvre

$ pwd
/path/to/cdk_fargate
$ cd cdk_fargate/
vi cdk_fargate_stack.py  

cdk_fargate_stack.py est ici

Création de VPC

--Créez un VPC en spécifiant deux zones de disponibilité.

Créer un cluster ECS

--Créez un cluster ECS en spécifiant le VPC créé.

Création du service Fargate

-Construire un service Fargate en utilisant ecs_pattern.ApplicationLoadBalancedFargateService.

Output

import os
from dotenv import load_dotenv

from aws_cdk import (
    aws_ec2 as ec2,
    aws_ecs as ecs,
    aws_iam as iam,
    aws_ecs_patterns as ecs_patterns,
    core,
)

load_dotenv()

ROLE_ARN = os.environ["ROLE_ARN"]
ECR_REGISOTRY = os.environ["ECR_REGISOTRY"]


class CdkFargateStack(core.Stack):
    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        vpc = ec2.Vpc(self, "CdkFargateVpc", max_azs=2)

        cluster = ecs.Cluster(self, "Ec2Cluster", vpc=vpc)

        role = iam.Role.from_role_arn(self, "Role", ROLE_ARN)
        image = ecs.ContainerImage.from_registry(ECR_REGISOTRY)
        task_definition = ecs.FargateTaskDefinition(
            scope=self, id="TaskDefinition", execution_role=role, task_role=role
        )
        port_mapping = ecs.PortMapping(container_port=80, host_port=80)
        container = task_definition.add_container(
            id="Container", image=image
        ).add_port_mappings(port_mapping)

        fargate_service = ecs_patterns.ApplicationLoadBalancedFargateService(
            self, "FargateService", cluster=cluster, task_definition=task_definition
        )

        core.CfnOutput(
            self,
            "LoadBalancerDNS",
            value=fargate_service.load_balancer.load_balancer_dns_name,
        )


cdk deploy

$ export AWS_ACCESS_KEY_ID=hoge
$ export AWS_SECRET_ACCESS_KEY=fuga
$ cdk deploy

Contrôle de fonctionnement

$ curl cdk-f-farga-xxxxxxxxx.ap-northeast-1.elb.amazonaws.com

cdk destroy

$ cdk destory

Toutes les ressources ont été supprimées!

Ce que je veux faire ensuite

Résumé

L'équipe se développe en utilisant Python, mais j'ai trouvé merveilleux de pouvoir gérer des configurations en utilisant un langage commun. Je souhaite continuer à promouvoir la gestion de la configuration à l'aide de CDK. Je ne pouvais même pas mettre en œuvre des paramètres de domaine personnalisés

Les références

Recommended Posts

Création d'AWS Fargate Service avec AWS CDK
[AWS] Construire ECR avec AWS CDK
[AWS] Construisons un cluster ECS avec CDK
[Python] Création d'un environnement avec Anaconda [Mac]
J'ai essayé de créer un service de raccourcissement d'url sans serveur avec AWS CDK
Construire un environnement Anaconda pour Python avec pyenv
Diverses commandes pour créer un environnement avec Apache
Essayez de créer un environnement pour MayaPython avec VisualStudioCode
J'ai essayé de créer un environnement à vérifier régulièrement en utilisant Selenium avec AWS Fargate
Créer un environnement pour le traitement du langage naturel avec Python
Créer un environnement pour utiliser CaboCha avec Google Colaboratory
CodeCommit + CodePipeline avec CDK
Création d'un environnement pour exécuter des programmes Python sur AWS EC2
Créez facilement une infrastructure réseau et EC2 avec AWS CDK Python