🐣

AWS::CloudFront::Function ではまった件

2021/06/01に公開

一行

FunctionCodeFunctionConfigRequired: Yes

問題と解決

ドキュメントを確認すると、FunctionCodeFunctionConfigRequired: No となっている。
AWS::CloudFront::Function - AWS CloudFormation

が、省略するとスタックの作成に失敗する。
しょうがないので、CloudFormation はあきらめて、AWS CLI でやるかぁと、ヘルプを確認してみる。

% aws cloudfront create-function help
略
SYNOPSIS
            create-function
          --name <value>
          --function-config <value>
          --function-code <value>
          [--cli-input-json | --cli-input-yaml]
          [--generate-cli-skeleton <value>]

これ、必須じゃね?

まとめ

FunctionCodeFunctionConfigは省略しない。

index.html をつける AWS のサンプル を使ってみた。

AWSTemplateFormatVersion: '2010-09-09'

Resources:
  MyFunction:
    Type: AWS::CloudFront::Function
    Properties:
      Name: url-rewrite-single-page-apps
      FunctionConfig:
        Comment: "URL rewrite to append index.html to the URI for single page applications"
        Runtime: cloudfront-js-1.0
      AutoPublish: true
      FunctionCode: |
        function handler(event) {
            var request = event.request;
            var uri = request.uri;

            // Check whether the URI is missing a file name.
            if (uri.endsWith('/')) {
                request.uri += 'index.html';
            }
            // Check whether the URI is missing a file extension.
            else if (!uri.includes('.')) {
                request.uri += '/index.html';
            }

            return request;
        }

Discussion