# Amazon CloudFront

> Run your CloudFront CDN from a workflow: clear cached files after a deploy, stand up or retire distributions, tag them, and write, test and publish CloudFront Functions that rewrite requests at the edge.

App · Cloud Computing · 20 actions. Web page: https://docs.lodol.com/docs/integrations/amazon-cloudfront

## Actions

### Add tags

Add tags to a distribution or other CloudFront resource. A tag whose name already exists is overwritten; other tags are kept.

**Inputs**

- Distribution or ARN (`resource`, text, required): The distribution to tag: pick one or give its id. For another CloudFront resource, such as a function, give its ARN.
- Tags (`tags`, object, required): Tag names and values, such as team = web. Up to 50 tags; names up to 128 characters, values up to 256, using letters, digits, spaces and _.:/=+-@.

**Outputs**

- `resource_arn` (text)
- `tags` (object): The tags this step wrote.

**Example output**

```json
{
  "resource_arn": "arn:aws:cloudfront::123456789012:distribution/E2QWRUHAPOMQZL",
  "tags": {
    "team": "web"
  }
}
```

### Create a distribution

Put CloudFront in front of a website or other HTTP(S) origin. The new distribution gets its own cloudfront.net domain and takes a few minutes to deploy.

**Inputs**

- Origin domain (`origin_domain`, text, required): The host CloudFront fetches content from, such as www.example.com or an S3 website endpoint. A pasted URL is fine; its path becomes the origin path.
- Origin path (`origin_path`, text): An optional folder on the origin to serve from, such as /production.
- Origin protocol (`origin_protocol_policy`, text): How CloudFront connects to the origin. One of: `https-only` (HTTPS only (recommended)), `match-viewer` (Match the viewer's protocol), `http-only` (HTTP only (for origins without HTTPS, such as S3 websites)). Default: `https-only`.
- Viewer protocol (`viewer_protocol_policy`, text): How visitors may connect to the distribution. One of: `redirect-to-https` (Redirect HTTP to HTTPS), `https-only` (HTTPS only (HTTP is refused)), `allow-all` (HTTP and HTTPS). Default: `redirect-to-https`.
- Cache policy (`cache_policy_id`, text): How long CloudFront caches responses. Leave empty for CachingOptimized; pick CachingDisabled for dynamic content.
- Comment (`comment`, text): A name to recognise the distribution by, up to 128 characters.
- Default root object (`default_root_object`, text): The file to return for the bare domain, such as index.html. Leave empty to pass / to the origin.
- Enabled (`enabled`, true/false): Serve traffic as soon as it is deployed. Off creates it disabled. Default: `true`.
- Price class (`price_class`, text): Which edge locations serve it. One of: `PriceClass_All` (All edge locations (best performance)), `PriceClass_200` (North America, Europe, Asia, Middle East and Africa), `PriceClass_100` (North America and Europe only (lowest cost)). Default: `PriceClass_All`.
- HTTP version (`http_version`, text): The newest HTTP version visitors may use. One of: `http2` (HTTP/2), `http2and3` (HTTP/2 and HTTP/3), `http3` (HTTP/3), `http1.1` (HTTP/1.1). Default: `http2`.
- IPv6 (`ipv6_enabled`, true/false): Answer on IPv6 as well as IPv4. Default: `true`.
- Tags (`tags`, object): Tag names and values, such as team = web. Up to 50 tags; names up to 128 characters, values up to 256, using letters, digits, spaces and _.:/=+-@.

**Outputs**

- `aliases` (list): Alternate domain names (CNAMEs).
- `arn` (text)
- `cache_policy_id` (text)
- `comment` (text)
- `default_root_object` (text)
- `domain_name` (text): The distribution's own host name, such as d111111abcdef8.cloudfront.net.
- `enabled` (true/false)
- `etag` (text): The current version of the distribution's config.
- `http_version` (text)
- `id` (text): Such as E2QWRUHAPOMQZL.
- `in_progress_invalidation_batches` (number)
- `ipv6_enabled` (true/false)
- `last_modified_time` (text)
- `origins` (list): Each origin's domain name.
- `price_class` (text)
- `status` (text): InProgress while a change deploys, then Deployed.
- `viewer_protocol_policy` (text)

**Example output**

```json
{
  "aliases": [],
  "arn": "arn:aws:cloudfront::123456789012:distribution/E2QWRUHAPOMQZL",
  "cache_policy_id": "658327ea-f89d-4fab-a63d-7e88639e58f6",
  "comment": "Marketing site",
  "default_root_object": "index.html",
  "domain_name": "d111111abcdef8.cloudfront.net",
  "enabled": true,
  "etag": "E2QWRUHEXAMPLE",
  "http_version": "http2",
  "id": "E2QWRUHAPOMQZL",
  "in_progress_invalidation_batches": 0,
  "ipv6_enabled": true,
  "last_modified_time": "2026-09-01T09:00:00+00:00",
  "origins": [
    "www.example.com"
  ],
  "price_class": "PriceClass_All",
  "status": "InProgress",
  "viewer_protocol_policy": "redirect-to-https"
}
```

### Create a function

Create a CloudFront function from JavaScript code. It starts in the development stage; test it, then publish it to use it on a distribution.

**Inputs**

- Function name (`function_name`, text, required): Up to 64 letters, digits, hyphens and underscores. Must be unique in the account.
- Code (`code`, text, required): The function's JavaScript, with a handler(event) function that returns the request or response. Up to 40 KB.
- Runtime (`runtime`, text): The JavaScript runtime the function runs on. One of: `cloudfront-js-2.0` (JavaScript 2.0 (recommended)), `cloudfront-js-1.0` (JavaScript 1.0). Default: `cloudfront-js-2.0`.
- Comment (`comment`, text): An optional note about the function, up to 128 characters.

**Outputs**

- `arn` (text)
- `comment` (text)
- `created_time` (text)
- `etag` (text)
- `last_modified_time` (text)
- `name` (text)
- `runtime` (text)
- `stage` (text): DEVELOPMENT or LIVE.
- `status` (text)

**Example output**

```json
{
  "arn": "arn:aws:cloudfront::123456789012:function/add-security-headers",
  "comment": "Adds security headers",
  "created_time": "2026-09-01T09:00:00+00:00",
  "etag": "ETVPDKIKX0DER",
  "last_modified_time": "2026-09-01T09:00:00+00:00",
  "name": "add-security-headers",
  "runtime": "cloudfront-js-2.0",
  "stage": "DEVELOPMENT",
  "status": "UNPUBLISHED"
}
```

### Create an invalidation

Remove files from CloudFront's cache so the next request fetches them fresh from the origin. The first 1,000 paths each month are free; /* counts as one path.

**Inputs**

- Distribution (`distribution_id`, text, required): The distribution. Pick one, or give its id (such as E2QWRUHAPOMQZL), its ARN, or the link to its page in the CloudFront console.
- Paths (`paths`, list, required): The paths to clear, each starting with /, such as /index.html. End one with * to clear everything under it, such as /images/*.

**Outputs**

- `caller_reference` (text)
- `create_time` (text)
- `distribution_id` (text)
- `id` (text)
- `paths` (list)
- `status` (text): InProgress, then Completed.

**Example output**

```json
{
  "caller_reference": "lodol-0b8d4b5e-5f8f-4c1e-9d0a-2f6c1b7e9a11",
  "create_time": "2026-09-01T09:00:00+00:00",
  "distribution_id": "E2QWRUHAPOMQZL",
  "id": "I2J0I21PCUYOIK",
  "paths": [
    "/index.html",
    "/images/*"
  ],
  "status": "InProgress"
}
```

### Delete a distribution

Permanently delete a distribution. It must be disabled first and finished deploying (status Deployed), which takes a few minutes after disabling.

**Inputs**

- Distribution (`distribution_id`, text, required): The distribution. Pick one, or give its id (such as E2QWRUHAPOMQZL), its ARN, or the link to its page in the CloudFront console.

**Outputs**

- `deleted` (true/false)
- `distribution_id` (text)

**Example output**

```json
{
  "deleted": true,
  "distribution_id": "E2QWRUHAPOMQZL"
}
```

### Delete a function

Permanently delete a function, both stages. CloudFront refuses while a distribution still uses it.

**Inputs**

- Function (`function_name`, text, required): The CloudFront function. Pick one, or give its name, ARN or the link to its page in the CloudFront console.

**Outputs**

- `deleted` (true/false)
- `function_name` (text)

**Example output**

```json
{
  "deleted": true,
  "function_name": "add-security-headers"
}
```

### Get a distribution

Get one distribution: whether it is enabled, whether a change is still deploying (status InProgress) or done (Deployed), and its origins and cache settings.

**Inputs**

- Distribution (`distribution_id`, text, required): The distribution. Pick one, or give its id (such as E2QWRUHAPOMQZL), its ARN, or the link to its page in the CloudFront console.

**Outputs**

- `aliases` (list): Alternate domain names (CNAMEs).
- `arn` (text)
- `cache_policy_id` (text)
- `comment` (text)
- `default_root_object` (text)
- `domain_name` (text): The distribution's own host name, such as d111111abcdef8.cloudfront.net.
- `enabled` (true/false)
- `etag` (text): The current version of the distribution's config.
- `http_version` (text)
- `id` (text): Such as E2QWRUHAPOMQZL.
- `in_progress_invalidation_batches` (number)
- `ipv6_enabled` (true/false)
- `last_modified_time` (text)
- `origins` (list): Each origin's domain name.
- `price_class` (text)
- `status` (text): InProgress while a change deploys, then Deployed.
- `viewer_protocol_policy` (text)

**Example output**

```json
{
  "aliases": [],
  "arn": "arn:aws:cloudfront::123456789012:distribution/E2QWRUHAPOMQZL",
  "cache_policy_id": "658327ea-f89d-4fab-a63d-7e88639e58f6",
  "comment": "Marketing site",
  "default_root_object": "index.html",
  "domain_name": "d111111abcdef8.cloudfront.net",
  "enabled": true,
  "etag": "E2QWRUHEXAMPLE",
  "http_version": "http2",
  "id": "E2QWRUHAPOMQZL",
  "in_progress_invalidation_batches": 0,
  "ipv6_enabled": true,
  "last_modified_time": "2026-09-01T09:00:00+00:00",
  "origins": [
    "www.example.com"
  ],
  "price_class": "PriceClass_All",
  "status": "Deployed",
  "viewer_protocol_policy": "redirect-to-https"
}
```

### Get a function

Get a CloudFront function's details: status, runtime, stage and its current ETag.

**Inputs**

- Function (`function_name`, text, required): The CloudFront function. Pick one, or give its name, ARN or the link to its page in the CloudFront console.
- Stage (`stage`, text): Which copy of the function to use. One of: `DEVELOPMENT` (Development (the latest saved code)), `LIVE` (Live (the published code distributions run)). Default: `DEVELOPMENT`.

**Outputs**

- `arn` (text)
- `comment` (text)
- `created_time` (text)
- `etag` (text)
- `last_modified_time` (text)
- `name` (text)
- `runtime` (text)
- `stage` (text): DEVELOPMENT or LIVE.
- `status` (text)

**Example output**

```json
{
  "arn": "arn:aws:cloudfront::123456789012:function/add-security-headers",
  "comment": "Adds security headers",
  "created_time": "2026-09-01T09:00:00+00:00",
  "etag": "ETVPDKIKX0DER",
  "last_modified_time": "2026-09-01T09:00:00+00:00",
  "name": "add-security-headers",
  "runtime": "cloudfront-js-2.0",
  "stage": "DEVELOPMENT",
  "status": "UNPUBLISHED"
}
```

### Get an invalidation

Get one invalidation and its status: InProgress, then Completed.

**Inputs**

- Distribution (`distribution_id`, text, required): The distribution. Pick one, or give its id (such as E2QWRUHAPOMQZL), its ARN, or the link to its page in the CloudFront console.
- Invalidation ID (`invalidation_id`, text, required): Such as I2J0I21PCUYOIK. 'List invalidations' shows them.

**Outputs**

- `caller_reference` (text)
- `create_time` (text)
- `distribution_id` (text)
- `id` (text)
- `paths` (list)
- `status` (text): InProgress, then Completed.

**Example output**

```json
{
  "caller_reference": "lodol-0b8d4b5e-5f8f-4c1e-9d0a-2f6c1b7e9a11",
  "create_time": "2026-09-01T09:00:00+00:00",
  "distribution_id": "E2QWRUHAPOMQZL",
  "id": "I2J0I21PCUYOIK",
  "paths": [
    "/index.html",
    "/images/*"
  ],
  "status": "Completed"
}
```

### List cache policies

List cache policies: AWS's managed ones, such as CachingOptimized, and any made in this account.

**Inputs**

- Type (`policy_type`, text): Whose policies to list. Leave empty for both. One of: `managed` (AWS managed only), `custom` (This account's own only).
- Marker (`marker`, text): To fetch the next page, the 'next_marker' an earlier run of this step returned. Leave empty for the first page.
- Max items (`max_items`, number): How many to return in one page, from 1 to 100. From 1 to 100. Default: `100`.

**Outputs**

- `cache_policies` (list)
- `count` (number)
- `next_marker` (text): Pass this as 'Marker' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "cache_policies": [
    {
      "comment": "Policy with caching enabled.",
      "default_ttl": 86400,
      "id": "658327ea-f89d-4fab-a63d-7e88639e58f6",
      "last_modified_time": "2021-02-22T21:12:03+00:00",
      "max_ttl": 31536000,
      "min_ttl": 1,
      "name": "Managed-CachingOptimized",
      "type": "managed"
    }
  ],
  "count": 1,
  "next_marker": null
}
```

### List distributions

List the CloudFront distributions in the account, one page at a time, with their status, domain name and origins.

**Inputs**

- Marker (`marker`, text): To fetch the next page, the 'next_marker' an earlier run of this step returned. Leave empty for the first page.
- Max items (`max_items`, number): How many to return in one page, from 1 to 100. From 1 to 100. Default: `100`.

**Outputs**

- `count` (number)
- `distributions` (list)
- `next_marker` (text): Pass this as 'Marker' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "count": 1,
  "distributions": [
    {
      "aliases": [],
      "arn": "arn:aws:cloudfront::123456789012:distribution/E2QWRUHAPOMQZL",
      "cache_policy_id": "658327ea-f89d-4fab-a63d-7e88639e58f6",
      "comment": "Marketing site",
      "domain_name": "d111111abcdef8.cloudfront.net",
      "enabled": true,
      "http_version": "http2",
      "id": "E2QWRUHAPOMQZL",
      "ipv6_enabled": true,
      "last_modified_time": "2026-09-01T09:00:00+00:00",
      "origins": [
        "www.example.com"
      ],
      "price_class": "PriceClass_All",
      "status": "Deployed",
      "viewer_protocol_policy": "redirect-to-https"
    }
  ],
  "next_marker": null
}
```

### List functions

List the CloudFront Functions in the account.

**Inputs**

- Stage (`stage`, text): Only functions in this stage. Leave empty for all. One of: `DEVELOPMENT` (Development (the latest saved code)), `LIVE` (Live (the published code distributions run)).
- Marker (`marker`, text): To fetch the next page, the 'next_marker' an earlier run of this step returned. Leave empty for the first page.
- Max items (`max_items`, number): How many to return in one page, from 1 to 100. From 1 to 100. Default: `100`.

**Outputs**

- `count` (number)
- `functions` (list)
- `next_marker` (text): Pass this as 'Marker' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "count": 1,
  "functions": [
    {
      "arn": "arn:aws:cloudfront::123456789012:function/add-security-headers",
      "comment": "Adds security headers",
      "created_time": "2026-09-01T09:00:00+00:00",
      "etag": null,
      "last_modified_time": "2026-09-01T09:00:00+00:00",
      "name": "add-security-headers",
      "runtime": "cloudfront-js-2.0",
      "stage": "DEVELOPMENT",
      "status": "UNPUBLISHED"
    }
  ],
  "next_marker": null
}
```

### List invalidations

List a distribution's invalidations, newest first.

**Inputs**

- Distribution (`distribution_id`, text, required): The distribution. Pick one, or give its id (such as E2QWRUHAPOMQZL), its ARN, or the link to its page in the CloudFront console.
- Marker (`marker`, text): To fetch the next page, the 'next_marker' an earlier run of this step returned. Leave empty for the first page.
- Max items (`max_items`, number): How many to return in one page, from 1 to 100. From 1 to 100. Default: `100`.

**Outputs**

- `count` (number)
- `distribution_id` (text)
- `invalidations` (list)
- `next_marker` (text): Pass this as 'Marker' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "count": 1,
  "distribution_id": "E2QWRUHAPOMQZL",
  "invalidations": [
    {
      "create_time": "2026-09-01T09:00:00+00:00",
      "id": "I2J0I21PCUYOIK",
      "status": "Completed"
    }
  ],
  "next_marker": null
}
```

### List origin access controls

List the origin access controls in the account: the settings that let a distribution read a private S3 bucket.

**Inputs**

- Marker (`marker`, text): To fetch the next page, the 'next_marker' an earlier run of this step returned. Leave empty for the first page.
- Max items (`max_items`, number): How many to return in one page, from 1 to 100. From 1 to 100. Default: `100`.

**Outputs**

- `count` (number)
- `next_marker` (text): Pass this as 'Marker' to fetch the next page. Null on the last page.
- `origin_access_controls` (list)

**Example output**

```json
{
  "count": 1,
  "next_marker": null,
  "origin_access_controls": [
    {
      "description": "",
      "id": "E1LTIJZ0EXAMPLE",
      "name": "my-bucket-oac",
      "origin_type": "s3",
      "signing_behavior": "always",
      "signing_protocol": "sigv4"
    }
  ]
}
```

### List tags

List the tags on a distribution or other CloudFront resource.

**Inputs**

- Distribution or ARN (`resource`, text, required): The distribution to tag: pick one or give its id. For another CloudFront resource, such as a function, give its ARN.

**Outputs**

- `resource_arn` (text)
- `tags` (object): Tag name to tag value.

**Example output**

```json
{
  "resource_arn": "arn:aws:cloudfront::123456789012:distribution/E2QWRUHAPOMQZL",
  "tags": {
    "team": "web"
  }
}
```

### Publish a function

Copy a function's development code to its live stage. Distributions that use the function start running it within minutes.

**Inputs**

- Function (`function_name`, text, required): The CloudFront function. Pick one, or give its name, ARN or the link to its page in the CloudFront console.

**Outputs**

- `arn` (text)
- `comment` (text)
- `created_time` (text)
- `etag` (text)
- `last_modified_time` (text)
- `name` (text)
- `runtime` (text)
- `stage` (text): DEVELOPMENT or LIVE.
- `status` (text)

**Example output**

```json
{
  "arn": "arn:aws:cloudfront::123456789012:function/add-security-headers",
  "comment": "Adds security headers",
  "created_time": "2026-09-01T09:00:00+00:00",
  "etag": null,
  "last_modified_time": "2026-09-01T09:00:00+00:00",
  "name": "add-security-headers",
  "runtime": "cloudfront-js-2.0",
  "stage": "LIVE",
  "status": "UNASSOCIATED"
}
```

### Remove tags

Remove tags, by name, from a distribution or other CloudFront resource. Names it does not have are ignored.

**Inputs**

- Distribution or ARN (`resource`, text, required): The distribution to tag: pick one or give its id. For another CloudFront resource, such as a function, give its ARN.
- Tag names (`tag_keys`, list, required): The names of the tags to remove, such as team.

**Outputs**

- `removed_keys` (list)
- `resource_arn` (text)

**Example output**

```json
{
  "removed_keys": [
    "team"
  ],
  "resource_arn": "arn:aws:cloudfront::123456789012:distribution/E2QWRUHAPOMQZL"
}
```

### Set distribution enabled

Turn a distribution on or off. Nothing else in its settings changes. A distribution must be off, and finished deploying, before it can be deleted.

**Inputs**

- Distribution (`distribution_id`, text, required): The distribution. Pick one, or give its id (such as E2QWRUHAPOMQZL), its ARN, or the link to its page in the CloudFront console.
- Enabled (`enabled`, true/false, required): On to serve traffic, off to stop serving it.

**Outputs**

- `aliases` (list): Alternate domain names (CNAMEs).
- `arn` (text)
- `cache_policy_id` (text)
- `changed` (true/false): False when it was already in that state.
- `comment` (text)
- `default_root_object` (text)
- `domain_name` (text): The distribution's own host name, such as d111111abcdef8.cloudfront.net.
- `enabled` (true/false)
- `etag` (text): The current version of the distribution's config.
- `http_version` (text)
- `id` (text): Such as E2QWRUHAPOMQZL.
- `in_progress_invalidation_batches` (number)
- `ipv6_enabled` (true/false)
- `last_modified_time` (text)
- `origins` (list): Each origin's domain name.
- `price_class` (text)
- `status` (text): InProgress while a change deploys, then Deployed.
- `viewer_protocol_policy` (text)

**Example output**

```json
{
  "aliases": [],
  "arn": "arn:aws:cloudfront::123456789012:distribution/E2QWRUHAPOMQZL",
  "cache_policy_id": "658327ea-f89d-4fab-a63d-7e88639e58f6",
  "changed": true,
  "comment": "Marketing site",
  "default_root_object": "index.html",
  "domain_name": "d111111abcdef8.cloudfront.net",
  "enabled": false,
  "etag": "E2QWRUHEXAMPLE",
  "http_version": "http2",
  "id": "E2QWRUHAPOMQZL",
  "in_progress_invalidation_batches": 0,
  "ipv6_enabled": true,
  "last_modified_time": "2026-09-01T09:00:00+00:00",
  "origins": [
    "www.example.com"
  ],
  "price_class": "PriceClass_All",
  "status": "InProgress",
  "viewer_protocol_policy": "redirect-to-https"
}
```

### Test a function

Run a function against a sample request and return what it produced. Fill in the method, path and headers, or paste a full test event.

**Inputs**

- Function (`function_name`, text, required): The CloudFront function. Pick one, or give its name, ARN or the link to its page in the CloudFront console.
- Stage (`stage`, text): Which copy of the function to use. One of: `DEVELOPMENT` (Development (the latest saved code)), `LIVE` (Live (the published code distributions run)). Default: `DEVELOPMENT`.
- Event type (`event_type`, text): Which event the function handles: the request arriving, or the response going back. One of: `viewer-request` (Viewer request), `viewer-response` (Viewer response). Default: `viewer-request`.
- Method (`http_method`, text): The sample request's method. One of: `GET`, `HEAD`, `POST`, `PUT`, `PATCH`, `DELETE`, `OPTIONS`. Default: `GET`.
- Path (`uri`, text): The sample request's path, such as /index.html. Default: `/index.html`.
- Query string (`querystring`, text): Optional, such as lang=en&page=2.
- Headers (`headers`, object): Request header names and values. Host defaults to example.com.
- Full test event (JSON) (`event_json`, text): Optional. A complete CloudFront Functions event object; when given, the fields above are ignored.

**Outputs**

- `compute_utilization` (number): Share of the maximum allowed run time used, 0 to 100.
- `function_name` (text)
- `logs` (list)
- `output` (object): The request or response the function returned.
- `stage` (text)

**Example output**

```json
{
  "compute_utilization": 12,
  "function_name": "add-security-headers",
  "logs": [],
  "output": {
    "request": {
      "headers": {
        "host": {
          "value": "example.com"
        }
      },
      "method": "GET",
      "uri": "/index.html"
    }
  },
  "stage": "DEVELOPMENT"
}
```

### Update a function

Replace a function's development code. Distributions keep running the live copy until you publish again.

**Inputs**

- Function (`function_name`, text, required): The CloudFront function. Pick one, or give its name, ARN or the link to its page in the CloudFront console.
- Code (`code`, text, required): The function's JavaScript, with a handler(event) function that returns the request or response. Up to 40 KB.
- Runtime (`runtime`, text): Leave empty to keep the current runtime. One of: `cloudfront-js-2.0` (JavaScript 2.0 (recommended)), `cloudfront-js-1.0` (JavaScript 1.0).
- Comment (`comment`, text): Leave empty to keep the current comment.

**Outputs**

- `arn` (text)
- `comment` (text)
- `created_time` (text)
- `etag` (text)
- `last_modified_time` (text)
- `name` (text)
- `runtime` (text)
- `stage` (text): DEVELOPMENT or LIVE.
- `status` (text)

**Example output**

```json
{
  "arn": "arn:aws:cloudfront::123456789012:function/add-security-headers",
  "comment": "Adds security headers",
  "created_time": "2026-09-01T09:00:00+00:00",
  "etag": "ETVPDKIKX0DER",
  "last_modified_time": "2026-09-01T09:00:00+00:00",
  "name": "add-security-headers",
  "runtime": "cloudfront-js-2.0",
  "stage": "DEVELOPMENT",
  "status": "UNPUBLISHED"
}
```
