无服务器 - Cloudformation - Lambda 事件创建错误

问题描述 投票:0回答:1

我尝试使用无服务器在现有 lambda 函数和 S3 存储桶之一上创建

s3:put
事件。

但是即使 lambda 函数不使用 nodejs12.x,也会从 AWS CloudFormation 收到此错误。需要注意的是 - lambda 很旧,所以它使用的是 python3.7,可能很快就会 EOL,但由于依赖于 python3.7,我们还无法升级版本

资源处理程序返回消息:“运行时参数 不再支持使用 nodejs12.x 创建或更新 AWS Lambda 功能。我们建议您使用新的运行时(nodejs18.x) 创建或更新函数。 (服务:Lambda,状态代码:400, 请求ID:)

在 CloudFormation 上,失败在于此资源创建

CustomDashresourceDashexistingDashs3LambdaFunction
,错误与上面相同。

这是我使用的无服务器代码 -

provider:
  name: aws
  runtime: python3.7
 .....
functions:
  antivirus-scan:
    handler: src/scan.lambda_handler
    awsKmsKeyArn: ${opt:kms_arn, ""}
    role: antivirusFunctionRole
    memorySize: 2048
    timeout: 300  # 5mins
    events:
      - s3:
          bucket: ${self:custom.antivirus_files_bucket}
          event: s3:ObjectCreated:*
          existing: true

我尝试删除该事件并重新创建它,但这不起作用。 S3 存储桶是在 CloudFormation 模板外部创建的。

amazon-web-services aws-lambda aws-cloudformation serverless-framework
1个回答
0
投票

我找到了原因,serverless v2 已弃用 https://github.com/serverless/serverless/issues/11400.

需要升级到v3。

当在存储桶事件上设置参数

existing: true
时,无服务器会创建一个 lambda 函数(自定义 S3 资源),该函数会在原始 lambda 上创建事件。请参阅使用现有存储桶。创建的此 lambda 在 Serverless 2 中已弃用的运行时(节点 12)上运行。

© www.soinside.com 2019 - 2024. All rights reserved.