0

Je tente de configurer AWS Codepipeline avec une pile SAM de Cloudformation déployée sur un Lambda et ce faisant via la console Pipeline. Le pipeline passe le clone du processus Codecommit et le processus de construction avec Codebuild, échoue cependant sur le déploiement avec Cloudformation.CodePipeline impossible de localiser le fichier yaml du modèle SAM

Je reçois le message d'erreur suivant:

Action execution failed Invalid TemplatePath: MyAppBuild::samTemplate.yml

J'ai suivi la documentation (http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html) assez près et dans le champ 16 du formulaire de configuration de codepipeline (Fichier modèle) Je suis mettais samTemplate .yml. J'ai également samTemplate.yml à la racine de mon repo (qui est aussi la racine du projet).

J'ai associé le nom de l'artefact de sortie Codebuild au nom de l'artefact d'entrée Cloudformation et ils correspondent exactement.

Ai-je oublié quelque chose ici? Comment puis-je obtenir le processus de déploiement Cloudformation pour reconnaître le modèle sam?

EDIT 1 Je suis passé à l'utilisation de Codestar au lieu d'utiliser directement CodePipeline. Rien de spécial dans mon buildspec.yml, mais c'est ci-dessous si quelqu'un est intéressé.

version: 0.2 

phases: 
    install: 
    commands: 
     - echo "install" 
    pre_build: 
    commands: 
     - echo "pre_build" 
    build: 
    commands: 
     - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.json 
artifacts: 
    type: zip 
    files: 
    - template-export.json 

Une chose à garder à l'esprit pour toute personne nouvelle à CodeBuild, le fichier zip qui est créé à la suite est du répertoire racine de vos opérations de construction et est le fichier zip qui est transféré au déploiement final (dans mon cas, Lambda).

+0

Pouvez-vous inclure le buildspec.yml? – Unsigned

Répondre

1

Je crois que la sortie de l'étape de construction est ce qui doit être passé dans l'action CloudFormation.

Dans le didacticiel la sortie de génération est appelée NewSamTemplate.yaml

Donc, essayez de mettre à jour votre TemplatePath à MyAppBuild::NewSamTemplate.yml

1

Vous devez ajouter commande package aws de CloudFormation en vous buildspec.yml.

aws cloudformation package --debug --template-file <YourSamTemplate.yml> --s3-bucket <YourbucketName> --output-template-file <YourOutputSamTemplate.yml> 

où YourSamTemplate.yml est le nom de samTemplate.yml racine de votre projet. et YourOutputSamTemplate.yml est le nouveau nom que vous avez donné pour donner votre fichier de sortie après que la commande du paquetage de formation de nuages ​​soit terminée.

Ensuite, à l'étape suivante, vous devez définir votre artefact d'entrée comme sortie de votre scène aws codebuild, puis utiliser cet artefact d'entrée pour mapper votre modèle.

build-output::YourOutputSamTemplate.yml