每当我们使用无服务器框架部署任何更改时,我都尝试使用npm migrate
自动创建表。当我与aurora数据库一起使用时,这很好。但是我已经移到 Aurora Serverless RDS (悉尼地区),它根本无法正常工作。由于 Aurora Serverless RDS 本身在VPC内运行,因此,当我们需要访问它时,lambda函数必须在同一VPC上。
PS:我们正在使用Github Action作为管道将所有内容部署到Lambda。
谢谢,请让我知道如何解决该问题。
答案 0 :(得分:1)
只有两种基本方法可以解决此问题:在VPC中打开隧道或在VPC中运行更新。以下是我过去使用过的每种方法的一些方法:
隧道进入VPC:
VPN,例如OpenVPN。
相对容易设置,但旨在将两个网络连接在一起,并且代表服务器的始终在线费用。例如,如果您正在从公司网络运行迁移,但运行的不是您要尝试为GitHub Actions(或任何第三方构建工具)配置的迁移,则效果很好。
堡垒主机
这是一个EC2实例,它在公共子网中运行并将SSH公开。您与堡垒建立了SSH连接,然后通过隧道传输所需的任何协议。通常作为“始终在线”实例运行,但是您可以通过编程方式启动和停止。
我认为这会增加构建的复杂性。假设您只想按需运行,则需要一个脚本来启动实例并等待其准备好接受连接。您可能还希望调整安全组进入规则,以仅允许来自构建计算机的流量(每个构建的IP可能会更改其IP)。然后,您必须在后台运行ssh
来打开隧道,并在构建完成后再次将其关闭。
在VPC内部运行迁移:
最简单的方法(imo)是使用CodeBuild在VPC内部移动构建。如果这样做,则需要具有NAT,以便构建版本可以与外界对话。配置CodeBuild与GitHub进行通讯也并不容易(应该通过一个手动步骤来提供访问令牌)。
如果要使用ECS进行容器化部署,则建议将迁移打包在容器中,然后将其部署到运行该应用程序的同一群集中。然后,您将使用aws ecs run-task触发运行(我认为EKS有类似的东西,但是还没有使用过)。
如果尚未使用ECS / EKS,则可以使用AWS Batch实施相同的想法。
答案 1 :(得分:0)
Here是一个示例,说明了如何使用Amazon API Gateway,AWS Lambda,Amazon Aurora Serverless(MySQL)和Python CDK进行数据库架构迁移。