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
            }
        }
    }
}