我有一个lambda函数,用于创建DynamoDB表。
我有一个要求,在创建表之后,我需要在该表中插入一些数据。
在DynamoDB中,创建表是一个异步调用。在创建表时,它处于"CREATING"
状态,此后进入"ACTIVE"
状态。
面临的挑战是,我无法在此表中插入数据,直到它不处于"ACTIVE"
状态并且出现ResourceNotFoundException
异常为止。
有什么办法可以在创建数据时将其插入表中吗?
我想在同一Lambda函数调用中完成表的创建和数据插入。
答案 0 :(得分:1)
您已经发现,您只能写入一个活动(/创建的)表,并且无法使用dynamodb::CreateTable提供数据来“预加载”表。
当表准备好时,不会发出任何事件。因此,您必须轮询直到表变为活动状态。这应该在lambda中轻松实现,因为DynamoDB很少会花费30-60秒以上的时间来配置表。
创建表后,您可以每秒(或大约)调用dynamodb::DescribeTable并等待其返回Table.TableStatus === 'ACTIVE'
。一旦他们的表状态变为活动状态,就可以插入初始数据。只需记住将Lambda超时增加到整整15分钟,以防AWS花费更长的时间来配置您的表。
您可以在AWS Documentation中看到一个示例。