1

Je souhaite déployer ceci dans une étape avec les métriques cloudwatch activées. Pour cela, j'ai besoin d'utiliser aws_api_gateway_method_settings qui a besoin d'un nom de scène. Si vous ne créez pas d'étape en utilisant aws_api_gateway_stage, une erreur se produit, indiquant que l'étape n'existe pas. Quand j'essaye de créer une scène, son stade de dire existe déjà.Comment créer une étape dans API Gateway avec des métriques cloudwatch activées à l'aide de terraform?

Une solution que j'ai essayée crée deux étapes une utilisant aws_api_gateway_deployment et une autre utilisant aws_api_gateway_stage avec deux noms différents. Y a-t-il une autre solution pour cela?

resource "aws_api_gateway_deployment" "test-deploy" { 
    depends_on = [ /*something goes here*/] 

    rest_api_id = "${aws_api_gateway_rest_api.test.id}" 
    stage_name = "${var.stage_name}" 

    variables = { 
    "function" = "${var.lambda_function_name}" 
    } 
} 

resource "aws_api_gateway_stage" "test" { 
    stage_name = "${var.stage_name}" 
    rest_api_id = "${aws_api_gateway_rest_api.test.id}" 
    deployment_id = "${aws_api_gateway_deployment.test-deploy.id}" 
} 

resource "aws_api_gateway_method_settings" "settings" { 
    rest_api_id = "${aws_api_gateway_rest_api.test.id}" 
    stage_name = "${aws_api_gateway_stage.test.stage_name}" 
    method_path = "*/*" 

    settings { 
    metrics_enabled = true 
    logging_level = "INFO" 
    } 
} 

Exception:

aws_api_gateway_stage.test: Error creating API Gateway Stage: ConflictException: Stage already exists 
+0

Apparemment, vous avez déjà créé le cerf, nettoyez-le d'abord de la console. – BMW

+0

@BMW, je ne crée rien à partir de la console. 'aws_api_gateway_deployment' et' aws_api_gateway_stage' essayant de créer une scène séparément. – Gangaraju

Répondre

2

je me suis dit que nous ne avons pas besoin de créer une étape explicitement. aws_api_gateway_deployment crée une étape, mais doit définir depends_on. J'ai essayé cela plus tôt sans depends_on qui jette une erreur en disant stage not exists.

resource "aws_api_gateway_deployment" "test-deploy" { 
    depends_on = [ /*something goes here*/] 
    rest_api_id = "${aws_api_gateway_rest_api.test.id}" 
    stage_name = "${var.stage_name}" 
    variables = { 
    "function" = "${var.lambda_function_name}" 
    } 
} 

resource "aws_api_gateway_method_settings" "settings" { 
    depends_on = ["aws_api_gateway_deployment.test-deploy"] 
    rest_api_id = "${aws_api_gateway_rest_api.test.id}" 
    stage_name = "${var.stage_name}" 
    method_path = "*/*" 
    settings { 
    metrics_enabled = true 
    logging_level = "INFO" 
    } 
}