bitcoin
bitcoin

$91536.44 USD 

1.07%

ethereum
ethereum

$3159.06 USD 

1.66%

tether
tether

$1.00 USD 

0.03%

solana
solana

$239.93 USD 

-1.33%

bnb
bnb

$620.37 USD 

-1.06%

xrp
xrp

$1.12 USD 

-1.43%

dogecoin
dogecoin

$0.385208 USD 

3.69%

usd-coin
usd-coin

$0.999867 USD 

-0.02%

cardano
cardano

$0.743936 USD 

0.28%

tron
tron

$0.204360 USD 

0.54%

shiba-inu
shiba-inu

$0.000025 USD 

1.12%

avalanche
avalanche

$35.10 USD 

-1.50%

toncoin
toncoin

$5.59 USD 

1.26%

sui
sui

$3.72 USD 

-3.69%

chainlink
chainlink

$14.99 USD 

4.58%

암호화폐 뉴스 기사

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를 사용하여 리소스를 배포하는 방법도 보여줍니다.

AWS CDK 및 TypeScript를 사용하여 Redis용 Amazon ElastiCache 클러스터 배포 | AWS 데이터베이스 블로그

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 이상사전 필수 리소스 생성

  1. Install AWS CDK:
npm install -g aws-cdk

AWS CDK 설치:npm install -g aws-cdk

cdk --version
  1. Create AWS CDK Directory Structure:
mkdir work & cd work

cdk --versionAWS CDK 디렉터리 구조 생성:mkdir 작업 및 cd 작업

cdk init --language typescript
  1. Install NPM Packages:
npm install
  1. 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');

}

}

}
  1. Bootstrap AWS Environment:
cdk bootstrap
  1. Synthesize CloudFormation Template:
cdk synth
  1. Deploy VPC:
cdk deploy --require-approval never

Create Subnet Group

}Bootstrap AWS 환경:cdk bootstrapSynthesize CloudFormation 템플릿:cdk synthDeploy VPC:cdk 배포 --require-approval neverCreate Subnet Group

  1. 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 서브넷 그룹",

}

}

}

); }

}

}
  1. 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 생성

  1. 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 포트");

}

}

}
  1. 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);

}

}

}
  1. 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 배포

  1. 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)로 연락주시면 즉시 삭제하도록 하겠습니다.

2024年11月19日 에 게재된 다른 기사