【问题标题】:How to get the table name in AWS dynamodb trigger function?如何在 AWS dynamodb 触发器函数中获取表名?
【发布时间】:2016-02-08 20:39:33
【问题描述】:

我是 AWS 的新手,正在致力于在 Python 上创建一个 lambda 函数。该函数将获取 dynamodb 表流并写入 s3 中的文件。这里文件名应该是表名。 如果触发器正在调用 lambda 函数,有人可以告诉我如何获取表名吗?

感谢您的帮助。

【问题讨论】:

    标签: amazon-dynamodb aws-lambda


    【解决方案1】:

    既然你提到你是 AWS 新手,我将描述性地回答。

    我假设您已将 DynamoDB 表的“启用流”设置为“是”,并将其设置为 lambda 函数的事件源。

    这就是我从调用我的 lambda 函数的流中获取表名的方式 -

    def lambda_handler(event, context):
       print(json.dumps(event, indent=2)) # Shows what's in the event object
       for record in event['Records']:
          ddbARN = record['eventSourceARN']
          ddbTable = ddbARN.split(':')[5].split('/')[1]
          print("DynamoDB table name: " + ddbTable)
       return 'Successfully processed records.'
    

    基本上,包含有关负责特定 lambda 函数调用的特定 DynamoDB 流的所有信息的 event 对象包含一个参数 eventSourceARN。此eventSourceARN 是唯一标识您的 DynamoDB 表的 ARN(Amazon 资源编号),event 从该表中发生。

    这是eventSourceARN 的示例值 -

    arn:aws:dynamodb:us-east-1:111111111111:table/test/stream/2020-10-10T08:18:22.385

    注意上面的粗体文字 - test;这是您要查找的表名

    在上面的ddbTable = ddbARN.split(':')[5].split('/')[1] 行中,我尝试先将整个ARN 拆分为':',然后再拆分为'/',以获得值test。获得此值后,您可以调用 S3 API 以写入 S3 中具有相同名称的文件。

    希望这会有所帮助。

    【讨论】:

    • @AIR 酷!如果你觉得它解决了你的问题,你能把它标记为答案吗?谢谢。
    • record.eventSourceARN.split('/')[1]
    【解决方案2】:

    请注意,并非总是提供 eventSourceArn。从我今天的测试来看,我没有看到 eventSourceArn 出现在记录中。也可以参考链接:

    【讨论】:

      【解决方案3】:

      一种方法是在 Scala 中使用正则表达式进行模式匹配:

      val ddbArnRegex: Regex = """arn:aws:dynamodb:(.+):(.+):table/(.+)/stream/(.+)""".r
      
      def parseTableName(ddbARN: String): Option[String] = {
        if (null == ddbARN) None
        ddbARN match {
          case ddbArnRegex(_, _, table, _) => Some(table)
          case _ => None
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-05
        • 2022-01-27
        • 1970-01-01
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        • 2017-02-11
        • 2019-11-15
        • 1970-01-01
        相关资源
        最近更新 更多