|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
암호화폐 뉴스 기사
AWS CDK 및 TypeScript를 사용하여 Redis용 Amazon ElastiCache 클러스터 배포 | AWS 데이터베이스 블로그
2024/04/05 23:25
AWS Cloud Development Kit(AWS CDK)를 사용하면 단 한 줄의 코드로 AWS 리소스를 생성할 수 있습니다. 예를 들어 다음 줄을 사용하여 TypeScript에서 VPC를 생성할 수 있습니다.new EC2.Vpc(this, 'cache_vpc');그러나 지원 리소스를 생성해야 하는 경우가 많기 때문에 여러 AWS 리소스에는 여러 줄의 코드가 필요합니다. 예를 들어 Redis CfnReplicationGroup용 Amazon ElastiCache를 생성하기 전에 CfnSubnetGroup 및 SecurityGroup을 생성해야 합니다. 이 요약에서는 AWS CDK 및 TypeScript를 사용하여 Amazon ElastiCache 클러스터를 배포하는 단계를 보여줍니다. 또한 Redis Serverless용 Amazon ElastiCache를 사용하여 리소스를 배포하는 방법도 보여줍니다.
Creating AWS Resources with AWS Cloud Development Kit (AWS CDK) for ElastiCache
ElastiCache용 AWS Cloud Development Kit(AWS CDK)를 사용하여 AWS 리소스 생성
Introduction
소개
AWS Cloud Development Kit (AWS CDK) enables developers to define and provision AWS resources using familiar programming languages such as TypeScript. This article guides readers through the process of deploying an Amazon ElastiCache cluster and ElastiCache Serverless resources using AWS CDK and TypeScript.
AWS CDK(AWS Cloud Development Kit)를 사용하면 개발자는 TypeScript와 같은 친숙한 프로그래밍 언어를 사용하여 AWS 리소스를 정의하고 프로비저닝할 수 있습니다. 이 문서에서는 AWS CDK 및 TypeScript를 사용하여 Amazon ElastiCache 클러스터 및 ElastiCache 서버리스 리소스를 배포하는 프로세스를 독자에게 안내합니다.
Prerequisites
전제조건
- AWS account
- AWS Command Line Interface (AWS CLI)
- AWS CDK
- Node.js 16.14.0 or later
Creating Prerequisite Resources
AWS 계정AWS 명령줄 인터페이스(AWS CLI)AWS CDKNode.js 16.14.0 이상사전 필수 리소스 생성
- Install AWS CDK:
npm install -g aws-cdkAWS CDK 설치:npm install -g aws-cdk
cdk --version
- Create AWS CDK Directory Structure:
mkdir work & cd workcdk --versionAWS CDK 디렉터리 구조 생성:mkdir 작업 및 cd 작업
cdk init --language typescript
- Install NPM Packages:
npm install
- Create VPC:
In the lib/work-stack.ts
file, create a VPC:
cdk init --언어 typescriptNPM 패키지 설치:npm installVPC 생성:lib/work-stack.ts 파일에서 VPC를 생성합니다.
import * as cdk from 'aws-cdk-lib';*를 'aws-cdk-lib'에서 CDK로 가져옵니다.
import { Construct } from 'constructs';import { Construct } from 'constructs';
import * as EC2 from 'aws-cdk-lib/aws-ec2';*를 'aws-cdk-lib/aws-ec2'에서 EC2로 가져옵니다.
export class WorkStack extends cdk.Stack {내보내기 클래스 WorkStack은 cdk.Stack을 확장합니다.
private vpc: EC2.Vpc;프라이빗 vpc: EC2.Vpc;
constructor(scope: Construct, id: string, props?: cdk.StackProps) {constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);super(범위, ID, 소품);
this.vpc = new EC2.Vpc(this, 'cache_vpc');this.vpc = 새로운 EC2.Vpc(this, 'cache_vpc');
}}
}
- Bootstrap AWS Environment:
cdk bootstrap
- Synthesize CloudFormation Template:
cdk synth
- Deploy VPC:
cdk deploy --require-approval never
Create Subnet Group
}Bootstrap AWS 환경:cdk bootstrapSynthesize CloudFormation 템플릿:cdk synthDeploy VPC:cdk 배포 --require-approval neverCreate Subnet Group
- Update
lib/work-stack.ts
to create a subnet group for ElastiCache:
import * as cdk from 'aws-cdk-lib';ElastiCache에 대한 서브넷 그룹을 생성하려면 lib/work-stack.ts를 업데이트하세요. import * 'aws-cdk-lib'에서 cdk로;
*를 'aws-cdk-lib'에서 CDK로 가져옵니다.
import { Construct } from 'constructs';import { Construct } from 'constructs';
import * as EC2 from 'aws-cdk-lib/aws-ec2';*를 'aws-cdk-lib/aws-ec2'에서 EC2로 가져옵니다.
import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';
export class WorkStack extends cdk.Stack {내보내기 클래스 WorkStack은 cdk.Stack을 확장합니다.
private vpc: EC2.Vpc;프라이빗 vpc: EC2.Vpc;
constructor(scope: Construct, id: string, props?: cdk.StackProps) {constructor(scope: Construct, id: string, props?: cdk.StackProps) {
const groupName = "ElastiCacheSubnetGroup";const groupName = "ElastiCacheSubnetGroup";
super(scope, id, props);super(범위, ID, 소품);
this.vpc = new EC2.Vpc(this, 'cache_vpc');this.vpc = 새로운 EC2.Vpc(this, 'cache_vpc');
const subnetIds = [];const subnetIds = [];
for (const subnet of this.vpc.privateSubnets) {for (this.vpc.privateSubnets의 const 서브넷) {
console.log("createElastiCache subnet ID: ", subnet.subnetId);console.log("createElastiCache 서브넷 ID: ", subnet.subnetId);
subnetIds.push(subnet.subnetId);subnetIds.push(subnet.subnetId);
}}
}
const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {
cacheSubnetGroupName: groupName,캐시서브넷그룹이름: 그룹이름,
subnetIds: subnetIds,서브넷 ID: 서브넷 ID,
description: "ElastiCache Subnet Group",설명: "ElastiCache 서브넷 그룹",
}}
}
);
}}
}
- Synthesize and deploy the stack:
cdk synth; cdk deploy --require-approval never
Creating an ElastiCache for Redis Replication Group
}스택을 합성하고 배포합니다:cdk synth; cdk 배포 --require-approval neverRedis 복제 그룹용 ElastiCache 생성
- Create Security Group:
import * as cdk from 'aws-cdk-lib';보안 그룹 생성: 'aws-cdk-lib'에서 *를 cdk로 가져오기;
*를 'aws-cdk-lib'에서 CDK로 가져옵니다.
import { Construct } from 'constructs';import { Construct } from 'constructs';
import * as EC2 from 'aws-cdk-lib/aws-ec2';*를 'aws-cdk-lib/aws-ec2'에서 EC2로 가져옵니다.
import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';
import { SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';import { SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';
export class WorkStack extends cdk.Stack {내보내기 클래스 WorkStack은 cdk.Stack을 확장합니다.
private vpc: EC2.Vpc;프라이빗 vpc: EC2.Vpc;
constructor(scope: Construct, id: string, props?: cdk.StackProps) {constructor(scope: Construct, id: string, props?: cdk.StackProps) {
const groupName = "ElastiCacheSubnetGroup";const groupName = "ElastiCacheSubnetGroup";
super(scope, id, props);super(범위, ID, 소품);
this.vpc = new EC2.Vpc(this, 'cache_vpc');this.vpc = 새로운 EC2.Vpc(this, 'cache_vpc');
const subnetIds = [];const subnetIds = [];
for (const subnet of this.vpc.privateSubnets) {for (this.vpc.privateSubnets의 const 서브넷) {
console.log("createElastiCache subnet ID: ", subnet.subnetId);console.log("createElastiCache 서브넷 ID: ", subnet.subnetId);
subnetIds.push(subnet.subnetId);subnetIds.push(subnet.subnetId);
}}
}
const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {
cacheSubnetGroupName: groupName,캐시서브넷그룹이름: 그룹이름,
subnetIds: subnetIds,서브넷 ID: 서브넷 ID,
description: "ElastiCache Subnet Group",설명: "ElastiCache 서브넷 그룹",
}}
}
);
const securityGroup = new SecurityGroup(this, "ElastiCacheSecurityGroup", {const securityGroup = new SecurityGroup(this, "ElastiCacheSecurityGroup", {
vpc: this.vpc,vpc: this.vpc,
allowAllOutbound: true,AllowAllOutbound: 사실,
description: "ElastiCache Security Group",설명: "ElastiCache 보안 그룹",
securityGroupName: "ElastiCacheSecurityGroup",securityGroupName: "ElastiCacheSecurityGroup",
}}
}
);
securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(6379), "Redis port");securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(6379), "Redis 포트");
}}
}
- Create Replication Group:
import * as cdk from 'aws-cdk-lib';}복제 그룹 생성: import * as cdk from 'aws-cdk-lib';
*를 'aws-cdk-lib'에서 CDK로 가져옵니다.
import { Construct } from 'constructs';import { Construct } from 'constructs';
import * as EC2 from 'aws-cdk-lib/aws-ec2';*를 'aws-cdk-lib/aws-ec2'에서 EC2로 가져옵니다.
import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';
import { SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';import { SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';
export class WorkStack extends cdk.Stack {내보내기 클래스 WorkStack은 cdk.Stack을 확장합니다.
private vpc: EC2.Vpc;프라이빗 vpc: EC2.Vpc;
constructor(scope: Construct, id: string, props?: cdk.StackProps) {constructor(scope: Construct, id: string, props?: cdk.StackProps) {
const groupName = "ElastiCacheSubnetGroup";const groupName = "ElastiCacheSubnetGroup";
super(scope, id, props);super(범위, ID, 소품);
this.vpc = new EC2.Vpc(this, 'cache_vpc');this.vpc = 새로운 EC2.Vpc(this, 'cache_vpc');
const subnetIds = [];const subnetIds = [];
for (const subnet of this.vpc.privateSubnets) {for (this.vpc.privateSubnets의 const 서브넷) {
console.log("createElastiCache subnet ID: ", subnet.subnetId);console.log("createElastiCache 서브넷 ID: ", subnet.subnetId);
subnetIds.push(subnet.subnetId);subnetIds.push(subnet.subnetId);
}}
}
const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {
cacheSubnetGroupName: groupName,캐시서브넷그룹이름: 그룹이름,
subnetIds: subnetIds,서브넷 ID: 서브넷 ID,
description: "ElastiCache Subnet Group",설명: "ElastiCache 서브넷 그룹",
}}
}
);
const securityGroup = new SecurityGroup(this, "ElastiCacheSecurityGroup", {const securityGroup = new SecurityGroup(this, "ElastiCacheSecurityGroup", {
vpc: this.vpc,vpc: this.vpc,
allowAllOutbound: true,AllowAllOutbound: 사실,
description: "ElastiCache Security Group",설명: "ElastiCache 보안 그룹",
securityGroupName: "ElastiCacheSecurityGroup",securityGroupName: "ElastiCacheSecurityGroup",
}}
}
);
securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(6379), "Redis port");securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(6379), "Redis 포트");
const cache = new ElastiCache.CfnReplicationGroup(this, "ReplicationGroup", {const 캐시 = 새로운 ElastiCache.CfnReplicationGroup(this, "ReplicationGroup", {
replicationGroupDescription: "Elastic Cache Replication Group",복제그룹설명: "탄력적 캐시 복제 그룹",
numCacheClusters: 1,캐시 클러스터 수: 1,
automaticFailoverEnabled: false,automaticFailoverEnabled: 거짓,
engine: 'redis',엔진: 'redis',
cacheNodeType: 'cache.m7g.large',캐시노드 유형: 'cache.m7g.large',
cacheSubnetGroupName: subnetGroup.ref,캐시서브넷그룹이름: subnetGroup.ref,
securityGroupIds: [securityGroup.securityGroupId],securityGroupIds: [securityGroup.securityGroupId],
}}
}
);
// Establish dependency between cache and subnetGroup// 캐시와 subnetGroup 간의 종속성을 설정합니다.
cache.addDependency(subnetGroup);캐시.addDependency(subnetGroup);
}}
}
- Synthesize and deploy the stack:
cdk synth; cdk deploy --require-approval never
Deploying ElastiCache for Redis Serverless Resources
}스택을 합성하고 배포합니다:cdk synth; cdk 배포 --require-approval neverRedis 서버리스 리소스용 ElastiCache 배포
- Create Security Group:
import * as cdk from 'aws-cdk-lib';보안 그룹 생성: 'aws-cdk-lib'에서 *를 cdk로 가져오기;
*를 'aws-cdk-lib'에서 CDK로 가져옵니다.
import { Construct } from 'constructs';import { Construct } from 'constructs';
import * as EC2 from 'aws-cdk-lib/aws-ec2';*를 'aws-cdk-lib/aws-ec2'에서 EC2로 가져옵니다.
import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';import { aws_elasticache as ElastiCache } from 'aws-cdk-lib';
import { SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';import { SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';
export class WorkStack extends cdk.Stack {내보내기 클래스 WorkStack은 cdk.Stack을 확장합니다.
private vpc: EC2.Vpc;프라이빗 vpc: EC2.Vpc;
constructor(scope: Construct, id: string, props?: cdk.StackProps) {constructor(scope: Construct, id: string, props?: cdk.StackProps) {
const groupName = "ElastiCacheSubnetGroup";const groupName = "ElastiCacheSubnetGroup";
super(scope, id, props);super(범위, ID, 소품);
this.vpc = new EC2.Vpc(this, 'cache_vpc');this.vpc = 새로운 EC2.Vpc(this, 'cache_vpc');
const subnetIds = [];const subnetIds = [];
for (const subnet of this.vpc.privateSubnets) {for (this.vpc.privateSubnets의 const 서브넷) {
console.log("createElastiCache subnet ID: ", subnet.subnetId);console.log("createElastiCache 서브넷 ID: ", subnet.subnetId);
subnetIds.push(subnet.subnetId);subnetIds.push(subnet.subnetId);
}}
}
const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {const subnetGroup = new ElastiCache.CfnSubnetGroup(this, "ElastiCacheSubnetGroup", {
cacheSubnetGroupName: groupName,캐시서브넷그룹이름: 그룹이름,
subnetIds: subnetIds,서브넷 ID: 서브넷 ID,
description: "ElastiCache Subnet Group",설명: "ElastiCache 서브넷 그룹",
}}
}
);
const securityGroup = new SecurityGroup(this, "ElastiCacheSecurityGroup", {const securityGroup = new SecurityGroup(this, "ElastiCacheSecurityGroup", {
vpc: this.vpc,vpc: this.vpc,
allowAllOutbound: true,AllowAllOutbound: 사실,
description: "ElastiCache Security Group",설명: "ElastiCache 보안 그룹",
securityGroupName: "ElastiCacheSecurityGroup",securityGroupName: "ElastiCacheSecurityGroup",
}}
}
);
부인 성명:info@kdj.com
제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!
본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.
-
- Stack의 Bowers Galleries, 2024년 11월 실제 비트코인 및 암호화폐 경매 세션 발표
- 2024-11-19 12:20:02
- Stack의 Bowers Galleries는 2024년 11월 쇼케이스 경매의 실제 비트코인 및 암호화폐 세션을 발표하게 되어 기쁘게 생각합니다. 11월 22일 금요일에는 2011~2014년 초반의 고전적인 Casascius 및 Lealana 희귀품부터 BTCC, Kialara, Alpen Coin, Denarium,1HoDLCLUB, Satori 등의 최신 수집가 인기 상품에 이르기까지 100개 이상의 흥미로운 암호화폐 랏이 발표될 예정입니다. , Polymerbit, Caribbean Treasures 및 기타 시리즈.