【问题标题】:SAM deployment of lambda (EventSource MQTT) fails with invalid parameter VIRTUAL_HOSTlambda (EventSource MQTT) 的 SAM 部署因参数 VIRTUAL_HOST 无效而失败
【发布时间】:2022-02-15 21:37:26
【问题描述】:

我正在努力解决在我们的应用程序的两次部署之间突然出现的问题。

我们正在做的是。有一个配置了 EventSource 的 lambda 函数。在这种情况下,它是一个 MessageQueue (MQ) 事件,侦听 AmazonMQ RabbitMQ 代理。它运行了好几个月,但今天的部署失败了。

上次工作部署:2022-02-02 11:06:16 UTC+0100

错误:

Resource handler returned message: "Invalid request provided: Invalid parameters: VIRTUAL_HOST (Service: Lambda, Status Code: 400, Request ID:, Extended Request ID: null)" (RequestToken: , HandlerErrorCode: InvalidRequest)

模板摘录:

    PagespeedCrawlerFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
        CodeUri: .
        Events:
            MQEvent:
                Type: MQ
                Properties:
                    BatchSize: 120
                    Enabled: true
                    Broker: 'arn:aws:mq:us-east-1:11111:broker:cwv-broker:11111'
                    Queues:
                        - 'consumer-queue-name'
                    SourceAccessConfigurations:
                        - Type: BASIC_AUTH
                          URI: 'arn:aws:secretsmanager:us-east-1:1111:secret:global-secrets/rabbitmq-broker-credentials'
                        - Type: VIRTUAL_HOST
                          URI: '/consumervhost'
        FunctionName: 'consumer-v1-prod'
        Handler: handler/consumer.php
        Layers:
            - !Sub 'arn:aws:lambda:${AWS::Region}:209497400698:layer:php-80:16'
            - !Sub 'arn:aws:lambda:${AWS::Region}:403367587399:layer:redis-php-80:11'
        MemorySize: 250
        Policies:
            -
                AWSSecretsManagerGetSecretValuePolicy:
                    SecretArn: 'arn:aws:secretsmanager:us-east-1:11111:secret:global-secrets/rabbitmq-broker-credentials'
            -
                VPCAccessPolicy: {}
            - !Ref CwvMqAccessPolicy
        ReservedConcurrentExecutions: 5
        Runtime: provided.al2
        Timeout: 900
        VpcConfig:
            SecurityGroupIds:
                - !ImportValue MainVPC-DefaultSecurityGroup
            SubnetIds:
                - !ImportValue MainVPC-SubnetPrivateA
                - !ImportValue MainVPC-SubnetPrivateB
    Parameters:
        RetentionDays: 1

Sam 版本:SAM CLI,版本 1.37.0

部署脚本:

sam package \
    --output-template-file /tmp/deploy-stack.yaml \
    --s3-bucket "deployment-resources" \
    --profile "$AWS_PROFILE"

sam deploy \
    --template-file /tmp/deploy-stack.yaml \
    --s3-bucket "deployment-resources" \
    --capabilities CAPABILITY_IAM \
    --stack-name "consumer-prod-v1" \
    --profile "$AWS_PROFILE"

非常感谢您的帮助。

【问题讨论】:

    标签: aws-lambda amazon-cloudformation aws-sam


    【解决方案1】:

    我设法解决了这个问题。

    该错误令人难以置信地误导了 Cloudformation。 与其抱怨参数 VIRTUAL_HOST 无效,不如说: 您不能更新已经存在的 EventSource

    在深入了解我的设置后发现,当前的 BatchSize 在我们的生产环境中设置为 50,尽管它应该是 120。 要更新 BatchSize,您需要从模板中删除事件、部署它、使用新的 BatchSize 再次添加它并再次部署。

    这样做解决了部署问题。

    自从我们使用事件触发器以来,我就意识到了这个更新问题,但这个错误消息让我完全困惑。

    长话短说。如果您在 Lambda 上遇到过 Event-Trigger 问题,请先检查您是否打算在触发器上部署不可更新的更改。

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2021-09-22
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多