AWS::CloudFront::Function - AWS CloudFormation (original) (raw)
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 withTestFunction
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, withPublishFunction
in the CloudFront API, or by updating theAWS::CloudFront::Function
resource with the AutoPublish
property set to true
. When the function is published to theLIVE
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:
Properties
AutoPublish
A flag that determines whether to automatically publish the function to theLIVE
stage when it’s created. To automatically publish to theLIVE
stage, set this property to true
.
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_FunctionLogicalID_.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
}
}
}
}