如何使用无服务器框架在AWS Aurora无服务器中自动创建表

时间:2020-06-18 12:39:35

标签: amazon-web-services aws-lambda migration aws-aurora-serverless

每当我们使用无服务器框架部署任何更改时,我都尝试使用npm migrate自动创建表。当我与aurora数据库一起使用时,这很好。但是我已经移到 Aurora Serverless RDS (悉尼地区),它根本无法正常工作。由于 Aurora Serverless RDS 本身在VPC内运行,因此,当我们需要访问它时,lambda函数必须在同一VPC上。

PS:我们正在使用Github Action作为管道将所有内容部署到Lambda。

谢谢,请让我知道如何解决该问题。

2 个答案:

答案 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进行数据库架构迁移。