gpt4 book ai didi

angular - 如何使用 AWS CloudFront S3 Lambda 部署 Angular Universal App 而不是运行 EC2 服务器?

转载 作者:行者123 更新时间:2023-12-03 13:41:25 25 4
gpt4 key购买 nike

直到今天,我有一个简单的、主要是静态的 Angular 9 应用程序,它将使用 CloudFront/S3 和一些 Lambda 函数提供服务。它运行良好,但没有服务器端渲染。今天我升级到 Angular 10 并按照说明添加了 angular 通用 https://angular.io/guide/universal .我找到了 @ng-toolkit/universal 和 @ng-toolkit/serverless 选项,但这不适用于 Angular 10。https://medium.com/better-programming/getting-started-with-serverless-angular-universal-on-aws-lambda-8754bcc4dc19 .这告诉我 Lambda 是一个选项,但不确定哪一段 (server.ts) 代码应该是 lambda?
在本地主机上添加 Universal 后,TLDR 一切正常。通常,对于这个项目的 CI/CD,我有一个 AWS Codepipeline 跟踪 repo 的 master 分支,一旦我将代码合并到 master,它就会拉取和构建并将 dist 文件夹复制到 S3 和 S3 存储桶作为 CloudFront 的源发行版。在 S3 存储桶 dist 文件夹更新后,CodePipeline 自动使我的分配无效,并且新的更改在 CloudFront 上生效。
由于我添加了 Universal,我必须重新设计 CI/CD,问题是是否在 EC2 和 Lambda 上部署 SSR。
当我跑 npm run build:ssr Angular 运行 ng build --prod && ng run proj:server:production一切准备就绪。如果我不使用 EC2 节点/快速服务器,究竟需要将什么部署为 Lambda?
如果我必须使用 EC2 而 Lambda 不是一个选项,我打算按照以下步骤操作:

  • Auto Scaling 组的 Node/Express EC2 部分
  • 为这些服务器创建目标组并与 Application Load Balancer 关联。
  • 使用 AWS CodeDeploy 在蓝/绿部署上的这些服务器上更新 Angular 应用程序
  • AfterInstall hook run, npm run build:ssr (可能是 pm2 或其他保持事件状态的东西)或其他一些命令?
  • 让负载均衡器重定向到端口 443 流量到节点/快速服务器上的 4000
  • 将 ALB 添加为 CloudFront 的源,而不是像现在这样将 S3 存储桶作为 CloudFront 的源。我是否还需要使用 dist 更新 S3 存储桶?

  • 任何帮助确定这个 Angular Universal 部署部分都会非常有帮助,特别是如果我可以使用 Lambda 进行无服务器 SSR,那么持续的头痛就会少很多。

    最佳答案

    您可以尝试在 Cloudfront 中的 Lambda@Edge 上运行您的 SSR,但之前请检查您的用例的限制/限制和配额。
    你必须用 lambda-wrapper 包装你的 express 代码:https://www.npmjs.com/package/aws-serverless-express-edge

    关于angular - 如何使用 AWS CloudFront S3 Lambda 部署 Angular Universal App 而不是运行 EC2 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63162698/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com