AWS CDK를 사용하여 AWS Fargate Service 구축
소개
AWS CDK(Python)를 사용하여 AWS Fargate Service를 구축하고 싶습니다.
이번에 작성한 코드는 여기
↑이 코드로 다음 구성을 작성합니다.
구성도
준비
흐름
cdk install
$ npm install -g aws-cdk
cdk
를 실행할 수 없으면 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
는 여기VPC 생성
ECS Cluster 생성
Fargate Service 만들기
ecs_pattern.ApplicationLoadBalancedFargateService 을 사용하여 Fargate Service를 구축.
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
모든 리소스가 삭제되었습니다!
다음에 하고 싶은 일
요약
팀은 Python을 사용하여 개발했지만 공용 언어를 사용하여 구성 관리를 수행하는 것이 훌륭하다고 느꼈습니다.
CDK를 사용한 구성 관리를 점점 추진해 나가고 싶습니다.
맞춤 도메인 설정까지 구현할 수 없었기 때문에
참고문헌
Reference
이 문제에 관하여(AWS CDK를 사용하여 AWS Fargate Service 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yacchin/items/e2c48984a3a68e77c3c5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)