CDK를 사용하여 Fargate의 with Type Script 구축
18912 단어 TypeScriptAWS CDKtech
이번에는 CDK Fargate를 사용하여 샘플 애플리케이션을 조작해 보았습니다.언어는 Type Script입니다.
이번에 쓴 코드는 아래에 놓아라.
AWS CDK 설정
다음 내용을 참고하여 진행하시오.
다음 내용을 참고하여 AWS 계정을 만드십시오.
로컬 시스템에 AWS CLI 및 CDK를 설치합니다.
$ brew install awscli aws-cdk
아래 내용을 참조하여 AWS 계정을 AWS CLI에 연결합니다.$ aws configure
CDK를 초기화합니다.$ cdk bootstrap aws://<AWSアカウントID>/<リージョン>
CDK 프로젝트를 초기화합니다.이번에는 Type Script를 사용합니다.$ cdk init app --language typescript
$ ls
bin/
lib/
node_modules/
test/
README.md
cdk.json
jest.config.js
package-lock.json
package.json
tsconfig.json
에 필요한 파일이 모두 생성되었습니다.Docker 이미지 준비
실행할 Docker 이미지를 준비합니다.
이번에는 다음 노드입니다.js의 샘플 페이지에 따라 진행합니다.
포트와 견본 페이지만 달리 80이 되었다.
잠시 후 패키지-lock.json을 생성해야 하기 때문에 Node입니다.js를 설치합니다.
$ brew install node@14
이번에는 CDK 창고에서 앱/카탈로그를 만들고 거기에 코드를 배치한다.$ mkdir app
$ cd app
샘플 페이지를 따라 파일을 준비합니다.package.json
{
"name": "docker_web_app",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "First Last <[email protected]>",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.1"
}
}
server.js"use strict";
const express = require("express");
const PORT = 80;
const HOST = "0.0.0.0";
const app = express();
app.get("/", (req, res) => {
res.send("Hello World");
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
DockerfileFROM node:12
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 80
CMD [ "node", "server.js" ]
dockerignorenode_modules
npm-debug.log
package-lock.json을 생성합니다.$ npm install
Docker 이미지를 구성합니다.$ docker build . -t node-web-app
운전해 보세요.$ docker run -p 80:80 -d node-web-app
로컬 실행 확인🎉
ECR에 Docker 이미지push
다음 내용을 참고하여 진행하시오.
ECR 인증 Docker 클라이언트
$ aws ecr get-login-password --region <リージョン> | docker login --username AWS --password-stdin <AWSアカウントID>.dkr.ecr.<リージョン>.amazonaws.com
ECR 창고를 제작한다.이번에는 Sample-node-web-app라는 이름으로 제작되었습니다.
$ aws ecr create-repository \
--repository-name sample-node-web-app \
--image-scanning-configuration scanOnPush=true \
--region <リージョン>
IMAGE ID를 확인합니다.$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
node-web-app latest 75ed3927be19 7 minutes ago 920MB
이미지에 ECR용 레이블을 추가합니다.$ docker tag 75ed3927be19 <AWSアカウントID>.dkr.ecr.<リージョン>.amazonaws.com/sample-node-web-app:latest
그림을push합니다.$ docker push <AWSアカウントID>.dkr.ecr.region.amazonaws.com/sample-node-web-app:latest
CDK를 사용한 Fargate 구축
드디어 본론에 들어섰다.
lib/fargate-cdk-sample-stack.개작
아래 내용을 참고하시오.
lib/fargate-cdk-sample-stack.ts
import { Stack, StackProps } from "aws-cdk-lib";
import { Construct } from "constructs";
import * as ec2 from "aws-cdk-lib/aws-ec2";
import * as ecr from "aws-cdk-lib/aws-ecr";
import * as ecs from "aws-cdk-lib/aws-ecs";
import * as ecs_patterns from "aws-cdk-lib/aws-ecs-patterns";
export class FargateCdkSampleStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const vpc = new ec2.Vpc(this, "MyVpc", { maxAzs: 2 });
const cluster = new ecs.Cluster(this, "Cluster", { vpc });
const repository = ecr.Repository.fromRepositoryName(
this,
"SampleRepository",
"sample-node-web-app" // 先ほど作ったリポジトリ名
);
new ecs_patterns.ApplicationLoadBalancedFargateService(
this,
"FargateService",
{
cluster,
taskImageOptions: {
image: ecs.ContainerImage.fromEcrRepository(repository),
},
}
);
}
}
설계를 진행하다.$ cdk synth
$ cdk deploy
cdk deploy
에서 콘솔에 마지막으로 액세스한 URL입니다.순조롭게 프로그램 설계를 진행하였다🎉
후기
웹 콘솔로 찰칵찰칵 할 때보다 훨씬 즐거워요.
이 근처를 생각하면 즐거울 거예요.
Reference
이 문제에 관하여(CDK를 사용하여 Fargate의 with Type Script 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/hirokisakabe/articles/73d7d30a0e2ec8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)