# aws-solutions/dynamic-image-transformation-for-amazon-cloudfront architecture

> Architecture diagram of the GitHub repository aws-solutions/dynamic-image-transformation-for-amazon-cloudfront, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront
- Repository: https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront

## Overview

This repository implements Dynamic Image Transformation for Amazon CloudFront: a request-driven service that fetches source images, applies transformations, and returns optimized images through CloudFront. Its principal workflow is image request → origin resolution and image processing → response; it also supports configuration of origins, mappings, and transformation policies through an authenticated admin UI. The README documents ECS and Lambda deployments (and a deprecated S3 Object Lambda option), plus CloudFront/S3 delivery. Several runtime and infrastructure files were not sampled, so uncertain internal call links are omitted.

Main entry points: [`source/container/src/app.ts`](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/app.ts) (ECS image service), [`source/container/src/routes/image.ts`](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/routes/image.ts) (Image route), [`source/container/src/services/request-resolver/request-resolver.service.ts`](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/request-resolver/request-resolver.service.ts) (Request resolution), [`source/container/src/services/transformation-resolver/transformation-resolver.service.ts`](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/transformation-resolver/transformation-resolver.service.ts) (Policy resolution)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_delivery["Image delivery"]
  node_cloudfront["CloudFront"]
  node_container["ECS image service<br/>[app.ts]"]
  node_image_route["Image route<br/>[image.ts]"]
  node_request_resolver["Request resolution"]
  node_policy_resolver["Policy resolution"]
  node_image_processor["Image processing"]
  node_origin["Image origins<br/>[origin-fetcher.ts]"]
  node_origin_store["S3 or HTTP origin"]
  node_cache["Runtime caches<br/>[cache-registry.ts]"]
end

subgraph group_configuration["Configuration API"]
  node_management_api["Management routes<br/>[routes.ts]"]
  node_management_services["Configuration services<br/>[index.ts]"]
  node_management_dao["Configuration DAOs<br/>[index.ts]"]
  node_config_db[("Configuration table")]
end

subgraph group_admin["Admin UI"]
  node_admin_ui["Admin application<br/>[App.tsx]"]
  node_admin_pages["Configuration pages<br/>[Origins.tsx]"]
  node_admin_services["Admin API clients<br/>[originService.ts]"]
end

subgraph group_platform["Platform capabilities"]
  node_lambda_arch["Lambda architecture"]
  node_metrics["Operational metrics<br/>[query-builders.ts]"]
end

node_website(("Image consumer"))
node_admin_user(("Administrator"))
node_metric_service["Metrics endpoint"]

node_website -->|"requests images"| node_cloudfront
node_cloudfront -->|"forwards requests"| node_container
node_container -->|"dispatches routes"| node_image_route
node_image_route --> node_request_resolver
node_request_resolver --> node_policy_resolver
node_policy_resolver --> node_image_processor
node_image_processor --> node_origin
node_origin -->|"fetches source"| node_origin_store
node_admin_user -->|"configures"| node_admin_ui
node_admin_ui -->|"routes to"| node_admin_pages
node_admin_pages --> node_admin_services
node_admin_services -->|"calls API"| node_management_api
node_management_api -->|"dispatches"| node_management_services
node_management_services --> node_management_dao
node_management_dao --> node_config_db
node_lambda_arch -.->|"provides deployment option"| node_cloudfront
node_metrics -.->|"sends metrics"| node_metric_service

click node_container "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/app.ts"
click node_image_route "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/routes/image.ts"
click node_request_resolver "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/request-resolver/request-resolver.service.ts"
click node_policy_resolver "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/transformation-resolver/transformation-resolver.service.ts"
click node_image_processor "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/image-processing/image-processor.service.ts"
click node_origin "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/image-processing/origin-fetcher.ts"
click node_cache "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/cache/cache-registry.ts"
click node_admin_ui "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/admin-ui/src/App.tsx"
click node_admin_pages "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/admin-ui/src/pages/Origins.tsx"
click node_admin_services "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/admin-ui/src/services/originService.ts"
click node_management_api "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/management-lambda/routes.ts"
click node_management_services "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/management-lambda/services/index.ts"
click node_management_dao "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/management-lambda/dao/index.ts"
click node_config_db "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/constructs/lib/v8/constructs/dal/single-table-construct.ts"
click node_lambda_arch "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/constructs/lib/back-end/api-gateway-architecture.ts"
click node_metrics "https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/metrics-utils/lib/query-builders.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cloudfront,node_container,node_image_route,node_request_resolver,node_policy_resolver,node_image_processor,node_origin,node_origin_store,node_cache toneBlue
class node_management_api,node_management_services,node_management_dao,node_config_db toneAmber
class node_admin_ui,node_admin_pages,node_admin_services toneMint
class node_lambda_arch,node_metrics toneRose
class node_website,node_admin_user,node_metric_service toneIndigo
```

## Components

### Image delivery

- **CloudFront**
- [ECS image service](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/app.ts): `source/container/src/app.ts`
- [Image route](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/routes/image.ts): `source/container/src/routes/image.ts`
- [Request resolution](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/request-resolver/request-resolver.service.ts): `source/container/src/services/request-resolver/request-resolver.service.ts`
- [Policy resolution](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/transformation-resolver/transformation-resolver.service.ts): `source/container/src/services/transformation-resolver/transformation-resolver.service.ts`
- [Image processing](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/image-processing/image-processor.service.ts): `source/container/src/services/image-processing/image-processor.service.ts`
- [Image origins](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/image-processing/origin-fetcher.ts): `source/container/src/services/image-processing/origin-fetcher.ts`
- **S3 or HTTP origin**
- [Runtime caches](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/container/src/services/cache/cache-registry.ts): `source/container/src/services/cache/cache-registry.ts`

### Configuration API

- [Management routes](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/management-lambda/routes.ts): `source/management-lambda/routes.ts`
- [Configuration services](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/management-lambda/services/index.ts): `source/management-lambda/services/index.ts`
- [Configuration DAOs](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/management-lambda/dao/index.ts): `source/management-lambda/dao/index.ts`
- [Configuration table](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/constructs/lib/v8/constructs/dal/single-table-construct.ts): `source/constructs/lib/v8/constructs/dal/single-table-construct.ts`

### Admin UI

- [Admin application](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/admin-ui/src/App.tsx): `source/admin-ui/src/App.tsx`
- [Configuration pages](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/admin-ui/src/pages/Origins.tsx): `source/admin-ui/src/pages/Origins.tsx`
- [Admin API clients](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/admin-ui/src/services/originService.ts): `source/admin-ui/src/services/originService.ts`

### Platform capabilities

- [Lambda architecture](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/constructs/lib/back-end/api-gateway-architecture.ts): `source/constructs/lib/back-end/api-gateway-architecture.ts`
- [Operational metrics](https://github.com/aws-solutions/dynamic-image-transformation-for-amazon-cloudfront/blob/main/source/metrics-utils/lib/query-builders.ts): `source/metrics-utils/lib/query-builders.ts`

### Other components

- **Image consumer**
- **Administrator**
- **Metrics endpoint**

## Connections

- Image consumer → CloudFront: requests images
- CloudFront → ECS image service: forwards requests
- ECS image service → Image route: dispatches routes
- Image route → Request resolution
- Request resolution → Policy resolution
- Policy resolution → Image processing
- Image processing → Image origins
- Image origins → S3 or HTTP origin: fetches source
- Administrator → Admin application: configures
- Admin application → Configuration pages: routes to
- Configuration pages → Admin API clients
- Admin API clients → Management routes: calls API
- Management routes → Configuration services: dispatches
- Configuration services → Configuration DAOs
- Configuration DAOs → Configuration table
- Lambda architecture → CloudFront: provides deployment option
- Operational metrics → Metrics endpoint: sends metrics
