를 사용하여 Kinesis Data Streams 및 Firehose를 사용하여 DynamoDB 레코드를 Amazon S3로 전송 AWS CDK - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 Kinesis Data Streams 및 Firehose를 사용하여 DynamoDB 레코드를 Amazon S3로 전송 AWS CDK

작성자: Shashank Shrivastava(AWS) 및 Daniel Matuki da Cunha(AWS)

코드 리포지토리: Amazon DynamoDB를 Amazon S3로 수집

환경: PoC 또는 파일럿

기술: 서버리스, 데이터 레이크, 데이터베이스, 스토리지 및 백업

AWS 서비스: AWS CDK, Amazon DynamoDB , Amazon Data Firehose, Amazon Kinesis Data Streams, AWS Lambda, Amazon S3

요약

이 패턴은 Amazon Kinesis Data Streams 및 Amazon Data Firehose를 사용하여 Amazon DynamoDB에서 Amazon Simple Storage Service(Amazon S3)로 레코드를 전송하기 위한 샘플 코드와 애플리케이션을 제공합니다. 패턴의 접근 방식은 AWS Cloud Development Kit (AWS CDK) L3 구성 요소를 사용하며 Amazon Web Services(AWS) 클라우드의 대상 S3 버킷으로 데이터를 전송하기 AWS Lambda 전에 를 사용하여 데이터 변환을 수행하는 방법의 예를 포함합니다.

Kinesis Data Streams는 DynamoDB 테이블에서 항목 수준 수정 사항을 기록하여 필수 Kinesis 데이터 스트림에 복제합니다. 애플리케이션에서는 Kinesis 데이터 스트림에 액세스하고 항목 수준 변경 사항을 거의 실시간으로 볼 수 있습니다. Kinesis Data Streams는 Firehose 및 Amazon Managed Service for Apache Flink와 같은 다른 Amazon Kinesis 서비스에 대한 액세스도 제공합니다. 즉, 실시간 대시보드를 제공하고, 알림을 생성하고, 동적 요금 및 광고를 구현하고, 정교한 데이터 분석을 수행하는 애플리케이션을 빌드할 수 있습니다.

이 패턴을 데이터 통합 사용 사례에 사용할 수 있습니다. 예를 들어, 운송 차량 또는 산업용 장비가 대량의 데이터를 DynamoDB 테이블로 전송할 수 있습니다. 그런 다음 이 데이터를 변환하여 Amazon S3에 호스팅된 데이터 레이크에 저장할 수 있습니다. 그런 다음 Amazon Athena , Amazon Redshift Spectrum, Amazon Rekognition 및 와 같은 서버리스 서비스를 사용하여 데이터를 쿼리 및 처리하고 잠재적 결함을 예측할 수 있습니다 AWS Glue.

사전 조건 및 제한 사항

사전 조건 

  • 활성 AWS 계정.

  • AWS Command Line Interface (AWS CLI), 설치 및 구성됨. 자세한 내용은 AWS CLI 설명서의 시작하기 AWS CLI를 참조하세요.

  • Node.js(18.x+) 및 npm, 설치 및 구성됨. 자세한 내용은 npm 설명서의 Node.js 및 npm 다운로드 및 설치를 참조하세요.

  • aws-cdk(2.x+), 설치 및 구성됨. 자세한 내용은 AWS CDK 설명서의 시작하기 AWS CDK를 참조하세요.

  • 로컬 시스템에서 복제 및 구성된 GitHub aws-dynamodb-kinesisfirehose-s3-수집 리포지토리입니다.

  • DynamoDB 테이블의 기존 샘플 데이터입니다. 데이터는 {"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}} 형식을 사용해야 합니다.

아키텍처

다음 다이어그램은 Kinesis Data Streams 및 Firehose를 사용하여 DynamoDB에서 Amazon S3로 레코드를 전달하는 워크플로의 예를 보여줍니다.

Kinesis Data Streams 및 Firehose를 사용하여 DynamoDB에서 Amazon S3로 레코드를 전달하는 워크플로 예제입니다.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. 데이터는 Amazon API Gateway를 DynamoDB 의 프록시로 사용하여 수집됩니다. 다른 소스를 사용하여 DynamoDB로 데이터를 수집할 수도 있습니다. 

  2. 항목 수준 변경은 Kinesis Data Streams에서 거의 실시간으로 생성되어 Amazon S3로 전송됩니다.

  3. Kinesis Data Streams는 변환 및 전송을 위해 Firehose로 레코드를 전송합니다. 

  4. Lambda 함수는 DynamoDB 레코드 형식의 레코드를 레코드 항목 속성 이름 및 값만 포함하는 JSON 형식으로 변환합니다.

도구

AWS 서비스

  • AWS Cloud Development Kit (AWS CDK) 는 코드로 AWS 클라우드 인프라를 정의하고 프로비저닝하는 데 도움이 되는 소프트웨어 개발 프레임워크입니다.

  • AWS CDK Toolkit은 AWS CDK 앱과 상호 작용하는 데 도움이 되는 명령줄 클라우드 개발 키트입니다.

  • AWS Command Line Interface (AWS CLI)는 명령줄 쉘의 명령을 AWS 서비스 통해 와 상호 작용하는 데 도움이 되는 오픈 소스 도구입니다.

  • AWS CloudFormation 는 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, AWS 계정 및 의 수명 주기 동안 관리할 수 있도록 지원합니다 AWS 리전.

코드 리포지토리

이 패턴의 코드는 GitHub aws-dynamodb-kinesisfirehose-s3 수집 리포지토리에서 사용할 수 있습니다.

에픽

작업설명필요한 기술

종속성을 설치합니다.

로컬 시스템에서 다음 명령을 실행하여 pattern/aws-dynamodb-kinesisstreams-s3sample-application 디렉터리의 package.json 파일에서 종속성을 설치합니다.

cd <project_root>/pattern/aws-dynamodb-kinesisstreams-s3
npm install && npm run build
cd <project_root>/sample-application/
npm install && npm run build

 

앱 개발자, 일반 AWS

CloudFormation 템플릿을 생성합니다.

  1. cd <project_root>/sample-application/ 명령을 실행합니다.

  2. cdk synth 명령을 실행하여 CloudFormation 템플릿을 생성합니다.

  3. cdk.out 디렉터리에 AwsDynamodbKinesisfirehoseS3IngestionStack.template.json 출력이 저장됩니다.

  4. AWS CDK 또는 AWS Management Console 를 사용하여 에서 템플릿을 처리합니다 CloudFormation.

앱 개발자, 일반 AWS, AWS DevOps
작업설명필요한 기술

리소스를 확인하고 배포하세요.

  1. cdk diff 명령을 실행하여 AWS CDK 구성에서 생성한 리소스 유형을 식별합니다.

  2. cdk deploy 명령을 실행하여 리소스를 배포합니다.

앱 개발자, 일반 AWS, AWS DevOps
작업설명필요한 기술

샘플 데이터를 DynamoDB 테이블로 수집합니다.

에서 다음 명령을 실행하여 DynamoDB 테이블에 요청을 보냅니다 AWS CLI.

aws dynamodb put-item --table-name <your_table_name> --item '{"<table_partition_key>": {"S": "<partition_key_ID>"},"MessageData":{"S": "<data>"}}'

예:

aws dynamodb put-item --table-name SourceData_table --item '{"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}'

기본적으로 put-item은(는) 작업이 성공해도 출력으로 어떤 값도 반환하지 않습니다. 작업이 실패하면 오류가 반환됩니다. 데이터는 DynamoDB에 저장된 다음 Kinesis Data Streams 및 Firehose로 전송됩니다. 

참고: DynamoDB 테이블에 데이터를 추가할 때는 다양한 접근 방식을 사용합니다. 자세한 내용은 DynamoDB 설명서의 테이블로 데이터 로드를 참조하세요.

앱 개발자

S3 버킷에 새 객체가 생성되었는지 확인합니다.

에 로그인 AWS Management Console 하고 S3 버킷을 모니터링하여 전송한 데이터로 새 객체가 생성되었는지 확인합니다. 

자세한 내용은 Amazon S3 설명서GetObject의 섹션을 참조하세요.

앱 개발자, 일반 AWS
작업설명필요한 기술

리소스를 정리합니다.

cdk destroy 명령을 실행하여 이 패턴에 사용되는 모든 리소스를 삭제합니다.

앱 개발자, 일반 AWS

관련 리소스