在无服务器中创建Lambda权限

Maz*_*zzy 5 node.js aws-lambda serverless-framework

我遇到了Serverless v1.5(撰写本文时当前可用的最新版本)的问题

我必须向lambda函数添加权限,并且尝试通过创建CF模板并与该函数的部署一起运行来实现此目的:

resources:
  Resources:
    logsGroup:
      Type: "AWS::Lambda::Permission"
      Properties: 
        Action: lambda:InvokeFunction
        FunctionName: 
          Fn::GetAtt:
            - "${self:custom.${opt:stage}.name}"
            - "Arn"
        Principal: "logs.amazonaws.com"
        SourceAccount:
          Ref: "AWS::AccountId"
        SourceArn: "arn:aws:logs:${self:provider.region}:*:log-group:*:*"
Run Code Online (Sandbox Code Playgroud)

这就是它的外观。我的问题是,当我尝试部署它时,出现一个错误,提示该函数尚未创建,这是可以理解的。我如何克服这个问题?有任何想法吗?

小智 4

没有足够的代表来添加评论 - 您是否尝试过向 Lambda Permission 资源添加DependsOn属性?显式设置该属性将导致 CloudFormation 等待 Lambda 函数资源创建后再创建此权限。

此外,如果您还不知道在项目根目录中创建的 .serverless 文件夹包含无服务器使用的 CloudFormation 模板,这在对意外的 CloudFormation 行为进行故障排除时会很有帮助。