2017-12-14 4 views
0

Ich versuche, OpenAPI zu verwenden, weil es wie ein Standard aussieht und es weniger umständlich ist als Terraform-Ressourcen. Ich habe konvertierte json zu dem, was Terraforming nehmen könnte, aber ich bekomme die Fehlermeldung:Wie verwende ich OpenAPI für aws_api_gateway_rest_api

module.aws_api_gateway.aws_api_gateway_rest_api.CICDAPI: body must be a single value, not a list 

Bellow ist mein Code:

resource "aws_api_gateway_rest_api" "CICDAPI" { 
    name  = "cicdapi" 
    description = "cicd build pipeline" 
    binary_media_types = [ 
    "application/json" 
    ] 

    body = { 
     swagger = 2 
     info { 
     title = "AwsServerlessExpressApi" 
     } 
     basePath = "/prod" 
     schemes = [ 
     "https" 
     ] 
    .... 

Ich habe noch ein Beispiel zu finden, wie wir OpenAPI zuweisen können aws Gateway api Ressource. Kann ich Körper einfach eine JSON-Schnur machen ??? Es wird nirgendwo in der Dokumentation gesagt.

Antwort

1

Wie Sie durch den Fehler sehen können, muss es eine Zeichenfolge sein, anstatt eine hashmap wie Sie in Ihrem Code haben.

Sie sollten in der Lage sein, den Körperwert einfach in eine heredoc zu verpacken.

So wollen Sie so etwas wie:

resource "aws_api_gateway_rest_api" "CICDAPI" { 
    name  = "cicdapi" 
    description = "cicd build pipeline" 
    binary_media_types = [ 
    "application/json" 
    ] 

    body = <<EOF 
{ 
    swagger = 2 
    info { 
    title = "AwsServerlessExpressApi" 
    } 
    basePath = "/prod" 
    schemes = [ 
    "https" 
    ] 
.... 
} 
EOF 
} 

Die docs fehlen dies zur Erläuterung, aber Sie können auch sehen, wie es in der acceptance test umgesetzt wird.

Ich müsste das auch überprüfen, aber ich denke, dass Sie wahrscheinlich Ihre OpenAPI-Spezifikation aus einer Datei laden können, indem Sie body = "${file("path/to/file")}"

verwenden