如何在AWS Amplify中关联函数与DynamoDB表资源?
解决方案
当然可以关联这些资源,你不需要在amplify/functions/resource.ts里直接获取表名,而是可以在amplify/backend.ts中直接修改函数的环境变量配置,将DynamoDB表名注入进去。具体操作如下:
- 在
backend.ts中拿到函数的资源实例 - 将库存表和订单表的名称作为环境变量添加到函数配置里
修改后的amplify/backend.ts代码示例:
// amplify/backend.ts const backend = defineBackend({ auth, data, dynamoDbDataHandlerFunction, }); const inventoryTable = backend.data.resources.tables["Inventory"]; const orderTable = backend.data.resources.tables["Order"]; // 获取函数的Lambda资源实例 const dataHandlerFunction = backend.dynamoDbDataHandlerFunction.resources.lambda; // 注入表名到函数环境变量 dataHandlerFunction.addEnvironment("INVENTORY_TABLE_NAME", inventoryTable.tableName); dataHandlerFunction.addEnvironment("ORDER_TABLE_NAME", orderTable.tableName);
完成后,你的函数就能通过环境变量INVENTORY_TABLE_NAME和ORDER_TABLE_NAME读取到对应Amplify栈的DynamoDB表名,完美适配多栈场景。
内容的提问来源于stack exchange,提问作者Miguel Ferreira
相关产品推荐
相关产品推荐

