1

我想在啓用了cloudwatch指標的階段部署此工具。爲此,我需要使用需要舞臺名稱的aws_api_gateway_method_settings。如果不使用aws_api_gateway_stage創建舞臺,則會拋出一個錯誤,指出舞臺不存在。當我試圖創造一個舞臺時,它的說法已經存在。如何使用terraform在已啓用cloudwatch指標的API網關中創建階段?

我試過的一個解決方案是使用aws_api_gateway_deployment和另一個使用aws_api_gateway_stage兩個不同的名稱創建兩個階段之一。有沒有其他解決方案呢?

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" 
    } 
} 

例外:

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

似乎你已經創建了雄鹿,先從控制檯清理它。 – BMW

+0

@寶馬,我不是從控制檯創建任何東西。 'aws_api_gateway_deployment'和'aws_api_gateway_stage'試圖單獨創建舞臺。 – Gangaraju

回答

2

我想通了,我們不需要明確的創建階段。 aws_api_gateway_deployment創建了一個階段,但需要設置depends_on。我之前嘗試過這種方式,但沒有輸入depends_on,這會引發錯誤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" 
    } 
} 
相關問題