0

我按照此tutorial设置了AWS Lambda函数,该函数在上载到S3并填充DynamoDB时调用。AWS SAM - 资源之间的循环依赖关系错误

我试图达到与AWS SAM相同,我需要定义一个template.yaml文件与配置信息。我不断收到此错误与Cloudformation部署时 -

Failed to create the changeset: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state Status: FAILED. Reason: Circular dependency between resources: [LambdaPerm] 

我找不到很多的相关信息,所以我努力调试。什么导致这个错误,我该如何解决这个问题?这里是我的模板配置 -

AWSTemplateFormatVersion: '2010-09-09' 
Transform: AWS::Serverless-2016-10-31 
Resources: 
    Gradebook: 
    Type: AWS::Serverless::Function 
    Properties: 
     FunctionName: LambdaGradebookServerless 
     Handler: serverless.LambdaGradebook 
     Runtime: java8 
     CodeUri: ./target/serverless-0.0.1-SNAPSHOT.jar 
     Role: arn:aws:iam::xxxxxxxxxxxx:role/lambda-s3-execution-role 
    LambdaPerm: 
    Type: AWS::Lambda::Permission 
    Properties: 
     Action: lambda:InvokeFunction 
     FunctionName: 
     Ref: Gradebook 
     Principal: s3.amazonaws.com 
     SourceAccount: 
     Ref: AWS::xxxxxxxxxxxx 
     SourceArn: 
     Fn::Join: 
     - ':' 
     - - arn 
      - aws 
      - s3 
      - '' 
      - '' 
      - Ref: gradebookBucket 
    gradebookBucket: 
    Type: AWS::S3::Bucket 
    Properties: 
     Bucket: gradebook-lambda 
     NotificationConfiguration: 
     LambdaConfigurations: 
     - Event: s3:ObjectCreated:* 
      Function: 
      Ref: Gradebook 
+1

顺便说一句:您可以使用!Ref“AWS :: AccountId”而不是硬编码您的账户ID。不是你的循环依赖的原因。 –

回答

0

我得到了循环依赖性错误,事实证明这是一个缺少的参数,我从CloudFormation模板上的资源引用!