如何在模板文件中为 CloudFront 函数设置 FunctionCode 属性?

Posted

技术标签:

【中文标题】如何在模板文件中为 CloudFront 函数设置 FunctionCode 属性?【英文标题】:How to set FunctionCode property for a CloudFront Function in a template file? 【发布时间】:2021-08-09 00:07:21 【问题描述】:

我正在尝试使用云形成(YAML 模板文件)在我的堆栈中部署 CloudFront 函数。如何为我的 CloudFront 函数指定 FunctionCode (AWS docs) 属性?

AddhtmlPostfixFunction:
    Type: AWS::CloudFront::Function
    Properties:
      Name: !Sub "$ApplicationName-add-html-postfix"
      AutoPublish: true
      FunctionCode: "---> Path to my .js-file? <---"
      FunctionConfig:
        Comment: "Adds .html postfix to viewer requests"
        Runtime: cloudfront-js-1.0

除了CLI commands that has been documented from AWS 之外,我找不到任何此类示例。

【问题讨论】:

【参考方案1】:

可以使用内联代码!

AddHTMLPostfixFunction:
    Type: AWS::CloudFront::Function
    Properties:
      Name: !Sub "$ApplicationName-add-html-postfix"
      AutoPublish: true
      FunctionCode: |
        function handler(event) 
          var hasExtension = /(.+)\.[a-zA-Z0-9]2,5$/
          var request = event.request
          var uri = request.uri

          // If the request does not have any extension, add '.html'
          if (uri && !uri.match(hasExtension)) 
            request.uri = `$uri.html`
          

          return request
        
      FunctionConfig:
        Comment: "Adds .html postfix to viewer requests"
        Runtime: cloudfront-js-1.0

【讨论】:

我目前也面临同样的问题。是否只支持内联函数代码?或者是否有可能使用 URI?

以上是关于如何在模板文件中为 CloudFront 函数设置 FunctionCode 属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SWIG 中为 c++ 创建模板函数?

如何在 Mandrill 中为本机 Mailchimp 的合并标签设置值?

如何在 C++ 中为模板化函数创建宏

如何在 Lambda 函数中使用 AWS.CloudFront.Signer

***域上的 Cloudfront dist

如何使用 Cloudfront 设置 AWS Elastic Beanstalk 以在 PHP 堆栈上托管图像和视频