我正在 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 的用例,以便您可以使用这个原则。
- 在 dynamodbDB 中,您可以拥有一个应该唯一的磁区键(对于单个 PK)或磁区键和排序键的组合。
对于这种复合键表设计,您可以有以下场景:-
- 使用 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
0 评论