我正在 AWS 中學習 lambda 函式,我試圖弄清楚如何使用我的 pk 和 sk 查詢 dynamodb 表以回傳所有匹配的記錄。我已經能夠回傳單個記錄,但我還沒有弄清楚如何回傳我可以更新的整個記錄??串列。
這可以用 lambda 函式實作嗎?我一直在使用 Node.js 嗎?
uj5u.com熱心網友回復:
您可以將 JSON 作為字串回傳并在客戶端決議它。實作可能會有所不同,具體取決于您使用的編程語言及其呼叫的代碼/應用程式。
如果您計劃同步呼叫 Lambda 函式(使用 RequestResponse 呼叫型別),您可以使用任何支持的資料型別回傳函式的輸出。例如,如果您使用 Lambda 函式作為移動應用程式后端,則您正在同步呼叫它。您的輸出資料型別將被序列化為 JSON。
輸出型別可以是物件或空。運行時將回傳值序列化為文本。如果輸出是帶有欄位的物件,則運行時會將其序列化為 JSON 檔案。如果它是包裝原始值的型別,則運行時將回傳該值的文本表示。
一些示例Java代碼:
public class HandlerString implements RequestHandler<String, Integer>{
Gson gson = new GsonBuilder().setPrettyPrinting().create();
@Override
public Integer handleRequest(String event, Context context)
{
LambdaLogger logger = context.getLogger();
// process event
logger.log("EVENT: " gson.toJson(event));
logger.log("EVENT TYPE: " event.getClass().toString());
return context.getRemainingTimeInMillis() ;
}
}
Python
以下示例顯示了一個名為 lambda_handler 的函式,該函式使用 python3.8 Lambda 運行時。該函式使用 Lambda 在運行時傳遞的事件資料。它決議 JSON 回應中回傳的 AWS_REGION 中的環境變數。
def lambda_handler(event, context):
json_region = os.environ['AWS_REGION']
return {
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": json.dumps({
"Region ": json_region
})
}
uj5u.com熱心網友回復:
如何使用我的 pk 和 sk 查詢 dynamodb 表以回傳所有匹配的記錄。
我的回答是描述 pk 和 sk 的用例,以便您可以使用這個原則。
- 在 dynamodbDB 中,您可以擁有一個應該唯一的磁區鍵(對于單個 PK)或磁區鍵和排序鍵的組合。
根據檔案(對于 Pk 和 sk 的組合)-> DynamoDB 使用磁區鍵值作為內部哈希函式的輸入。哈希函式的輸出決定了專案將存盤在的磁區(DynamoDB 內部的物理存盤)。具有相同磁區鍵值的所有專案存盤在一起,按排序鍵值排序。在具有磁區鍵和排序鍵的表中,多個專案可能具有相同的磁區鍵值。但是,這些專案必須具有不同的排序鍵值。
對于這種復合鍵表設計,您可以有以下場景:-
- 使用 get 查找 pk 和 sk 的單個記錄(pk 和 sk 的組合將是唯一的)
- 使用查詢查找同一個 pk 的多條記錄。
例如,有一個表,名稱為 pk,序列號為排序鍵。在這種情況下,您可以查詢名稱為“abc”的多條記錄。
我正在使用 javascript。
const paramsForQuery = {
TableName: tableName,
KeyConditionExpression: 'name=:name',
ExpressionAttributeValues: {
':ename': 'abc,
},
};
const dynamoDbQueryResults = await dynamoDb
.query(paramsForQuery)
.promise();
查詢操作官方檔案https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/400798.html
標籤:亚马逊网络服务 aws-lambda 亚马逊动态数据库
