🐣
AWS::CloudFront::Function ではまった件
一行
FunctionCode
とFunctionConfig
は Required: Yes
問題と解決
ドキュメントを確認すると、FunctionCode
とFunctionConfig
は Required: 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>]
これ、必須じゃね?
まとめ
FunctionCode
とFunctionConfig
は省略しない。
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