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模板上的資源引用!