Je suis une instruction sur le site de Hashicorp concernant l'emballage d'un modèle CF dans Terraform. Il y a une bonne partie du code entier, mais le modèle CF fonctionne, donc le problème est avec le "wrapping"...

Le plan Terraform me donne cette sortie d'erreur :

terraform plan

Error: aws_cloudformation_stack.Momma: "template_body" contains an invalid JSON: invalid character 'A' looking for beginning of object key string

Error: aws_cloudformation_stack.Momma: : invalid or unknown key: source

Il semble donc que la ligne "AWSTemplateFormatVersion" soit ce qu'elle n'aime pas. D'où le 'A' qu'il capte, je suppose.

C'est la page Hashicorp que je suis, je me demande s'il y a des caractères d'échappement appropriés ou, si quelqu'un peut voir des problèmes de formatage immédiats avec mon JSON ?

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudformation_stack

terraform {}

provider "aws" {
  version = "= 2.61"
  region  = "ap-southeast-2"
}

resource "aws_cloudformation_stack" "Momma" {
  source = "../../aws_modules/aws-db-event-subscription"
  name   = "Momma-Stack"

  template_body = <<STACK
    {
AWSTemplateFormatVersion: 2010-09-09
Description: Team Server
Metadata:
  'AWS::CloudFormation::Interface':
    ParameterGroups:
      - Label:
          default: Deployment Options
        Parameters:
          - Environment
          - KeyPairName
          - VPCID
          - Subnet1ID
          - RemoteAccessCIDR
          - Owner
    ParameterLabels:
      KeyPairName:
        Default: Key Pair Name
      RemoteAccessCIDR:
        Default: External Access CIDR
      VPCID:
        Default: VPC ID
      Owner:
        Default: MommaTeam....

Merci pour les conseils proposés.

1
Scouse_Bob 18 nov. 2020 à 02:45

1 réponse

Meilleure réponse

Au moins deux problèmes sont apparents :

  1. source = "../../aws_modules/aws-db-event-subscription" n'est pas valide. Il n'y a aucun attribut appelé source dans aws_cloudformation_stack. Vous pouvez le supprimer.

  2. Votre template_body ne doit pas commencer par { dans :

  template_body = <<STACK
    {

C'est parce que vous utilisez YAML pour votre modèle, pas JSON.

1
Marcin 18 nov. 2020 à 00:27