Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 要使用哪个AWS服务部署后端?_Angularjs_Amazon Web Services_Amazon S3_Amazon Ec2_Aws Lambda - Fatal编程技术网

Angularjs 要使用哪个AWS服务部署后端?

Angularjs 要使用哪个AWS服务部署后端?,angularjs,amazon-web-services,amazon-s3,amazon-ec2,aws-lambda,Angularjs,Amazon Web Services,Amazon S3,Amazon Ec2,Aws Lambda,我有一个网站(静态位于s3),内容来自s3。我计划编写一个RESTAPI(节点或开放给建议)。当前端进行angular$http调用时,例如,如果我的站点名为example.com,则调用类似于应该解析的相对url(/Update) 我不确定应该使用哪种类型的aws服务来部署后端代码 已更新 Failed to set tags on AWS::Lambda::Function. IAM permissions lambda:ListTags, lambda:TagResource and

我有一个网站(静态位于s3),内容来自s3。我计划编写一个RESTAPI(节点或开放给建议)。当前端进行angular$http调用时,例如,如果我的站点名为example.com,则调用类似于应该解析的相对url(/Update)

我不确定应该使用哪种类型的aws服务来部署后端代码

已更新

   Failed to set tags on AWS::Lambda::Function. IAM permissions lambda:ListTags, lambda:TagResource and lambda:UntagResource are required to tag AWS::Lambda::Function resources and to propagate stack level tags.
我正在使用Codestar,使用Express web服务。这是我的模板.yml。和路线。代码之星构建进展顺利,但部署失败

template.yml

    AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::Serverless-2016-10-31
- AWS::CodeStar

Parameters:
  ProjectId:
    Type: String
    Description: AWS CodeStar projectID used to associate new resources to team members

Resources:
  HelloWorld:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs4.3
      Role:
        Fn::ImportValue:
          !Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
      Events:
        GetEvent:
          Type: Api
          Properties:
            Path: /
            Method: get
        PostEvent:
          Type: Api
          Properties:
            Path: /
            Method: post
  GetItemsBylId:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs4.3
      Role:
        Fn::ImportValue:
          !Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
      Events:
        GetEvent:
          Type: Api
          Properties:
            Path: /api/getItemsBylId/:id
            Method: get
这是我的app.js

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send({
    "Output": "Hello World!"
  });
});

app.get('/api/GetItemsBylId/:id', function (req, res) {
    res.send({
      "Output": "I am up!"
    });
});
下面是部署在getItemsById

   Failed to set tags on AWS::Lambda::Function. IAM permissions lambda:ListTags, lambda:TagResource and lambda:UntagResource are required to tag AWS::Lambda::Function resources and to propagate stack level tags.
我很确定这是因为id参数

更新


使用查询参数解决了标记问题。我现在使用的不是,resource:id,而是?id=“”。

没有足够的信息给你一个好的答案。这取决于后端需要做什么以及它需要如何扩展。如果您只需要提供简单的功能,那么AWS Lambda函数是一种好的、简单的、非常便宜的方法,它不需要旋转整个EC2实例。Lambda函数支持Node.js(以及Python、C#和Java)

这是一个很好的尝试方式,没有太多的承诺。如果您决定需要更合适的服务器环境或需要执行诸如写入文件系统之类的操作,那么代码应该很容易转移到运行节点的EC2实例


在子域(即API.example.com)上托管API可能比在与S3 bucket相同的域下更容易,但如果您需要它们都在同一个域下,您可以通过在网关中设置S3代理来实现。()

没有足够的信息给你一个好的答案。这取决于后端需要做什么以及它需要如何扩展。如果您只需要提供简单的功能,那么AWS Lambda函数是一种好的、简单的、非常便宜的方法,它不需要旋转整个EC2实例。Lambda函数支持Node.js(以及Python、C#和Java)

这是一个很好的尝试方式,没有太多的承诺。如果您决定需要更合适的服务器环境或需要执行诸如写入文件系统之类的操作,那么代码应该很容易转移到运行节点的EC2实例


在子域(即API.example.com)上托管API可能比在与S3 bucket相同的域下更容易,但如果您需要它们都在同一个域下,您可以通过在网关中设置S3代理来实现。(<

)这里有两件事要考虑:

+

Lambda通常被认为是无服务器解决方案。不用担心底层基础设施,只需编写代码,底层AWS管理的资源就可以为您运行它。API网关与Lambda集成,允许您将各种REST样式的URL映射到Lambda函数

优势

  • 对于快速通话,非常划算
  • 通过内置SDK与AWS服务轻松集成
  • 使用IAM角色可以轻松访问服务,而无需担心凭据
  • 它们中的许多可以并行运行,以处理大量的调用
  • 支持多种语言,包括NodeJS
  • 不必担心可用区域
缺点

  • 有限的资源
  • 处理本机编译包可能有点麻烦
  • 5分钟的硬性限制。这可能使处理图像/视频等任务不太可能被使用
  • 磁盘空间非常有限

一种利用EC2实例将它们分割成容器的有趣方法。如果你习惯于处理docker的图片,那就特别好了

优势

  • 处理大型文件的更好方法
  • 不必担心Lambda超时
  • 能够分割EC2实例,以更好地利用全部机器资源并获得您所支付的费用
缺点

  • 如果您不熟悉Docker/Containers,可能很难理解
  • 还是要比兰姆达路线贵
  • 如果要处理高IO类型的设置,可能需要重新考虑
  • 可能需要处理映射路由->服务
  • 您必须小心,您的实例不在单个可用性区域中,这实际上会使您的所有服务停机,直到您可以在另一个可用性区域中启动新资源

我建议对以IO为中心的工作负载进行研究。有许多可用选项,包括配置的IOPS、实例存储、高IO实例类型等

优势

  • 对系统的最大控制,以及对于那些使用传统VPS托管的用户来说可能更容易的设置
  • 当您需要处理自定义库、本机代码和各种语言时,这将非常容易
  • 附加到EC2实例的IAM角色可用于允许底层代码轻松访问AWS资源
  • 许多实例类型可用于高IO、高带宽和其他需求
  • 可以定制一个系统,然后将其转换为AMI,以允许复制系统
  • 可能比Docker/Container解决方案更易于使用
  • 可以轻松使用负载平衡器/自动缩放组,根据需要进行上下缩放,同时能够指向单个端点(负载平衡器),无需担心
缺点

  • 成本将成为一个问题
  • 持续监控以确保您的实例类型满足您的需求,并且您不会未充分利用您所支付的费用<