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.
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
...
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
$ pwd
/path/to/cdk_fargate
$ cd cdk_fargate/
vi cdk_fargate_stack.py
cdk_fargate_stack.py
est ici
--Créez un VPC en spécifiant deux zones de disponibilité.
--Créez un cluster ECS en spécifiant le VPC créé.
-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
$ curl cdk-f-farga-xxxxxxxxx.ap-northeast-1.elb.amazonaws.com
cdk destroy
$ cdk destory
Toutes les ressources ont été supprimées!
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
Recommended Posts