2016-08-19 7 views
11

एडब्ल्यूएस एपीआई गेटवे में, मैं एक अंत बिंदु '/ उपयोगकर्ताओं/{userId}/someAction' के रूप में परिभाषित है, और मैं terraform के साथ इस पुनः बनानाटेराफॉर्म में, आप अनुरोध पथ में चर के साथ एपीआई गेटवे एंडपॉइंट कैसे निर्दिष्ट करते हैं?

मैं तो जैसे लिंक किए गए gateway_resource श्रृंखला के कुछ प्रकार के होने शुरू होगा कोशिश कर रहा हूँ ...

resource "aws_api_gateway_resource" "Users" { 
    rest_api_id = "${var.rest_api_id}" 
    parent_id = "${var.parent_id}" 
    path_part = "users" 
} 

//{userId} here? 

resource "aws_api_gateway_resource" "SomeAction" { 
    rest_api_id = "${var.rest_api_id}" 
    parent_id = "${aws_api_gateway_resource.UserIdReference.id}" 
    path_part = "someAction" 
} 

जिसमें मैं तो aws_api_gateway_method और बाकी सब कुछ परिभाषित करते हैं।

मैं इस अंतराल को टेराफॉर्म में कैसे परिभाषित करूं? टेराफॉर्म दस्तावेज और उदाहरण इस उपयोग के मामले को कवर नहीं करते हैं।

// List 
resource "aws_api_gateway_resource" "accounts" { 
    rest_api_id = "${var.gateway_id}" 
    parent_id = "${aws_api_gateway_resource.finance.id}" 
    path_part = "accounts" 
} 

// Unit 
resource "aws_api_gateway_resource" "account" { 
    rest_api_id = "${var.gateway_id}" 
    parent_id = "${aws_api_gateway_resource.accounts.id}" 
    path_part = "{accountId}" 
} 

तो फिर तुम विधि बना सकते हैं और सक्षम पथ पैरामीटर::

resource "aws_api_gateway_method" "get-account" { 
    rest_api_id = "${var.gateway_id}" 
    resource_id = "${var.resource_id}" 
    http_method = "GET" 
    authorization = "NONE" 

    request_parameters { 
    "method.request.path.accountId" = true 
    } 
} 

और अंत में आप

उत्तर

14

आप एक संसाधन जिसका path_part पैरामीटर का उपयोग करना चाहते है परिभाषित करने की जरूरत एकीकरण के भीतर सफलतापूर्वक मैपिंग बना सकते हैं:

resource "aws_api_gateway_integration" "get-account-integration" { 
    rest_api_id = "${var.gateway_id}" 
    resource_id = "${var.resource_id}" 
    http_method = "${aws_api_gateway_method.get-account.http_method}" 
    type = "HTTP" 
    integration_http_method = "GET" 
    uri = "/integration/accounts/{id}" 
    passthrough_behavior = "WHEN_NO_MATCH" 

    request_parameters { 
     "integration.request.path.id" = "method.request.path.accountId" 
    } 
} 

विधि को वहां करने की आवश्यकता है - और पैरामीटर सक्षम के साथ - एकीकरण मैपिंग के लिए काम करने के लिए।

+1

बहुत अच्छी तरह से किया गया। धन्यवाद!! – knaak

+1

यह केवल ओपी के प्रश्न के 'उपयोगकर्ता/{userId}' भाग के लिए नहीं है? वर्तमान में मूल प्रश्न के समान समस्या का सामना करना पड़ रहा है: 'संसाधन/{resourceId} 'काम करने में कामयाब रहा, लेकिन' संसाधन/{resourceId}/someAction' नहीं। '{pathId}' संसाधन के तहत एक और संसाधन बनाने की कोशिश की, इसकी अपनी विधि और एकीकरण के साथ, लेकिन मुझे "गुम प्रमाणीकरण टोकन" त्रुटि मिलती है - जिससे मुझे संदेह होता है कि यह वास्तव में कुछ भी नहीं बना रहा है। – yoaquim

0

मैं कम प्रतिष्ठा के कारण टिप्पणी नहीं कर सकता, लेकिन ऊपर दिए गए उत्तर में जोड़कर, आप parent_id को aws_api_gateway_resource पर इंगित करने के लिए बदल सकते हैं जिसमें गतिशील param है।

संबंधित मुद्दे