gpt4 book ai didi

amazon-web-services - 如何使用 API Gateway Lambda 中的 AWS Amplify 表?

转载 作者:行者123 更新时间:2023-12-03 07:16:30 25 4
gpt4 key购买 nike

我有一个使用 AWS API Gateway 构建的 HTTP API。然后,我使用 AWS Amplify 为 API 设计了一个管理 Web 界面。

这两个系统仅通过 DynamoDB 表进行通信:API 写入表,Web 界面从中读取。

出于 DRY 目的,表是在 Amplify 中从 GraphQL 架构创建的,而不是由具有显式表名称的 CloudFormation 资源创建的。这样就不需要在 2 个位置定义表。

但现在我遇到了一个问题:Amplify 表带有随机名称,例如 foo-55c3wkhfdhj-bar,因此要从 AWS Lambda 写入它们,我需要一种方法来知道该名称或它的随机部分。

我该怎么做?我了解 CloudFormation 导出机制。我可以使用它吗?

现在我有一个简单的解决方案,将表名称硬编码在配置文件中,例如

{ foo: "foo-55c3wkhfdhj-bar" }

有更好的解决方案吗?

请注意,我喜欢 ApiGateway 服务的现状。我不想将 lambda 移至 Amplify 后端。想象一下,它不是 APIGateway,而是一些无法轻松迁移到 AWS Lambda 后端(例如 EC2)的代码。

https://github.com/aws-amplify/amplify-cli/issues/996有一些想法,但在其他地方创建表并在 AWS Amplify 部分中使用它正是我想要避免的。与那里不同的是,我不关心 Amplify 名称是否是随机的。

最佳答案

我已经使用 aws cli 在 bash 脚本中解决了这个问题:

aws dynamodb list-tables --output text | sed -n "s/^.*\($TABLE_NAME-.*-$ENV\)[.\n]*/\1/p"

变量 $TABLE_NAME 是表的可预测前缀,$ENV 是放大环境后缀。

然后,花哨的 sed 命令使用正则表达式使用捕获组来捕获完整的表名称,以便完整的表名称是唯一出现的内容。

您可能可以使用 AWS API 执行类似的操作:

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html

Ping api 以获取表列表并对其进行解析和排序以找到您要查找的表。

关于amazon-web-services - 如何使用 API Gateway Lambda 中的 AWS Amplify 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69914199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com