繁体   English   中英

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

[英]how to create table automatically in aws aurora serverless with serverless framework

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

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

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

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

进入 VPC 的隧道:

  • VPN,例如 OpenVPN。

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

  • 堡垒主机

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

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

在 VPC 内运行迁移:

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

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

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

以下示例介绍了如何使用 Amazon API 网关、AWS Lambda、Amazon Aurora Serverless (MySQL) 和 Python CDK 进行数据库架构迁移。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM