amazon-web-services - 是否可以在不发出相应的 HTTP 请求的情况下使用 AWS Lambda 来处理 HTTP 响应?

标签 amazon-web-services http aws-lambda

我必须发出一个需要很长时间才能收到响应的 HTTP 请求。我不希望 AWS Lambda 发出此请求,因为我需要为它等待响应的时间付费。有什么方法可以使用 AWS Lambda 来处理响应而不在等待时收费吗?

最佳答案

根据我的评论,我建议经常访问长轮询端点,而不是长时间保持连接。您可以使用 CloudWatch 规则每 5 分钟(或您选择的任何时间间隔)触发一次 lambda 函数。你可以给 Lambda 一个短的超时时间,比如 5-10 秒,这应该可以防止它运行太久。我假设长轮询端点将保证至少传递一次。

这是一些 CloudFormation YAML,可帮助您开始设置。远未完成,但应该能让您走上正轨。

Description: Automatically hit long poll endpoint
Resources:

  #################################################
  # IAM Role for Lambda
  #################################################
  ROLELAMBDADEFAULT:
    Type: AWS::IAM::Role
    Properties:
      RoleName: your-lambda-default
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - edgelambda.amazonaws.com
            - lambda.amazonaws.com
          Action: sts:AssumeRole
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
      - arn:aws:iam::aws:policy/service-role/AWSLambdaRole
      Policies: []


  #################################################
  # Lambda function
  #################################################
  LFUNC:
    Type: AWS::Lambda::Function
    Properties:
      Code:
        S3Bucket: bucket-with-code
        S3Key: code.zip
      Description: Some function name
      FunctionName: my-function-name
      Handler: index.handler
      MemorySize: 256
      Role: !GetAtt ROLELAMBDADEFAULT.Arn
      #choose your runtime here
      Runtime: nodejs8.10
      Timeout: 6

  #################################################
  # Rule to trigger the lambda
  #################################################
  RULE1:
    Type: AWS::Events::Rule
    Properties:
      Name: custom-trigger
      Description: Trigger my lambda
      ScheduleExpression: rate(5 minutes)
      State: ENABLED
      Targets:
        - Arn: !GetAtt LFUNC.Arn
          Id: uniqueid1

关于amazon-web-services - 是否可以在不发出相应的 HTTP 请求的情况下使用 AWS Lambda 来处理 HTTP 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56374391/

相关文章:

amazon-web-services - EC2上的运行Expect脚本挂起,但是在手动调用时成功运行

mongodb - 我无法使用 angular 2 发布到我的 mongodb 服务器

python - 如何在 python 中部署函数及其依赖项?

ruby - 使用 ruby​​ 在 simple_aws 中使用 get_metric_statistics

python - 如何使用 boto3 获取 RDS 实例的主机

node.js - 基于 Promise 的 Node http 框架?

ruby - 如何让我的 AWS Lambda 访问存储在 vendor/bundle 中的 gem?

amazon-web-services - 是否可以在不使用 s3 的情况下在 sagemaker 中进行预测

amazon-web-services - 无法通过 SSH 连接到 ec2 实例(浏览器和 cli)

http - 如何将 URL 查询参数添加到 HTTP GET 请求?