15

Serverless-1.0.0-rc.1 एक एडब्ल्यूएस एपीआई गेटवे के माध्यम से सुलभ होने के लिए एक एपीआई तैनात करने में सक्षम बनाता है।एक सर्वर रहित-1.0.0 फ्रेमवर्क परिभाषित/तैनात एपीआई के लिए एक कस्टम डोमेन कैसे जोड़ें?

प्रश्न: मुझे यादृच्छिक रूप से असाइन किए गए एक (URL https://qwertylgbtqert.execute-api....) के बजाय SSL प्रमाणपत्र के साथ एक कस्टम डोमेन के माध्यम से उजागर की गई तैनाती API की आवश्यकता है?

क्या यह serverless.yml या सर्वर रहित ढांचे के भीतर से किया जा सकता है?

service: my-service 
provider: 
    name: aws 
    runtime: nodejs4.3 

functions: 
    generate: 
    handler: handler.generate 
    events: 
     - http: 
     method: get 
     path: url 
     cors: true 

एक सवाल जो इस से संबंधित है नहीं है: the answer here, लेकिन किसी लागू उत्तर प्रदान नहीं करता है

यहाँ मेरी सरल सेवा serverless.yml परिभाषा है। विशेष रूप से serverless.yml के भीतर से कस्टम डोमेन को असाइन कैसे करें।

ऐसा सोचा कि अगर एडब्ल्यूएस :: रूट 53 संसाधन और लीवरेज बनाना संभव है, हालांकि मुझे नहीं पता कि सर्वर में ऐसा कैसे किया जाए।

उत्तर

17

आपको पहले कस्टम डोमेन बनाना और प्रमाणपत्र अपलोड करना होगा। यह इस कोड का हिस्सा नहीं होना चाहिए या सॉफ्टवेयर के इस टुकड़े की तैनाती नहीं होनी चाहिए।

आपके पास कस्टम डोमेन होने के बाद आपको क्लाउडफॉर्मेशन के संदर्भ में सोचने की आवश्यकता है।

सर्वर रहित फ्रेमवर्क में अन्य सभी चीज़ों की तरह; आप AWS में संसाधनों को प्रशासित करने के लिए क्लाउडफॉर्मेशन टेम्पलेट्स का लाभ उठा सकते हैं।

तो आपका प्रश्न क्लाउडफॉर्मेशन में अपने कस्टम डोमेन पर अपना एपीआई गेटवे कैसे जोड़ सकता है (संकेत: यदि आप सर्वर रहित फ्रेमवर्क के बजाय क्लाउडफॉर्मेशन की खोज करते हैं तो Google पर बहुत अधिक सहायता है)? क्लाउडफॉर्मेशन में AWS::ApiGateway::BasePathMapping बनाकर उत्तर है।

यह आपके serverless.yml फ़ाइल में संसाधनों में किया जाता है। उदाहरण के लिए इस तरह:

resources: 
    Resources: 
     pathmapping: 
      Type: AWS::ApiGateway::BasePathMapping 
      Properties: 
       BasePath: oauth2 
       DomainName: ${self:vars.domainName} 
       RestApiId: 
        Ref: ApiGatewayRestApi 
       Stage: ${self:vars.stage} 

यह आपको domainName और चरणों आप उपयोग के लिए serverless.env.yml फ़ाइल में stageName के लिए चर राशि की आवश्यकता है।

संपादित करें: आरसी 1 से पहले सर्वर रहित फ्रेमवर्क 1 के संस्करणों के लिए आपको पथदर्शी संसाधन में DependsOn: IamPolicyLambda जोड़ना होगा। RC1 पहले https://github.com/serverless/serverless/pull/1783

आप कोई फर्क नहीं पड़ता कि मैं क्या उपयोग करें या मैं इसे कैसे टाइप करें, मैं हमेशा त्रुटि मिलती है ApiGatewayRestApi

+0

के बजाय RestApiApigEvent का उपयोग करना चाहिए 'pathmapping- अवैध डोमेन नाम पहचानकर्ता निर्दिष्ट' है, भले ही इस में तय किया गया था मेरे डोमेन नाम एडब्ल्यूएस के माध्यम से काम कर रहे हैं। अजीब! अद्यतन: अजीब, यह हमारे .xyz टीएलडीआर की वजह से है! –

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