簡體   English   中英

如何為 Cloudfront 創建 HttpOrigin 以使用 Lambda function url?

[英]How do I create a HttpOrigin for Cloudfront to use a Lambda function url?

嘗試設置Cloudfront行為以使用Lambda function url代碼如下:

    this.distribution = new Distribution(this, id + "Distro", {
      comment: id + "Distro",
      defaultBehavior: {
        origin: new S3Origin(s3Site),
        viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
      },
      additionalBehaviors: {
        [`api-prd-v2/*`]: {
          compress: true,
          originRequestPolicy: originRequestPolicy,
          origin: new HttpOrigin(functionUrl.url, {
            protocolPolicy: OriginProtocolPolicy.HTTPS_ONLY,
            originSslProtocols: [OriginSslPolicy.TLS_V1_2],
          }),
          allowedMethods: AllowedMethods.ALLOW_ALL,
          viewerProtocolPolicy: ViewerProtocolPolicy.HTTPS_ONLY,
          cachePolicy: apiCachePolicy,
        },

functionUrl object 在不同的堆棧中創建並傳遞到cloudformation堆棧,定義如下所示:

    this.functionUrl = new FunctionUrl(this, 'LambdaApiUrl', {
      function: this.lambdaFunction,
      authType: FunctionUrlAuthType.NONE,
      cors: {
        allowedOrigins: ["*"],
        allowedMethods: [HttpMethod.GET, HttpMethod.POST],
        allowCredentials: true,
        maxAge: Duration.minutes(1)
      }
    });

上面的代碼失敗,因為“參數來源名稱不能包含冒號”。 據推測,這是因為functionUrl.url的計算結果類似於https://xxx.lambda-url.ap-southeast-2.on.aws/ (注意https:// ),而HttpOrigin參數應該只是域名像xxx.lambda-url.ap-southeast-2.on.aws

我不能只編寫代碼來破解 url(即functionUrl.url.replace("https://", "") ),因為當我的代碼執行時,值或url屬性是${Token[TOKEN.350]}

function url 工作正常:如果我將 HttpOrigin 硬編碼為HttpOrigin url 的值(即像xxx.lambda-url.ap-southeast-2.on.aws )- 它工作正常。

如何使用 CDK 代碼設置從 Cloudfront 到 function url 的引用?

我正在使用aws-cdk版本 2.21.1。


有一個開放的問題來添加支持: https://github.com/aws/aws-cdk/issues/20090

使用CloudFormation Intrinsic Functions解析 url 字符串:

cdk.Fn.select(2, cdk.Fn.split('/', functionUrl.url));

// -> 7w3ryzihloepxxxxxxxapzpagi0ojzwo.lambda-url.us-east-1.on.aws

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM