많은 시나리오에서는 JSON 형식의 데이터로 작업해야 하며, 데이터를 추출하고 처리한 다음 나중에 사용할 수 있도록 테이블에 저장하려고 합니다.
이 기사에서는 Lambda 함수를 사용하여 S3 버킷에서 DynamoDB 테이블로 JSON 형식의 데이터를 로드하는 방법에 대해 설명합니다
아래 아키텍처는 우리가 3가지 AWS 서비스를 사용하고 있음을 보여줍니다
아래의 다과 서비스에 대한 간략한 설명:
위 다이어그램 배포를 위한 단계 및 구성을 살펴보겠습니다
1- 아래 구성으로 Lambda 함수 생성
처음부터 저자
함수 이름: ParserDemo
런타임: Python 3.1x
나머지는 기본값으로 둡니다
Lambda가 생성된 후 아래와 같이 제한 시간 구성 및 실행 역할을 수정해야 합니다.
논리를 수행하기 위해 이 Python 코드를 작성했습니다
import json import boto3 s3_client = boto3.client('s3') dynamodb = boto3.resource('dynamodb') def lambda_handler(event, context): bucket_name = event['Records'][0]['s3']['bucket']['name'] # Getting the bucket name from the event triggered by S3 object_key = event['Records'][0]['s3']['object']['key'] # Getting the Key of the item when the data is uploaded to S3 print(f"Bucket: {bucket_name}, Key: {object_key}") response = s3_client.get_object( Bucket=bucket_name, Key=object_key ) # We will convert the streamed data into bytes json_data = response['Body'].read() string_formatted = json_data.decode('UTF-8') #Converting data into string dict_format_data = json.loads(string_formatted) #Converting Data into Dictionary # Inserting Data Into DynamoDB table = dynamodb.Table('DemoTable') if isinstance(dict_format_data, list): #check if the file contains single record for record in dict_format_data: table.put_item(Item=record) elif isinstance(dict_format_data, dict): # check if the file contains multiple records table.put_item(Item=data) else: raise ValueError("Not Supported Format") # Raise error if nothing matched
2- S3 버킷 생성
버킷 이름: 고유한 이름을 사용하세요
나머지 구성은 기본값으로 둡니다
생성된 S3 버킷을 아래와 같이 람다 함수에 대한 트리거로 추가합니다.
3- 아래 구성으로 DynamoDB에 테이블을 생성합니다
테이블 이름: DemoTable
파티션 키: UserId
테이블 세팅: 맞춤형
용량 모드: 프로비저닝
비용을 절약하려면 낮은 값(1 또는 2개 단위)으로 읽기/쓰기용으로 프로비저닝된 용량 단위를 구성하세요.
이제 설정이 준비되었습니다. S3에 파일을 업로드하여 테스트하면 파일에 업로드한 레코드와 함께 DynamoDB 테이블에 생성된 항목을 찾을 수 있습니다.
Lambda 함수용 CloudWatch Logs
DynamoDB 항목
이 내용이 흥미로웠기를 바라며 의견이 있으면 알려주시기 바랍니다.
S3 API
다이나모DB API
AWS 서비스를 위한 boto3 실습
위 내용은 Lambda 함수를 사용하여 So DynamoDB에서 데이터 구문 분석 및 로드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!