[PYTHON] Erstellen eines AWS Fargate-Dienstes mit AWS CDK

Einführung

Ich möchte einen AWS Fargate Service mit AWS CDK (Python) erstellen.

Der diesmal erstellte Code lautet hier.

↑ Erstellen Sie mit diesem Code die folgende Konfiguration.

Diagramm

CDK_Fargate-全体構成.png

Vorbereitung

--AWS-Konto --IAM-Benutzer für CDK

fließen

  1. Umgebungsvariablen
  2. cdk install
  3. cdk init
  4. [Implementierung](# Implementierung)
  5. cdk deploy
  6. [Funktionsprüfung](# Funktionsprüfung)
  7. cdk destroy

cdk install

$ npm install -g aws-cdk

Wenn cdk nicht ausgeführt werden kann, überprüfen Sie, ob es sich in Ihrem PATH befindet.

$ 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
...

Einstellungen für Umgebungsvariablen

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

Implementierung

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

cdk_fargate_stack.py ist hier

VPC-Erstellung

--Erstellen Sie eine VPC, indem Sie zwei Verfügbarkeitszonen angeben.

Erstellen Sie einen ECS-Cluster

--Erstellen Sie einen ECS-Cluster, indem Sie die erstellte VPC angeben.

Fargate Service-Erstellung

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

Funktionsprüfung

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

cdk destroy

$ cdk destory

Alle Ressourcen wurden gelöscht!

Was ich als nächstes tun möchte

Zusammenfassung

Das Team entwickelt mit Python, aber ich fand es wunderbar, Konfigurationen in einer gemeinsamen Sprache verwalten zu können. Ich möchte das Konfigurationsmanagement mit CDK weiter fördern. Ich konnte nicht einmal benutzerdefinierte Domäneneinstellungen implementieren

Verweise

Recommended Posts

Erstellen eines AWS Fargate-Dienstes mit AWS CDK
[AWS] ECR mit AWS CDK erstellen
[AWS] Erstellen wir einen ECS-Cluster mit CDK
[Python] Erstellen einer Umgebung mit Anaconda [Mac]
Ich habe versucht, einen URL-Verkürzungsdienst mit AWS CDK serverlos zu machen
Erstellen einer Anaconda-Umgebung für Python mit pyenv
Verschiedene Befehle zum Erstellen einer Umgebung mit Apache
Versuchen Sie, mit VisualStudioCode eine Umgebung für MayaPython zu erstellen
Ich habe versucht, eine Umgebung zu erstellen, um regelmäßig mit Selenium mit AWS Fargate zu überprüfen
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Erstellen einer Umgebung für die Verwendung von CaboCha mit Google Colaboratory
CodeCommit + CodePipeline mit CDK
Erstellen einer Umgebung zum Ausführen von Python-Programmen unter AWS EC2
Erstellen Sie mit AWS CDK Python ganz einfach Netzwerkinfrastruktur und EC2