2017-10-21 170 views
0

我剛剛開始學習terraform,並試圖設置一個彈性搜索集羣,其前面有一個API網關。我已成功構建服務,以便構建彈性搜索集羣,並通過輸出變量將輸出端點傳遞到API網關以獲取集成請求。Terraform服務之間的循環依賴

在我最初的試驗中,我使用aws_elasticsearch_domain.my_name.access_policies的廣泛開放訪問來測試我的模板代碼。這對測試的目的很好,但對於真實世界的使用,我想在aws_elasticsearch_domain.my_name.access_policies中使用API​​網關的ARN。這似乎是有問題的,因爲aws_api_gateway_integration.my_name.uri需要aws_elasticsearch_domain.my_name.endpoint來設置,但aws_elasticsearch_domain.my_name.access_policies需要aws_api_gateway_deployment.my_name.execution_arn

我猜這是相當普遍的,但我不知道如何通過輸出或變量來實現這一點。

感謝您的任何幫助。

回答

0

解決此問題的一種方法是創建一個route53端點,用於彈性搜索,並通過打破循環依賴關係對API網關中彈性搜索的route53端點進行硬編碼。

+0

感謝Monil。這可能會起作用,但我遇到了一個不同的問題,因爲AWS不會讓您有一個安全策略,允許您的API網關直接與Elastic Search進行對話而無需向世界開放。他們的解決方案是代理它或者在中間使用Lambda,這兩者都不是理想的,但在AWS允許進行直接安全通信之前我沒有太多的工作要做。 – earthtrip

+0

啊是的。我也不喜歡這個要求。但是,使用Lambda可以將您的資源置於VPC之後,並且只需將lambda與VPC交談即可。這是鏈接,如果它有幫助 https://aws.amazon.com/blogs/compute/using-api-gateway-with-vpc-endpoints-via-aws-lambda/ –

+0

感謝Monil。我現在在中間有一個Lambda,我只是希望我不必這樣做,因爲它在大多數呼叫中添加了足夠多的延遲> 100ms,因爲它們沒有做任何其他事情,因此我可以繞過AWS中奇怪的安全限制。但現在它必須要做,我希望亞馬遜能夠爲未來增加與DynamoDB等產品相同的安全模型,以便我可以直接返回到API網關 - > ElasticSearch。不過謝謝你! – earthtrip