Pulumi에서 AWS Application Load Balancer 구축
17352 단어 TypeScriptAWSPulumi
예를 들어, 다음 코드를 사용하여 AWS VPC를 구축할 수 있습니다.
const vpc = new aws.ec2.Vpc("my-vpc", {
cidrBlock: "10.0.0.0/16",
tags: { Name: "my-vpc" }
});
환경
풀루미를 써보도록 하겠습니다.
Download and Install - Pulumi에 기재된 대로 설치할 수 있습니다.이번에는 WSL에서 실행되기 때문에 Linux 버전을 사용합니다.
wsl
$ curl -fsSL https://get.pulumi.com | sh
항목을 설정합니다.이번 사용
aws-typescript
.wsl
$ pulumi login --local
$ pulumi new aws-typescript --dir my-project-name
$ cd my-project-name
구성할 구성
AWS 애플리케이션 로드 밸런싱(ALB)을 구축합니다.
이 중
/first/target/path
경로로 접근하고 /second/target/path
경로로 접근하는 경우 전송할 대상 그룹을 전환합니다.실제로 제작된 물건은 다음과 같다.
실제 절차
index.ts
import * as aws from "@pulumi/aws";
// ネットワークの作成
const vpc = new aws.ec2.Vpc("my-vpc", {
cidrBlock: "10.0.0.0/16",
tags: { Name: "my-vpc" }
});
const igw = new aws.ec2.InternetGateway("my-igw", {
vpcId: vpc.id,
tags: { Name: "my-igw" }
}, vpc);
const generateSubnet = (name: string, cidr: string, vpc: aws.ec2.Vpc) => {
return new aws.ec2.Subnet(name, {
cidrBlock: cidr,
vpcId: vpc.id
});
};
const subnet1 = generateSubnet("my-subnet1", "10.0.1.0/24", vpc);
const subnet2 = generateSubnet("my-subnet2", "10.0.2.0/24", vpc);
// ロードバランサーの作成
const alb = new aws.applicationloadbalancing.LoadBalancer("my-lb", {
subnets: [subnet1.id, subnet2.id],
});
const tgParams: aws.applicationloadbalancing.TargetGroupArgs = {
port: 80,
protocol: "HTTP",
vpcId: vpc.id
};
const tg1 = new aws.applicationloadbalancing.TargetGroup("my-tg1", tgParams);
const tg2 = new aws.applicationloadbalancing.TargetGroup("my-tg2", tgParams);
// リスナールールの作成
const listener = new aws.elasticloadbalancingv2.Listener("my-listener", {
defaultActions: [{
targetGroupArn: tg1.arn,
type: "forward",
}],
loadBalancerArn: alb.arn,
port: 443
});
const generateListenerRule = (
name: string,
path: string,
tg: aws.applicationloadbalancing.TargetGroup,
listener: aws.applicationloadbalancing.Listener
) => {
return new aws.elasticloadbalancingv2.ListenerRule(name, {
actions: [{
targetGroupArn: tg.arn,
type: "forward"
}],
conditions: [{
field: "path-pattern",
values: path,
}],
listenerArn: listener.arn,
});
};
const listenerRule1 = generateListenerRule("my-listener1", "/first/target/path", tg1, listener);
const listenerRule2 = generateListenerRule("my-listener2", "/second/target/path", tg2, listener);
// Export
export const ALB_ID = alb.id;
배치
preview
명령, 실제 응용 내용을 확인할 수 있습니다.wsl
$ pulumi preview
up
배포를 명령합니다.--yes
를 뜯으면 확인 입력 대기가 발생합니다.wsl
$ pulumi up --yes
치우다
다음 명령을 사용하여 AWS의 리소스와 Pulumi의 stack을 제거할 수 있습니다.
$ pulumi destroy
$ pulumi stack rm
또한 내 경우 네트워크 게이트웨이와 VPC의 삭제가 원활하지 않기 때문에 수동으로 진행해야 한다.총결산
프로그램으로 클라우드 서비스 설정을 작성할 수 있다면, 유사한 설정을 구축할 때 함수화하거나, 변수와 파라미터로 다음 서비스 간의 의존 관계를 나타낼 수 있다는 장점이 있습니다.
const alb = new aws.applicationloadbalancing.LoadBalancer("my-lb", {
subnets: [subnet1.id, subnet2.id],
});
푸루미는 식단과 경험 기술이 유행하면 사용하기 쉬워지지 않을까 싶어요.Tips
CLI 강제 종료
CLI 등을 중간에 중지하고 처리를 중단하면 다음과 같은 오류가 발생합니다.
These resources are in an unknown state because the Pulumi CLI was interrupted while
waiting for changes to these resources to complete. You should confirm whether or not the
operations listed completed successfully by checking the state of the appropriate provider.
For example, if you are using AWS, you can confirm using the AWS Console.
Once you have confirmed the status of the interrupted operations, you can repair your stack
using 'pulumi stack export' to export your stack to a file. For each operation that succeeded,
remove that operation from the "pending_operations" section of the file. Once this is complete,
use 'pulumi stack import' to import the repaired stack.
stack의 상태를 내보내고 편집해야 합니다.내보내기 컨텐트에 대한 자세한 정보가 없으므로 편집용 명령만 표시됩니다.wsl
$ pulumi stack export --file exported.json
$ code exported.json # 適当に編集
$ pulumi stack import --file exported.json
참고 자료
Reference
이 문제에 관하여(Pulumi에서 AWS Application Load Balancer 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suzuki_sh/items/69abd7bebcda0d1aa6e1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)