拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 回传多条记录AWSLambda函式查询

回传多条记录AWSLambda函式查询

白鹭 - 2022-01-26 2127 0 0

我正在 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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *