首页 > 解决方案 > 将 Angular 应用程序部署到 AWS Elastic beanstalk

问题描述

我正在尝试将一个非常基本的角度应用程序部署到弹性豆茎。该项目是使用 angular cli 创建的。我没有对这个项目中的文件进行任何更改。

这是我部署应用程序所采取的步骤

  1. 在我的项目的根文件夹中执行“ng build”
  2. 将 @angular/cli 依赖项从 devDependencies 移动到 package.json 中的依赖项
  3. 将 dist 文件夹的内容与 package.json 一起压缩
  4. 将 zip 文件夹部署到配置了 node.js 平台的 AWS EB,节点版本 8.11.3,与我的本地环境相同。

当我检查 eb-activity.log 时,我总是以“npm install failed”错误告终。

我在这里错过了一些微不足道的事情吗?非常感谢将角度应用程序部署到 EB 的任何帮助。

标签: node.jsangularamazon-web-services

解决方案


虽然这并没有具体回答您的问题,但我认为 Elastic Beanstalk 不是适合这项工作的工具。我强烈建议在 S3 上的静态网站上托管,如果您想要 https 和自定义域名,请将 CloudFront 分配放在它前面。

  1. 创建一个 S3 存储桶,例如 www.mydomainname.com

  2. 启用静态网站托管

  3. 将存储桶策略设置为公开阅读

    {
        "Version": "2008-10-17",
        "Statement": [
            {
                "Sid": "PublicReadForGetBucketObjects",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::www.mydomainname.com/*"
            }
        ]
    }
    
  4. 将 Angular 应用程序在本地构建到 dist 文件夹中。

  5. 使用aws-cli将文件推送到网站

    aws s3 sync dist s3://www.mydomainname.com/

该解决方案将花费几美分,远低于 Elastic Beanstalk 解决方案(EC2、EBS、ELB)。Elastic Beanstalk 非常适合单体应用程序,但它们的存在已被编号,当您谈论 SPA、IMO 时,它们的范式是错误的。

我知道我现在很幸运,但我也强烈建议使用无服务器框架来构建和部署 NodeJS API 端点,以便您的 Angular 应用程序与之交互。


推荐阅读