찾다
백엔드 개발파이썬 튜토리얼Lambda 함수를 사용하여 So DynamoDB에서 데이터 구문 분석 및 로드

많은 시나리오에서는 JSON 형식의 데이터로 작업해야 하며, 데이터를 추출하고 처리한 다음 나중에 사용할 수 있도록 테이블에 저장하려고 합니다.

이 기사에서는 Lambda 함수를 사용하여 S3 버킷에서 DynamoDB 테이블로 JSON 형식의 데이터를 로드하는 방법에 대해 설명합니다

전제 조건

  1. S3에 객체를 업로드할 권한이 있는 IAM 사용자
  2. S3 및 DynamoDB에 대한 권한이 있는 Lambda 실행 역할

아키텍처 및 구성 요소

아래 아키텍처는 우리가 3가지 AWS 서비스를 사용하고 있음을 보여줍니다

  1. S3 버킷
  2. 람다 함수
  3. DynamoDB 테이블

Parsing & Loading Data from So DynamoDB with Lambda Function

아래의 다과 서비스에 대한 간략한 설명:

  • S3 버킷: 확장성, 보안성, 고성능 서비스를 갖춘 객체 스토리지 서비스가 데이터 스토리지 서비스로 사용됩니다
  • Lambda 기능: 인프라에 대한 걱정 없이 코드를 실행할 수 있고 설정이 쉬우며 다양한 프로그래밍 언어를 지원하는 서버리스 컴퓨팅 서비스입니다. 우리는 이를 활용하여 코드를 실행하고 로직을 배포할 것입니다.
  • DynamoDB: 데이터를 테이블에 저장하는 데 사용되는 서버리스 NoSQL 데이터베이스는 Lambda 함수로 처리된 데이터를 저장하는 데 사용됩니다.

흐름

  1. 사용자는 PutObject API 뒤에 있는 콘솔이나 CLI를 통해 JSON 파일을 S3 버킷에 업로드합니다
  2. 객체가 성공적으로 업로드되면 S3 이벤트가 트리거되어 람다 함수를 호출하여 파일을 로드하고 처리합니다
  3. Lambda가 데이터를 처리하여 DynamoDB 테이블에 로드합니다

구현 단계

위 다이어그램 배포를 위한 단계 및 구성을 살펴보겠습니다

1- 아래 구성으로 Lambda 함수 생성

처음부터 저자
함수 이름: ParserDemo
런타임: Python 3.1x

나머지는 기본값으로 둡니다
Lambda가 생성된 후 아래와 같이 제한 시간 구성 및 실행 역할을 수정해야 합니다.

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

논리를 수행하기 위해 이 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 버킷을 아래와 같이 람다 함수에 대한 트리거로 추가합니다.

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

3- 아래 구성으로 DynamoDB에 테이블을 생성합니다

테이블 이름: DemoTable
파티션 키: UserId
테이블 세팅: 맞춤형
용량 모드: 프로비저닝

비용을 절약하려면 낮은 값(1 또는 2개 단위)으로 읽기/쓰기용으로 프로비저닝된 용량 단위를 구성하세요.

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

이제 설정이 준비되었습니다. S3에 파일을 업로드하여 테스트하면 파일에 업로드한 레코드와 함께 DynamoDB 테이블에 생성된 항목을 찾을 수 있습니다.

Lambda 함수용 CloudWatch Logs

Parsing & Loading Data from So DynamoDB with Lambda Function

DynamoDB 항목

Parsing & Loading Data from So DynamoDB with Lambda Function

이 내용이 흥미로웠기를 바라며 의견이 있으면 알려주시기 바랍니다.

참고자료

S3 API
다이나모DB API
AWS 서비스를 위한 boto3 실습

위 내용은 Lambda 함수를 사용하여 So DynamoDB에서 데이터 구문 분석 및 로드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬 어레이를 어떻게 슬라이스합니까?파이썬 어레이를 어떻게 슬라이스합니까?May 01, 2025 am 12:18 AM

Python List 슬라이싱의 기본 구문은 목록 [start : stop : step]입니다. 1. Start는 첫 번째 요소 인덱스, 2.Stop은 첫 번째 요소 인덱스가 제외되고 3. Step은 요소 사이의 단계 크기를 결정합니다. 슬라이스는 데이터를 추출하는 데 사용될뿐만 아니라 목록을 수정하고 반전시키는 데 사용됩니다.

어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?May 01, 2025 am 12:06 AM

ListSoutPerformArraysin : 1) DynamicsizingandFrequentInsertions/Deletions, 2) StoringHeterogeneousData 및 3) MemoryEfficiencyForsParsEdata, butMayHavesLightPerformanceCosceperationOperations.

파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?May 01, 2025 am 12:05 AM

TOCONVERTAPYTHONARRAYTOALIST, USETHELIST () CONSTUCTORORAGENERATERATOREXPRESSION.1) importTheArrayModuleAndCreateAnarray.2) USELIST (ARR) 또는 [XFORXINARR] TOCONVERTITTOALIST.

Python에 목록이있을 때 배열을 사용하는 목적은 무엇입니까?Python에 목록이있을 때 배열을 사용하는 목적은 무엇입니까?May 01, 2025 am 12:04 AM

chooSearRaysOverListSinpyTonforBetTerferformanceAndMemoryEfficiencyInspecificscenarios.1) arrgenumericalDatasets : arraysreducememoryUsage.2) Performance-CriticalOperations : ArraysofferspeedboostsfortaskslikeApenorsearching.3) TypeSenforc

목록과 배열의 요소를 반복하는 방법을 설명하십시오.목록과 배열의 요소를 반복하는 방법을 설명하십시오.May 01, 2025 am 12:01 AM

파이썬에서는 루프에 사용하여 열거 및 추적 목록에 대한 이해를 나열 할 수 있습니다. Java에서는 루프를 위해 전통적인 사용 및 루프가 트래버스 어레이를 향해 향상시킬 수 있습니다. 1. Python 목록 트래버스 방법에는 다음이 포함됩니다. 루프, 열거 및 목록 이해력. 2. Java 어레이 트래버스 방법에는 다음이 포함됩니다. 루프 용 전통 및 루프를위한 향상.

Python Switch 문은 무엇입니까?Python Switch 문은 무엇입니까?Apr 30, 2025 pm 02:08 PM

이 기사는 버전 3.10에 도입 된 Python의 새로운 "매치"진술에 대해 논의하며, 이는 다른 언어로 된 문장과 동등한 역할을합니다. 코드 가독성을 향상시키고 기존 IF-ELIF-EL보다 성능 이점을 제공합니다.

파이썬의 예외 그룹은 무엇입니까?파이썬의 예외 그룹은 무엇입니까?Apr 30, 2025 pm 02:07 PM

Python 3.11의 예외 그룹은 여러 예외를 동시에 처리하여 동시 시나리오 및 복잡한 작업에서 오류 관리를 향상시킵니다.

파이썬의 기능 주석이란 무엇입니까?파이썬의 기능 주석이란 무엇입니까?Apr 30, 2025 pm 02:06 PM

Python의 기능 주석은 유형 확인, 문서 및 IDE 지원에 대한 기능에 메타 데이터를 추가합니다. 코드 가독성, 유지 보수를 향상 시키며 API 개발, 데이터 과학 및 라이브러리 생성에 중요합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기