如何在AWS dynamodb触发器函数中获取表名?

AIR*_*AIR 12 amazon-dynamodb aws-lambda

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

感谢帮助.

rk2*_*rk2 19

由于您提到您是AWS新手,我将以描述性方式回答.

我假设您已将DynamoDB表的"Stream enabled"设置为"Yes",并将其设置为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.'
Run Code Online (Sandbox Code Playgroud)

基本上,event包含有关特定lambda函数调用的特定DynamoDB流的所有信息的对象包含一个参数eventSourceARN.这eventSourceARN是唯一标识event发生过的DynamoDB表的ARN(Amazon资源编号).

这是一个示例值eventSourceARN-

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

注意上面的粗体文本 - 测试 ; 这是您要查找的表名.

ddbTable = ddbARN.split(':')[5].split('/')[1]上面的一行中,我试图首先用':'拆分整个ARN,然后用'/'拆分以获得值测试.获得此值后,可以调用S3 API以使用相同名称写入S3中的文件.

希望这可以帮助.