0

J'ai suivi ce tutorial pour configurer une fonction AWS Lambda qui est appelée lors d'un téléchargement vers S3 et remplit DynamoDB.AWS SAM - Erreur de dépendance circulaire entre ressources

J'essaie d'atteindre la même chose avec AWS SAM pour lequel j'ai besoin de définir un fichier template.yaml avec les informations de configuration. Je continue à obtenir cette erreur lors du déploiement avec CloudFormation -

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

Je ne pouvais pas trouver beaucoup d'informations sur ce donc je me bats pour déboguer. Quelle est la cause de cette erreur et comment puis-je résoudre ce problème? Voici ma configuration de modèle -

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

BTW: Vous pouvez utiliser! Ref "AWS :: AccountId" plutôt que de coder en dur votre ID de compte. Pas la cause de votre dépendance circulaire cependant. –

Répondre

0

J'ai obtenu l'erreur de dépendance circulaire et il s'est avéré que c'était un paramètre manquant que je référençait à partir de la ressource sur le modèle CloudFormation !.