AWS::CloudFront::Function
Creates a CloudFront function.
To create a function, you provide the function code and some configuration information about the function. The response contains an Amazon Resource Name (ARN) that uniquely identifies the function, and the function’s stage.
By default, when you create a function, it’s in the DEVELOPMENT
stage. In this
stage, you can test the function in the CloudFront console (or with
TestFunction
in the CloudFront API).
When you’re ready to use your function with a CloudFront distribution, publish the
function to the LIVE
stage. You can do this in the CloudFront console, with
PublishFunction
in the CloudFront API, or by updating the
AWS::CloudFront::Function
resource with the AutoPublish
property set to true
. When the function is published to the
LIVE
stage, you can attach it to a distribution’s cache behavior, using the
function’s ARN.
To automatically publish the function to the LIVE
stage when it’s
created, set the AutoPublish
property to true
.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::CloudFront::Function", "Properties" : { "AutoPublish" :
Boolean
, "FunctionCode" :String
, "FunctionConfig" :FunctionConfig
, "FunctionMetadata" :FunctionMetadata
, "Name" :String
} }
YAML
Type: AWS::CloudFront::Function Properties: AutoPublish:
Boolean
FunctionCode:String
FunctionConfig:FunctionConfig
FunctionMetadata:FunctionMetadata
Name:String
Properties
AutoPublish
-
A flag that determines whether to automatically publish the function to the
LIVE
stage when it’s created. To automatically publish to theLIVE
stage, set this property totrue
.Required: No
Type: Boolean
Update requires: No interruption
FunctionCode
-
The function code. For more information about writing a CloudFront function, see Writing function code for CloudFront Functions in the Amazon CloudFront Developer Guide.
Required: Yes
Type: String
Update requires: No interruption
FunctionConfig
-
Contains configuration information about a CloudFront function.
Required: Yes
Type: FunctionConfig
Update requires: No interruption
FunctionMetadata
-
Contains metadata about a CloudFront function.
Required: No
Type: FunctionMetadata
Update requires: No interruption
Name
-
A name to identify the function.
Required: Yes
Type: String
Pattern:
[a-zA-Z0-9-_]{1,64}
Minimum:
1
Maximum:
64
Update requires: No interruption
Return values
Fn::GetAtt
The Fn::GetAtt
intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.
For more information about using the Fn::GetAtt
intrinsic function, see Fn::GetAtt
.
FunctionARN
-
The ARN of the function. For example:
arn:aws:cloudfront::123456789012:function/ExampleFunction
.To get the function ARN, use the following syntax:
!GetAtt Function_Logical_ID.FunctionMetadata.FunctionARN
FunctionMetadata.FunctionARN
-
The Amazon Resource Name (ARN) of the function. The ARN uniquely identifies the function.
Examples
Create a CloudFront function
The following examples show how to create a basic CloudFront function.
YAML
Resources: CloudFrontFunction: Type: AWS::CloudFront::Function Properties: Name: MyFunctionName FunctionConfig: Comment: A basic CloudFront function Runtime: cloudfront-js-2.0 FunctionCode: | function handler(event) { // NOTE: This example function is for a viewer request event trigger. // Choose viewer request for the event trigger when you associate this function with a distribution. var response = { statusCode: 200, statusDescription: 'OK', headers: { 'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' } } }; return response; } AutoPublish: true
JSON
{ "Resources": { "CloudFrontFunction": { "Type": "AWS::CloudFront::Function", "Properties": { "Name": "MyFunctionNameJSON", "FunctionConfig": { "Comment": "A basic CloudFront function", "Runtime": "cloudfront-js-2.0" }, "FunctionCode": "function handler(event) {\n // NOTE: This example function is for a viewer request event trigger.\n // Choose viewer request for the event trigger when you associate this function with a distribution.\n var response = {\n statusCode: 200,\n statusDescription: 'OK',\n headers: {\n 'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' }\n }\n };\n return response;\n}\n", "AutoPublish": true } } } }