Исходя из моего комментария, я бы рекомендовал часто подключаться к конечной точке длинного опроса, а не оставаться на связи в течение длительного времени.Вы можете использовать правило 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