【问题标题】:how to create table automatically in aws aurora serverless with serverless framework如何使用无服务器框架在 aws aurora 无服务器中自动创建表
【发布时间】:2020-06-18 12:39:35
【问题描述】:

每当我们使用无服务器框架部署任何更改时,我都会尝试使用 npm migrate 自动创建表。当我使用极光数据库时,它很好。但是我已经迁移到 Aurora Serverless RDS(悉尼地区),它根本不起作用。因为 Aurora Serverless RDS 本身是在 VPC 内部工作的,所以当我们需要访问它时,lambda 函数必须在同一个 VPC 上。

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

请告诉我如何解决这个问题,谢谢。

【问题讨论】:

  • 你是如何构建/部署的?你可以使用 CodeBuild 吗?
  • @Parsifal 是的,这是 b 计划。但是我们使用 Github Action 来部署一切。

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


【解决方案1】:

只有两种基本方法可以解决此问题:打开通往 VPC 的隧道或在 VPC 内运行更新。以下是我过去使用过的一些方法:

隧道进入 VPC:

  • VPN,例如 OpenVPN。

    设置起来相对容易,但设计用于将两个网络连接在一起,并代表服务器始终在线收费。如果您从公司网络运行迁移,但不是您想尝试为 GitHub Actions(或任何第三方构建工具)配置的迁移,会很好用。

  • 堡垒主机

    这是一个在公有子网中运行的 EC2 实例,向全世界公开 SSH。您与堡垒建立 SSH 连接,然后通过隧道传输您想要的任何协议。通常作为“始终开启”实例运行,但您可以通过编程方式启动和停止。

    我认为这会给您的构建增加很多复杂性。假设您只想按需运行,您需要一个脚本来启动实例并等待它准备好接受连接。您可能还想调整安全组入口规则以仅允许来自您的构建机器的流量(其 IP 可能会因每次构建而改变)。然后你必须打开隧道,在后台运行ssh,并在构建完成后再次关闭它。

在 VPC 内运行迁移:

  • 最简单的方法 (imo) 是使用 CodeBuild 将您的构建移动到 VPC 中。如果您这样做,您将需要一个 NAT,以便构建可以与外界通信。将 CodeBuild 配置为与 GitHub 对话也没有应有的那么容易(您需要提供一个手动步骤来提供访问令牌)。

  • 如果您使用 ECS 进行容器化部署,那么我建议您将迁移打包到一个容器中,并将其部署到运行应用程序的同一个集群上。然后你会用aws ecs run-task 触发运行(我假设 EKS 有类似的东西,但没有使用过)。

  • 如果您还没有使用 ECS/EKS,那么您可以使用 AWS Batch 实现相同的想法。

【讨论】:

  • 我已经尝试像 github action > codebuild > aurora rds serverless 那样集成,这真是太好了。
【解决方案2】:

Here 是一个示例,说明如何使用 Amazon API Gateway、AWS Lambda、Amazon Aurora Serverless (MySQL) 和 Python CDK 进行数据库架构迁移。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多