एडब्ल्यूएस-सीडीके का उपयोग करके एपीगेटवे से एपिगेटवेव2 में माइग्रेट कैसे करें?

विशेष रूप से: मैं उस संसाधन से LambdaRestApi और restApiId और deploymentStage का उपयोग कर रहा हूं।

    // old
    const apiGw = new apigateway.LambdaRestApi(this, 'MyAPI', {
      handler: lambdaFrontend,
      proxy: true,
      binaryMediaTypes: ['*/*'],
    });

    // new
    const apiGw2 = new apigateway.CfnApi(this as any, 'MyAPIV2', {
      protocolType: "http",
      target: lambdaFrontend.functionArn,
    })

मैं सीएफ के लिए उत्पत्ति स्रोत प्राप्त करने की कोशिश कर रहा हूं: const domainName = ${apiGw.restApiId}.execute-api.${this.region}.${this.urlSuffix};

पहला प्रश्न: मैं ApiGW2 के साथ domainName को कैसे पुनः प्राप्त कर सकता हूं?

मुझे स्टेजनाम की भी आवश्यकता है। वर्तमान में मैं इसे इस प्रकार पुनर्प्राप्त कर रहा हूं: const originPath = '/' + apiGw.deploymentStage.stageName;

दूसरा प्रश्न: मैं ApiGW2 के साथ मूल पथ कैसे प्राप्त कर सकता हूं?

वैकल्पिक रूप से: क्या मेरे ApiGW2 को CF से जोड़ने का कोई बेहतर तरीका है?

    const fecf = new cf.CloudFrontWebDistribution(this, "MyCF", {
      originConfigs: [{
        customOriginSource: {
          domainName: `${apiGw.restApiId}.execute-api.${this.region}.${this.urlSuffix}`,
        },
        originPath: '/' + apiGw.deploymentStage.stageName,
      ...
   }
4
evayly 16 फरवरी 2020, 19:02

1 उत्तर

सबसे बढ़िया उत्तर

इसे अब काफी आसानी से हल किया जा सकता है क्योंकि हमारे पास अभी इसके लिए आधिकारिक दस्तावेज हैं। अगर कोई वहां से अभी V2 में माइग्रेट करना चाहता है, तो यह तरीका है:

    const httpApiIntegration = new apigatewayv2Integrations.LambdaProxyIntegration({
      handler: fn,
    });
    const httpApi = new apigatewayv2.HttpApi(this, "MyApiV2");
    httpApi.addRoutes({
      path: "/",
      methods: [HttpMethod.ANY],
      integration: httpApiIntegration,
    });

    new cloudfront.CloudFrontWebDistribution(this, "MyCf", {
      defaultRootObject: "/",
      originConfigs: [
        {
          customOriginSource: {
            domainName: `${httpApi.httpApiId}.execute-api.${this.region}.${this.urlSuffix}`,
          },
          behaviors: [
            {
              isDefaultBehavior: true,
            },
          ],
        },
      ],
      enableIpV6: true,
    });

https://docs.aws.amazon.com/cdk/api/latest/docs/aws-apigatewayv2-readme.html

कदम:

  • एक एकीकरण बनाएं (उदाहरण के लिए एक लैम्ब्डा फ़ंक्शन), यह एक समर्पित पैकेज (एपिगेटवेव 2-एकीकरण) से आता है
  • एक HttpApi बनाएं, किसी विकल्प की आवश्यकता नहीं है
  • नया: APIGWv1 के विपरीत आपको अपने पथों के लिए रूट हैंडलर जोड़ने होंगे (httpApi.addRoutes)।
  • क्लाउडफ़्रंट कॉन्फ़िगरेशन बहुत समान है
1
evayly 20 नवम्बर 2020, 23:07
अरे 1 प्रश्न, आप लैम्ब्डा उपनाम को लैम्ब्डाप्रॉक्सी इंटीग्रेशन में कैसे पास कर सकते हैं?
 – 
ken
26 मई 2021, 16:51
और यह भी कि एपी स्टेज के लिए स्टेज वेरिएबल कैसे डालें? एपिगेटवेV2 . का उपयोग करके
 – 
ken
26 मई 2021, 16:51