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.
--AWS-Konto --IAM-Benutzer für CDK
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
...
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
ist hier
--Erstellen Sie eine VPC, indem Sie zwei Verfügbarkeitszonen angeben.
--Erstellen Sie einen ECS-Cluster, indem Sie die erstellte VPC angeben.
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
Alle Ressourcen wurden gelöscht!
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
Recommended Posts