Можно ли использовать AWS Lambda для обработки HTTP-ответа без выполнения соответствующего HTTP-запроса? - PullRequest
1 голос
/ 30 мая 2019

Я должен сделать HTTP-запрос, который занимает много времени, чтобы получить ответ. Я не хочу, чтобы AWS Lambda делал этот запрос, так как с меня будет взиматься плата за время ожидания ответа. Есть ли способ использовать AWS Lambda для обработки ответа без оплаты во время ожидания?

1 Ответ

1 голос
/ 31 мая 2019

Исходя из моего комментария, я бы рекомендовал часто подключаться к конечной точке длинного опроса, а не оставаться на связи в течение длительного времени.Вы можете использовать правило CloudWatch для запуска лямбда-функции каждые 5 минут (или любой другой интервал, который вы выберете).Вы можете дать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...