如何使用 AWS/Amplify CLI 部署现有 Amplify 应用程序的新版本而无需用户交互?

Posted

技术标签:

【中文标题】如何使用 AWS/Amplify CLI 部署现有 Amplify 应用程序的新版本而无需用户交互?【英文标题】:How can I deploy a new version of an existing Amplify app using the AWS/Amplify CLI without user interaction? 【发布时间】:2021-08-25 07:24:00 【问题描述】:

我是使用 AWS Amplify 的新手,我刚刚发布了自己的前端 WebApp,它是用 React 开发的。我只是压缩了我的构建文件夹并将生成的 zip 文件放到了 AWS 控制台中。它工作正常。

但是,这项工作是手动完成的,我想自动完成。我有 CI&CD 服务器,而不是 AWS 中的服务器,这些服务器在我的其他服务中运行良好。所以我需要一个脚本来自动化我刚刚做的事情,因为我想重用我现有的 CI&CD 服务器。拥有这样的脚本将非常有用,因为我可以在本地或在 docker 容器中重现这些步骤。

我知道有一个解决方案:放大 CLI。但是,amplify initamplify configureamplify pull 等命令需要大量权限和大量用户交互,即使已经配置了 AWS 配置文件(使用密钥和访问密钥)。

做这样的事情会很棒:

amplify deploy build.zip <APP-ARN>

或(如果是文件夹)

amplify deploy /build <APP-ARN>

基本上,我只想自动化我手动执行的操作:上传(压缩的)构建文件夹以部署我的 AWS Amplify 应用程序。因此,这意味着没有用户交互。

如何做到这一点?

【问题讨论】:

【参考方案1】:

您的解决方案是 git,aws amplify 能够监视 git 存储库并检测更改。如果您设置为监视的分支发生更改,它将自动构建一个新版本。

您可以将其设置为仅构建前端或同时构建后端(放大)和前端。

    创建一个 git 存储库。您可以使用例如 github 或 aws codecommit

    配置您的项目以发布到该 git 存储库

    在 AWS Amplify 控制台中启动一个新应用程序或更改您现有的应用程序,以查看 git 存储库

    将更改发布到 git 存储库并在 amplify 控制台中观察它会自动构建您的应用程序的新版本

【讨论】:

我知道,但我真的很想使用 AWS CLI。我有一个具有良好功能的有效 CI CD 解决方案。我可以从那里将所有东西部署到我想要的任何环境中。我很难想象 AWS Amplify 是个例外。可以选择一个 zip 文件并将其上传以进行部署。我唯一想要的就是通过 CLI 实现自动化。 从逻辑上讲,我想防止使用 2 CI CD 解决方案。【参考方案2】:

我对 AWS 和 Amplify 很陌生,但我认为包括 CI/CD 在内的设计理念是使用新的 Amplify 安装启动一个新的计算实例,并在停止过时的实例后让负载均衡器解决问题.这允许更轻松的回滚等。

【讨论】:

【参考方案3】:

您可以使用 AWS CLI 实现您想要做的事情。如果您在 CI/CD 管道中配置了 AWS CLI,则可以使用命令“start-deployment”。

aws amplify start-deployment --app-id <value> --branch-name <value> --source-url <value>

在上述命令中,使用 --source-url 参数指定 Amplify 可以从中下载 zip 文件的 URL(该 URL 应该是可公开访问的)。运行上述命令后,您应该能够在 Amplify 控制台屏幕上看到部署。

您也可以使用 create-deployment 和 start-deployment 命令实现相同的目的。使用这种方法,首先,您可以在 create-deployment 命令中传递 zip 文件,其次,在 start-deployment 命令期间,您不必使用 --source-url 参数。使用 Web UI 手动上传 zip 时,您可以在开发人员工具的“网络”选项卡中看到这些命令被调用。

【讨论】:

以上是关于如何使用 AWS/Amplify CLI 部署现有 Amplify 应用程序的新版本而无需用户交互?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify CLI CloudFront S3 限制

AWS amplify add auth:如何在执行 amplify cli 后添加重定向登录 URI

如何在自定义解析器 AWS Amplify CLI 中查询 API?

AWS- Amplify - Appsync:使用 CLI 从 Android 应用程序更改云资源时,正确的工作流程是啥?

AWS Amplify CLI:将资源推送到云时出错

AWS Amplify CLI 生成的 GraphQL 突变中的 $condition 输入参数是啥?