Skip to main content
  1. Posts/

Add Function di Amazon CloudFront

·2 mins·
aws aws
Table of Contents

Tutorial kali ini akan membahas cara menambahkan function Rewrite pada distribution cloudfront yang sebelumnya telah dibuat. Anda dapat menambahkan function ini untuk rewrite url index.html agar dapat terakses tanpa menuliskan nama file beserta ektensinya.

Panduan ini cocok untuk website Anda yang menggunakan framework seperti React, Angular, Vue, Gatsby, atau Hugo

Git repo
#

Amazon sudah membuatkan beberapa sample function yang dapat Anda gunakan salah satunya adalah URL Rewrite

git clone https://github.com/aws-samples/amazon-cloudfront-functions.git
$ cd amazon-cloudfront-functions/
$ ls
add-cache-control-header  add-origin-header     add-true-client-ip-header  CONTRIBUTING.md  NOTICE     redirect-based-on-country     verify-jwt
add-cors-header           add-security-headers  CODE_OF_CONDUCT.md         LICENSE          README.md  url-rewrite-single-page-apps

Terlihat jika ada beberapa sample function seperti add-origin-header, add-security-headers, dan lainnya. Namun panduan kali ini akan mencoba url-rewrite-single-page-apps

Create function
#

aws cloudfront create-function --name rewrite \
--function-config Comment="",Runtime=cloudfront-js-1.0 \
--function-code fileb://amazon-cloudfront-functions/url-rewrite-single-page-apps/index.js

Output

{
    "Location": "https://cloudfront.amazonaws.com/2020-05-31/function/arn:aws:cloudfront::0123456789012:function/rewrite",
    "ETag": "ETVPDKIKX0DER",
    "FunctionSummary": {
        "Name": "rewrite",
        "Status": "UNPUBLISHED",
        "FunctionConfig": {
            "Comment": "",
            "Runtime": "cloudfront-js-1.0"
        },
        "FunctionMetadata": {
            "FunctionARN": "arn:aws:cloudfront::0123456789012:function/rewrite",
            "Stage": "DEVELOPMENT",
            "CreatedTime": "2023-01-13T13:42:42.125000+00:00",
            "LastModifiedTime": "2023-01-13T13:42:42.125000+00:00"
        }
    }
}

Publish function
#

Publish function untuk menyalin function config dari stage DEVELOPMENT ke stage LIVE

aws cloudfront publish-function --name rewrite --if-match EXXXXXXXXX

Output

{
    "FunctionSummary": {
        "Name": "rewrite",
        "Status": "UNASSOCIATED",
        "FunctionConfig": {
            "Comment": "",
            "Runtime": "cloudfront-js-1.0"
        },
        "FunctionMetadata": {
            "FunctionARN": "arn:aws:cloudfront::0123456789012:function/rewrite",
            "Stage": "LIVE",
            "CreatedTime": "2023-01-13T13:55:18.526000+00:00",
            "LastModifiedTime": "2023-01-13T13:58:34.203000+00:00"
        }
    }
}

Associated distributions
#

Export config dengan get-distribution-config

aws cloudfront get-distribution-config --id EXXXXXXXXXXXXX \
--output json > dist-conf.json

Edit dist-conf.json pada bagian FunctionAssociations seperti berikut

            "FunctionAssociations": {
                "Quantity": 1,
                "Items": [
                    {
                        "FunctionARN": "arn:aws:cloudfront::0123456789012:function/rewrite",
                        "EventType": "viewer-request"
                    }
                ]
            },

Note: pastikan bagian ETag dihapus agar dapat melakukan update distribution {: .prompt-tip }

Update distribution
#

aws cloudfront update-distribution --id EXXXXXXXXXXXXX \
--if-match EXXXXXXXXXXXXX --cli-input-json fileb://dist-conf.json

Tunggu proses deploying lalu test akses

Sebelum ditambah function
#

![rewrite](/assets/img/Screen Shot 2023-01-14 at 06.44.50.png)

Sesudah ditambah function
#

![rewrite](/assets/img/Screen Shot 2023-01-14 at 07.02.42.png)

Related

Setting static website Amazon S3
·2 mins
aws aws
Setup AWS CloudFront distribution dengan S3 Origin
·2 mins
aws aws
Setting Bucket policy Amazon S3
·2 mins
aws aws
Cara membuat Bucket di Amazon S3
·1 min
aws aws
Cara membuat Users dan Groups AWS
·1 min
aws aws
Install AWS CLI di Linux
·1 min
aws aws