Return 多条记录 AWS Lambda 函数查询
Return Multiple Records AWS Lambda Function Query
我正在学习 AWS 中的 lambda 函数,我正在尝试弄清楚如何使用我的 pk 和 sk 查询 dynamodb table 以 return 所有匹配的记录。我已经能够 return 一条记录,但我还没有弄清楚如何 return 我可以更新的整个记录列表。
这可以用 lambda 函数实现吗? Node.js 是我一直在用的吗?
你可以 return JSON 作为字符串并在客户端解析它。实现可能会有所不同,具体取决于您使用的编程语言和调用 code/app.
如果您计划同步调用 Lambda 函数(使用 RequestResponse 调用类型),您可以 return 使用任何受支持的数据类型来输出函数。例如,如果您使用 Lambda 函数作为移动应用程序后端,您将同步调用它。您的输出数据类型将被序列化为 JSON.
输出类型可以是object或void。运行时将 return 值序列化为文本。如果输出是带有字段的对象,则运行时会将其序列化为 JSON 文档。如果它是包装原始值的类型,则运行时 return 是该值的文本表示。
一些样本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 return 中的环境变量。
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
})
}
how I can query a dynamodb table with my pk and sk to return all records that match.
我的回答是描述 pk 和 sk 的用例,以便您可以使用这个原则。
- 在 dynamodbDB 中,您可以有一个应该唯一的分区键(对于单个 PK)或分区键和排序键的组合。
According to docs (for a combination of Pk and sk) -> DynamoDB uses the partition key value as input to an internal hash function. The output from the hash function determines the partition (physical storage internal to DynamoDB) in which the item will be stored. All items with the same partition key value are stored together, in sorted order by sort key value.
In a table that has a partition key and a sort key, it's possible for multiple items to have the same partition key value. However, those items must have different sort key values.
对于这样的组合键 table 设计 SO 你可以有场景:-
- 使用 get 查找 pk 和 sk 的单个记录(pk 和 sk 的组合将是唯一的)
- 使用查询查找同一 pk 的多条记录。
例如,table 的名称为 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
我正在学习 AWS 中的 lambda 函数,我正在尝试弄清楚如何使用我的 pk 和 sk 查询 dynamodb table 以 return 所有匹配的记录。我已经能够 return 一条记录,但我还没有弄清楚如何 return 我可以更新的整个记录列表。
这可以用 lambda 函数实现吗? Node.js 是我一直在用的吗?
你可以 return JSON 作为字符串并在客户端解析它。实现可能会有所不同,具体取决于您使用的编程语言和调用 code/app.
如果您计划同步调用 Lambda 函数(使用 RequestResponse 调用类型),您可以 return 使用任何受支持的数据类型来输出函数。例如,如果您使用 Lambda 函数作为移动应用程序后端,您将同步调用它。您的输出数据类型将被序列化为 JSON.
输出类型可以是object或void。运行时将 return 值序列化为文本。如果输出是带有字段的对象,则运行时会将其序列化为 JSON 文档。如果它是包装原始值的类型,则运行时 return 是该值的文本表示。
一些样本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 return 中的环境变量。
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
})
}
how I can query a dynamodb table with my pk and sk to return all records that match.
我的回答是描述 pk 和 sk 的用例,以便您可以使用这个原则。
- 在 dynamodbDB 中,您可以有一个应该唯一的分区键(对于单个 PK)或分区键和排序键的组合。
According to docs (for a combination of Pk and sk) -> DynamoDB uses the partition key value as input to an internal hash function. The output from the hash function determines the partition (physical storage internal to DynamoDB) in which the item will be stored. All items with the same partition key value are stored together, in sorted order by sort key value. In a table that has a partition key and a sort key, it's possible for multiple items to have the same partition key value. However, those items must have different sort key values.
对于这样的组合键 table 设计 SO 你可以有场景:-
- 使用 get 查找 pk 和 sk 的单个记录(pk 和 sk 的组合将是唯一的)
- 使用查询查找同一 pk 的多条记录。
例如,table 的名称为 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