許多場景需要您使用 JSON 格式的數據,並且您希望提取並處理數據,然後將其保存到表中以供將來使用
在本文中,我們將討論使用 Lambda 函數將 JSON 格式的資料從 S3 儲存桶載入到 DynamoDB 表
先決條件
- 有權利將物件上傳到 S3
- 具有 S3 和 DynamoDB 權限的 Lambda 執行角色
架構和組件
下面的架構顯示我們正在使用 3 個 AWS 服務
- S3 儲存桶
- Lambda 函數
- DynamoDB 表
以下服務的簡要說明作為茶點:
- S3 Bucket:具有可擴充性、安全性和高效能的物件儲存服務將作為我們的資料儲存服務
- Lambda 函數:無伺服器運算服務,讓您運行程式碼而無需擔心基礎設施,易於設定並支援多種程式語言,我們將利用它來運行我們的程式碼並部署我們的邏輯。
- DynamoDB:無伺服器 NoSQL 資料庫,用於將我們的資料儲存在表中,我們將使用它來儲存 Lambda 函數處理後的資料
流動
- 使用者將透過後台 PutObject API 的控制台或 CLI 將 JSON 檔案上傳到 S3 儲存桶
- 物件上傳成功,將觸發S3事件呼叫lambda函數來載入和處理檔案
- Lambda 將處理資料並將其載入到 DynamoDB 表
實施步驟
我們將逐步完成部署上圖的步驟與設定
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 儲存桶
BucketName:用唯一的名稱
將其餘配置保留為預設值
將建立的 S3 儲存桶作為觸發器新增至 lambda 函數,如下所示:
3- 使用以下配置在 DynamoDB 中建立表格
表名稱:DemoTable
分區鍵:UserId
桌子設定:客製化
容量模式:已配置
為了節省成本,將預先配置容量單位配置為低值讀取/寫入(1 或 2 個單位)
現在設定已準備就緒,您可以透過將檔案上傳到 S3 來測試它,然後您將找到在 DynamoDB 表上建立的項目以及您上傳到檔案中的記錄。
Lambda 函數的 CloudWatch Logs
DynamoDB 專案
我希望您覺得這很有趣,如果您有任何意見,請告訴我。
參考
S3 API
DynamoDB API
AWS 服務的 boto3 實踐
以上是使用 Lambda 函數從 So DynamoDB 解析和載入數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

choosearraysoverlistsinpythonforbetterperformanceandmemoryfliceSpecificScenarios.1)largenumericaldatasets:arraysreducememoryusage.2)績效 - 臨界雜貨:arraysoffersoffersOffersOffersOffersPoostSfoostSforsssfortasssfortaskslikeappensearch orearch.3)testessenforcety:arraysenforce:arraysenforc

在Python中,可以使用for循環、enumerate和列表推導式遍歷列表;在Java中,可以使用傳統for循環和增強for循環遍歷數組。 1.Python列表遍歷方法包括:for循環、enumerate和列表推導式。 2.Java數組遍歷方法包括:傳統for循環和增強for循環。

本文討論了版本3.10中介紹的Python的新“匹配”語句,該語句與其他語言相同。它增強了代碼的可讀性,並為傳統的if-elif-el提供了性能優勢

Python中的功能註釋將元數據添加到函數中,以進行類型檢查,文檔和IDE支持。它們增強了代碼的可讀性,維護,並且在API開發,數據科學和圖書館創建中至關重要。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver CS6
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器