From e0b6b0f8bc3e7a592e4f0bdc19ff350be376aa12 Mon Sep 17 00:00:00 2001 From: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> Date: Tue, 14 Jul 2026 13:05:29 -0700 Subject: [PATCH 1/6] docs: improve sample discovery and catalog Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- .github/workflows/static_validation.yml | 19 + AGENTS.md | 163 +- CONTRIBUTING.md | 26 + README.md | 135 +- SAMPLES.md | 729 ++++ conda_recipes/blender-4.5/README.md | 2 +- conda_recipes/blender-5.0/README.md | 2 +- conda_recipes/houdini-20.5/README.md | 2 +- conda_recipes/houdini-21.0/README.md | 2 +- conda_recipes/maya-2025/README.md | 2 +- conda_recipes/maya-2026/README.md | 2 +- conda_recipes/maya-redshift-2025/README.md | 2 +- conda_recipes/maya-redshift-2026/README.md | 2 +- docs/SAMPLE_README_TEMPLATE.md | 59 + docs/sample-navigation.md | 86 + job_bundles/README.md | 2 +- job_bundles/ssh_to_smf_windows/README.md | 2 +- .../README.md | 2 +- .../tile_render_with_maya_vray/README.md | 2 +- sample_catalog.json | 2935 +++++++++++++++++ sample_catalog.schema.json | 130 + scripts/catalog_lib.py | 29 + scripts/check_markdown_links.py | 262 ++ scripts/generate_samples.py | 117 + scripts/query_samples.py | 36 + scripts/tests/test_check_markdown_links.py | 91 + scripts/tests/test_validate_catalog.py | 58 + scripts/validate_catalog.py | 222 ++ scripts/validate_repository.py | 45 + 29 files changed, 5016 insertions(+), 150 deletions(-) create mode 100644 .github/workflows/static_validation.yml create mode 100644 SAMPLES.md create mode 100644 docs/SAMPLE_README_TEMPLATE.md create mode 100644 docs/sample-navigation.md create mode 100644 sample_catalog.json create mode 100644 sample_catalog.schema.json create mode 100644 scripts/catalog_lib.py create mode 100644 scripts/check_markdown_links.py create mode 100644 scripts/generate_samples.py create mode 100644 scripts/query_samples.py create mode 100644 scripts/tests/test_check_markdown_links.py create mode 100644 scripts/tests/test_validate_catalog.py create mode 100644 scripts/validate_catalog.py create mode 100644 scripts/validate_repository.py diff --git a/.github/workflows/static_validation.yml b/.github/workflows/static_validation.yml new file mode 100644 index 00000000..ae25560c --- /dev/null +++ b/.github/workflows/static_validation.yml @@ -0,0 +1,19 @@ +name: Static validation + +on: + pull_request: + push: + branches: [mainline] + +permissions: + contents: read + +jobs: + validate: + name: Catalog and Markdown + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Run repository validation + run: python3 scripts/validate_repository.py diff --git a/AGENTS.md b/AGENTS.md index 48bdf3d0..841b4c9a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,105 +1,104 @@ # AGENTS.md — deadline-cloud-samples -This file gives AI coding assistants (Codex CLI, Aider, Cline, Continue, -Cursor, Copilot, Gemini, ChatGPT, Claude Code, Kiro, etc.) the context they -need to work effectively in this repository. +This file gives AI coding assistants the context they need to work effectively in this repository. ## What this repo is `deadline-cloud-samples` is a public collection of samples for -[AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/). It is **not** a -single buildable package — there is no top-level build, test, or lint command. -Each sample is self-contained. +[AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/). It is not a single buildable package; +each sample is self-contained. The repository does have one top-level, standard-library-only static +validation command: -## Where things live +```console +python3 scripts/validate_repository.py +``` + +Run it after every repository change, in addition to tests or validation owned by the sample you edit. +## Find and query samples + +[`sample_catalog.json`](sample_catalog.json) is the human-edited, machine-readable source of truth. +[`SAMPLES.md`](SAMPLES.md) is generated for browsing and must not be edited directly. Query catalog +metadata without third-party dependencies, for example: + +```console +python3 scripts/query_samples.py --task render-content +python3 scripts/query_samples.py --journey custom-plugins --platform windows +python3 scripts/query_samples.py --category job-bundle --tag blender ``` + +Run `python3 scripts/query_samples.py --help` for all filters. Paths are stable sample identities. +Discovery roots and intentional support-only exclusions are declared in the catalog's `inventory` +section and enforced against tracked Git files. + +## Where things live + +```text deadline-cloud-samples/ -├── job_bundles/ OpenJD job bundle samples (template.yaml + assets) -├── conda_recipes/ Conda recipes for DCC packages used by Deadline Cloud -├── queue_environments/ Queue environment YAMLs (Conda/Rez software providers) -├── host_configuration_scripts/ Per-OS scripts for service-managed fleet workers -├── submission_hooks/ Pre-submission Python hooks for the Deadline Cloud CLI -├── containers/ Dockerfiles (e.g. AL2023 worker-equivalent for local builds) -├── cloudformation/ CloudFormation farm + infra templates -├── terraform/ Terraform farm + infra templates -├── utility_scripts/ Standalone CLI helpers -└── skills/ LLM-agnostic, task-specific guides (see below) +├── cloudformation/ CloudFormation farm and infrastructure templates +├── terraform/ Terraform farm and infrastructure templates +├── job_bundles/ OpenJD job bundles (template.yaml plus assets) +├── conda_recipes/ DCC and application Conda recipes +├── containers/ Worker-compatible and application containers +├── queue_environments/ Session software environments (Conda, Rez, and pip) +├── host_configuration_scripts/ Privileged service-managed fleet setup scripts +├── submission_hooks/ Pre-submission Deadline Cloud CLI hooks +├── utility_scripts/ Standalone workflow helpers +├── skills/ Task-specific guides for coding agents +├── docs/ Navigation and contributor contracts +├── scripts/ Catalog generation and repository validation +├── sample_catalog.json Human-edited sample metadata and inventory policy +└── SAMPLES.md Generated browseable sample index ``` -**Most samples have their own `README.md`** with prerequisites, parameters, -and run/submit instructions. Read the relevant `README.md` before modifying -or adding to a sample directory. +Read the relevant sample `README.md` before modifying its files. Use +[`docs/sample-navigation.md`](docs/sample-navigation.md) to choose an application, plugin, or studio +integration path, and [`docs/SAMPLE_README_TEMPLATE.md`](docs/SAMPLE_README_TEMPLATE.md) when adding +a nontrivial sample. ## Skills — task-specific instructions -The [`skills/`](./skills/) directory contains self-contained, LLM-agnostic -guides for common tasks. Each skill is a Markdown file with YAML frontmatter -(`name`, `description`, `tags`) followed by step-by-step instructions, -references, and examples. - -**Before starting work, check `skills/` for a matching guide and read it.** -The `description` field tells you when to use each skill. +Before starting sample implementation, check [`skills/`](skills/) for a matching guide and read it. +Each skill has YAML frontmatter followed by instructions, references, and examples. | Skill | Use when | -|-------|----------| -| [`skills/deadline-cloud-job/`](./skills/deadline-cloud-job/SKILL.md) | Creating or updating a Deadline Cloud job (OpenJD job bundle) under `job_bundles/` | -| [`skills/conda-builder/`](./skills/conda-builder/SKILL.md) | Creating or updating a DCC conda recipe under `conda_recipes/` | -| [`skills/3dsmax-host-config/`](./skills/3dsmax-host-config/SKILL.md) | Creating or updating a 3ds Max host configuration script | -| [`skills/host-config-from-installer/`](./skills/host-config-from-installer/SKILL.md) | Creating a host configuration script from a vendor installer | - -Skills are auto-discovered via `.claude/skills` and `.kiro/skills` symlinks. -For other tools, point your assistant at the relevant `SKILL.md` directly -(paste, `@`-mention, or include in context). - -## Repo conventions - -- **Inclusive language** — avoid `master`/`slave`, `whitelist`/`blacklist`. - Use `primary`/`replica`, `allowlist`/`denylist`. -- **Python install commands** — use `pip install ...` (works on Windows, - macOS, and Linux). Avoid `pip3` unless the sample is Linux/macOS-only. -- **Job bundles** live under `job_bundles//` with a `template.yaml`, - optional `parameter_values.yaml`, and a `README.md`. -- **Conda recipes** live under `conda_recipes/-/` with a - `recipe/` subdirectory and a `deadline-cloud.yaml`. -- **Iterate locally before submitting** — for OpenJD templates, run - `openjd check` and `openjd run --tasks ` to verify a single task end- - to-end before submitting the full parameter range to a Deadline Cloud farm. +|---|---| +| [`skills/deadline-cloud-job/`](skills/deadline-cloud-job/SKILL.md) | Creating or updating an OpenJD job bundle under `job_bundles/` | +| [`skills/conda-builder/`](skills/conda-builder/SKILL.md) | Creating or updating a DCC Conda recipe under `conda_recipes/` | +| [`skills/3dsmax-host-config/`](skills/3dsmax-host-config/SKILL.md) | Creating or updating a 3ds Max host configuration script | +| [`skills/host-config-from-installer/`](skills/host-config-from-installer/SKILL.md) | Creating a Windows host configuration script from a vendor installer | + +Skills are auto-discovered through `.claude/skills` and `.kiro/skills` symlinks. + +## Repository conventions + +* Use inclusive language: prefer `primary`/`replica` and `allowlist`/`denylist`. +* Use `pip install ...` in cross-platform Python instructions; avoid `pip3` unless the sample is + explicitly Linux/macOS-only. +* Job bundles live under `job_bundles//` with a `template.yaml`, optional + `parameter_values.yaml`, and a `README.md` for nontrivial samples. +* Conda recipes live under `conda_recipes/-/` with a `recipe/` directory and + `deadline-cloud.yaml`. +* For OpenJD templates, run `openjd check` and `openjd run --tasks ` to verify a representative + task locally before submitting the full parameter range when possible. +* New, renamed, or removed samples must update `sample_catalog.json`; run + `python3 scripts/generate_samples.py` after editing metadata. +* Do not add third-party runtime dependencies to repository validation. ## Pre-PR checklist -Before opening a pull request, make sure every commit on the branch satisfies the following: - -- [ ] **Conventional commit title** — every commit title MUST use - [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) syntax - (see the type table below). PRs without it will be blocked by CI. -- [ ] **Signed-off commits** — every commit MUST carry a `Signed-off-by` trailer - ([Developer Certificate of Origin](https://developercertificate.org/)). Create - commits with `git commit -s`, or add the trailer to an existing commit with - `git commit --amend -s`. -- [ ] **Sample README updated** — if you changed a sample's behavior, prerequisites, - or parameters, update its `README.md`. -- [ ] **Inclusive language** — no `master`/`slave`, `whitelist`/`blacklist`. - -### Conventional commit types - -| Type | Use for | -|------------|-----------------------------------------------------------| -| `feat` | New sample, new feature in an existing sample | -| `fix` | Bug fix | -| `docs` | Documentation only | -| `test` | Test additions or changes only | -| `refactor` | Code refactor with no behavior change | -| `ci` | CI infrastructure changes | -| `chore` | Generic maintenance | -| `feat!` / `fix!` | Breaking change (also add `BREAKING CHANGE:` footer) | - -See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for the full contribution workflow. +* [ ] Run `python3 scripts/validate_repository.py` successfully. +* [ ] Run the affected sample's own relevant tests or static checks. +* [ ] Update the sample README when behavior, prerequisites, parameters, outputs, or risks change. +* [ ] Update catalog metadata and regenerate `SAMPLES.md` when sample inventory or metadata changes. +* [ ] Use a [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) title. +* [ ] Sign off every commit under the [Developer Certificate of Origin](https://developercertificate.org/). +* [ ] Check changed content for inclusive language. + +See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the full contribution and licensing workflow. ## External references -- [AWS Deadline Cloud user guide](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/index.html) -- [AWS Deadline Cloud developer guide](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/index.html) -- [Open Job Description spec](https://github.com/OpenJobDescription/openjd-specifications/wiki) -- [`README.md`](./README.md) — directory overview and high-level usage -- [`CONTRIBUTING.md`](./CONTRIBUTING.md) — full contribution workflow, MIT-0 licensing, security reporting +* [AWS Deadline Cloud developer guide](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/index.html) +* [AWS Deadline Cloud user guide](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/index.html) +* [Open Job Description specification](https://github.com/OpenJobDescription/openjd-specifications/wiki) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8fd2c09f..692ea813 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,6 +13,7 @@ Table of contents: * [Finding contributions to work on](#finding-contributions-to-work-on) * [Talk with us first](#talk-with-us-first) * [Contributing via Pull Requests](#contributing-via-pull-requests) + * [Adding or updating a sample](#adding-or-updating-a-sample) * [Conventional Commits](#conventional-commits) * [Licensing](#licensing) @@ -68,6 +69,31 @@ To send us a pull request, please: GitHub provides additional documentation on [forking a repository](https://help.github.com/articles/fork-a-repo/) and [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). +### Adding or updating a sample + +Every discoverable sample is indexed by [`sample_catalog.json`](sample_catalog.json), and the +human-browsable [`SAMPLES.md`](SAMPLES.md) is generated from it. When you add, rename, or remove a +sample, you must: + +1. Add or update its catalog entry. Use the path as its stable identity, select values from the + controlled category/task/journey taxonomies, and write a concise plain-English description. +2. For a nontrivial sample, include the sections documented in + [`docs/SAMPLE_README_TEMPLATE.md`](docs/SAMPLE_README_TEMPLATE.md): purpose, demonstrated + capabilities, prerequisites, operation, setup, run instructions, parameters and outputs, + security/cost/cleanup, troubleshooting, and related resources. +3. Regenerate the browsable catalog with `python3 scripts/generate_samples.py`. +4. Run the complete local static validation from the repository root: + + ```console + python3 scripts/validate_repository.py + ``` + +The validation uses only the Python standard library. It checks metadata against the JSON Schema, +requires exact coverage of the tracked sample inventory (including documented exclusions), detects +catalog generation drift, and checks local links in all tracked Markdown files. Also run any tests +specific to the sample you changed; for OpenJD templates, validate and run a representative task +locally when possible. + ### Conventional commits The commits in this repository are all required to use [conventional commit syntax](https://www.conventionalcommits.org/en/v1.0.0/) diff --git a/README.md b/README.md index 6df2d763..8f253140 100644 --- a/README.md +++ b/README.md @@ -1,86 +1,109 @@ -## Deadline Cloud samples +# AWS Deadline Cloud samples -This repository contains a set of samples to use with [AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/). +Build, submit, and operate real workloads on [AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/). +Start with the task you want to complete; each sample stays self-contained in its existing directory. -## CloudFormation template samples +## What do you want to do? -The [cloudformation](cloudformation) directory contains sample CloudFormation templates you can use to -deploy a Deadline Cloud farm or other infrastructure to work with your farm. The [starter_farm sample](cloudformation/farm_templates/starter_farm/) -is a good place to start. Other samples include event notification and health checks for customer-managed fleets. +| Goal | Start here | +|---|---| +| Deploy a farm | [CloudFormation starter farm](cloudformation/farm_templates/starter_farm/) or [Terraform starter farm](terraform/farm_templates/starter_farm/) | +| Learn how a job is structured | [Job development progression](job_bundles/job_dev_progression/) or the [minimal job](job_bundles/simple_job/) | +| Render with a DCC | [Blender render](job_bundles/blender_render/), [Maya CLI render](job_bundles/maya_cli_render/), or browse [all job bundles](SAMPLES.md#openjd-job-bundles) | +| Provide applications to workers | [Conda recipes](conda_recipes/), [queue environments](queue_environments/), or [worker containers](containers/) | +| Install software or plugins | [Custom-plugin journey](docs/sample-navigation.md#install-custom-plugins) and [host configuration scripts](host_configuration_scripts/) | +| Connect studio systems | [Studio-integration journey](docs/sample-navigation.md#integrate-studio-tools-into-the-job-lifecycle) | +| Find a specific example | Browse the generated [sample catalog](SAMPLES.md) by goal, type, or journey | +| Create a sample with an AI agent | Use the task-specific guides in [skills](skills/) | -## Job bundle samples +The human-edited [`sample_catalog.json`](sample_catalog.json) is also available for tools and automation. +Its schema is [`sample_catalog.schema.json`](sample_catalog.schema.json). -The [job_bundles](job_bundles) directory contains sample jobs that you can submit to your Deadline Cloud queue. You can use the -[Deadline Cloud CLI](https://github.com/aws-deadline/deadline-cloud) to submit these jobs to your queues. +## Quick start -The [Open Job Description Specifications](https://github.com/OpenJobDescription/openjd-specifications) repository -has more samples that you can use with [AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/). +1. Configure a Deadline Cloud farm and install the + [Deadline Cloud CLI](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/submit-jobs-how.html). + If you need a farm, deploy one of the starter templates above. +2. Clone this repository and open its root directory. +3. Preview a job's submission interface: -### CLI job submission + ```console + deadline bundle gui-submit job_bundles/gui_control_showcase + ``` -``` -$ deadline bundle submit job_bundles/cli_job -p DataDir=~/data_dir -``` +4. Submit the minimal job to your configured queue: -### GUI job submission -``` -$ deadline bundle gui-submit job_bundles/gui_control_showcase -``` + ```console + deadline bundle submit job_bundles/simple_job + ``` -![deadline bundle gui-submit showcase](.images/deadline-bundle-gui-submit-showcase.png) +Read each sample's README before deployment or submission. Samples can create billable AWS resources +or run licensed software; review parameters, IAM permissions, licensing, and cleanup instructions first. -## Container samples +## Featured examples -The [containers](containers) directory contains Dockerfiles for building -container images compatible with Deadline Cloud worker environments. The -[al2023-deadline](containers/al2023-deadline/) sample replicates the -service-managed fleet worker AMI package set on Amazon Linux 2023, useful for -building and testing conda packages or other software locally. +* **[Job development progression](job_bundles/job_dev_progression/)** grows one OpenJD job through four maintainable stages. +* **[Blender turntable to Flow Production Tracking](job_bundles/blender_turntable_to_flow/)** renders, encodes, and publishes review media as a multi-step studio workflow. +* **[Plugin bundle for Blender](conda_recipes/blender-plugin-bundle/)** packages a collection of add-ons for repeatable delivery. +* **[Cached Conda queue environment](queue_environments/conda_queue_env_improved_caching.yaml)** reuses software environments across sessions. +* **[License-limit submission hook](submission_hooks/license_limits/)** injects host requirements before submission. +* **[After Effects and Red Giant host configuration](host_configuration_scripts/aftereffects/aftereffects_redgiant/)** installs software that needs administrative privileges. -## Conda recipes +## Recent highlights -The [conda_recipes](conda_recipes) directory contains samples and tooling for building conda packages for your -Deadline Cloud queues. You can use the `submit-package-job` tool to submit -build jobs to your queue. See [this blog post](https://aws.amazon.com/blogs/media/create-a-conda-package-and-channel-for-aws-deadline-cloud/) -for instructions on how to configure your Deadline Cloud farm for building and -using an Amazon S3 conda channel. +This is a curated selection of noteworthy additions and updates, not an exhaustive chronology. -## Queue environment samples +* **2026-07-14 — [After Effects and Red Giant host configuration](host_configuration_scripts/aftereffects/aftereffects_redgiant/):** consolidated application and plugin installation. +* **2026-07-10 — [Job event Slack notifications](cloudformation/notification_templates/job_events_slack_lambda/):** connects Deadline Cloud events to Lambda through EventBridge. +* **2026-07-08 — [Pip package delivery](job_bundles/pip_package_job/):** pairs a job with the new [pip queue environment](queue_environments/pip_queue_env.yaml); a [self-contained variant](job_bundles/pip_self_contained_job/) is included too. +* **2026-07-07 — [Houdini 21.0 recipe](conda_recipes/houdini-21.0/):** adds Plugin Sync support. +* **2026-06-25 — [Blender turntable to Flow Production Tracking](job_bundles/blender_turntable_to_flow/):** demonstrates render-to-review publishing. -The [queue_environments](queue_environments) directory contains -sample [queue environments](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) -you can attach to your Deadline Cloud queue, to provide software applications to your jobs from -[Conda](https://docs.conda.io/projects/conda/) or [Rez](https://rez.readthedocs.io/). +See the catalog's curated [recent highlights](SAMPLES.md#recent-highlights) for more. -## Utility scripts +## Choose a path for a larger journey -The [utility_scripts](utility_scripts) directory contains sample scripts to help you work with -AWS Deadline Cloud. This directory contains command-line tools assist with common tasks like managing job attachments, working with queues, and automating workflows. +The [sample navigation guide](docs/sample-navigation.md) gives short decision paths—not full architecture walkthroughs—for: -## Submission hook samples +* [running a new DCC or application](docs/sample-navigation.md#run-a-new-dcc-or-application); +* [installing custom plugins](docs/sample-navigation.md#install-custom-plugins); and +* [integrating studio tools into the job lifecycle](docs/sample-navigation.md#integrate-studio-tools-into-the-job-lifecycle). -The [submission_hooks](submission_hooks) directory contains sample -[submission hooks](https://github.com/aws-deadline/deadline-cloud/blob/mainline/docs/submission-hooks.md) -that run custom logic during job submission. The [license_limits](submission_hooks/license_limits/) sample -demonstrates how to enforce fixed license limits (e.g., V-Ray) using Deadline Cloud's Limits feature -combined with a pre-submission hook that automatically injects host requirements into job templates. +Each path links to the canonical Deadline Cloud developer guide for design details and then routes back +to the strongest implementations in this repository. -## Additional resources +## Repository map + +| Area | Use it for | +|---|---| +| [CloudFormation](cloudformation/) | Deploy starter farms, fleet support, storage, capacity automation, and notifications. | +| [Terraform](terraform/) | Deploy a starter farm with Terraform. | +| [Job bundles](job_bundles/) | Define OpenJD rendering, simulation, ML, scientific, and utility jobs. | +| [Conda recipes](conda_recipes/) | Build applications, adaptors, renderers, and plugins into versioned packages. | +| [Containers](containers/) | Build worker-compatible or application container images. | +| [Queue environments](queue_environments/) | Prepare Conda, Rez, pip, caching, and licensing once per worker session. | +| [Host configuration scripts](host_configuration_scripts/) | Install privileged software and configure service-managed fleet worker hosts. | +| [Submission hooks](submission_hooks/) | Inspect or modify job bundles immediately before submission. | +| [Utility scripts](utility_scripts/) | Automate supporting tasks such as uploading job attachments. | +| [Agent skills](skills/) | Give coding agents repeatable instructions for authoring jobs, packages, and host configs. | + +For every discoverable sample—including explicit support-directory exclusions—use the +[complete generated catalog](SAMPLES.md). + +## Documentation -* [AWS Deadline Cloud user guide](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/index.html) * [AWS Deadline Cloud developer guide](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/index.html) +* [AWS Deadline Cloud user guide](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/index.html) * [AWS Deadline Cloud API reference](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/index.html) -* [Open Job Description](https://github.com/OpenJobDescription/openjd-specifications/wiki) +* [Open Job Description specification](https://github.com/OpenJobDescription/openjd-specifications/wiki) +* [Contributing a sample](CONTRIBUTING.md#adding-or-updating-a-sample) ## Security -We take all security reports seriously. When we receive such reports, we will -investigate and subsequently address any potential vulnerabilities as quickly -as possible. If you discover a potential security issue in this project, please -notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/) -or directly via email to [AWS Security](aws-security@amazon.com). Please do not -create a public GitHub issue in this project. +If you discover a potential security issue, notify AWS Security through the +[vulnerability reporting page](https://aws.amazon.com/security/vulnerability-reporting/) or +[email AWS Security](mailto:aws-security@amazon.com). Do not create a public GitHub issue. ## License -This library is licensed under the MIT-0 License. See the LICENSE file. +This repository is licensed under the [MIT-0 License](LICENSE). diff --git a/SAMPLES.md b/SAMPLES.md new file mode 100644 index 00000000..867275ba --- /dev/null +++ b/SAMPLES.md @@ -0,0 +1,729 @@ +# AWS Deadline Cloud sample catalog + +> This file is generated by `python3 scripts/generate_samples.py`. Edit +> [`sample_catalog.json`](sample_catalog.json), not this file, then regenerate it. + +Find a sample by what you want to accomplish. Paths in the catalog are stable sample +identities; samples remain in their existing directories. + +## Featured samples + +* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ +* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ +* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ +* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ +* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ +* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ +* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ +* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. + +## Recent highlights + +This is a curated selection of noteworthy additions and updates, not an exhaustive chronology. + +* **2026-07-14 — [Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. +* **2026-07-10 — [Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. +* **2026-07-08 — [Pip Self-Contained Job](job_bundles/pip_self_contained_job)** — This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required. +* **2026-07-08 — [Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. +* **2026-07-08 — [Pip Package Job](job_bundles/pip_package_job)** — This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**. +* **2026-07-07 — [Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. +* **2026-06-25 — [MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. +* **2026-06-25 — [Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. +* **2026-06-23 — [Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. +* **2026-06-23 — [Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. +* **2026-06-19 — [Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. +* **2026-06-18 — [AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. + +## Browse by goal + +Each sample can appear under more than one goal. + +## Deploy a farm + +* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ +* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ +* **[AWS Deadline Cloud farm for running CUDA jobs](cloudformation/farm_templates/cuda_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs. _(platforms: platform-independent · tags: cloudformation, cuda)_ +* **[Scheduled Standby Workers for Deadline Cloud Fleets](cloudformation/farm_templates/fleet_standby_scheduling)** — This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule. _(platforms: platform-independent · tags: cloudformation)_ +* **[Service-managed fleet capacity manager](cloudformation/farm_templates/smf_capacity_manager)** — This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets. _(platforms: platform-independent · tags: cloudformation)_ +* **[Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS](cloudformation/farm_templates/smf_vpc_fsx)** — This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint. _(platforms: platform-independent · tags: cloudformation)_ + +## Manage fleet capacity + +* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ +* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ +* **[AWS Deadline Cloud farm for running CUDA jobs](cloudformation/farm_templates/cuda_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs. _(platforms: platform-independent · tags: cloudformation, cuda)_ +* **[Deploying Deadline Cloud fleet health check](cloudformation/farm_templates/cmf_templates)** — Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet. _(platforms: platform-independent · tags: cloudformation)_ +* **[Scheduled Standby Workers for Deadline Cloud Fleets](cloudformation/farm_templates/fleet_standby_scheduling)** — This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule. _(platforms: platform-independent · tags: cloudformation)_ +* **[Service-managed fleet capacity manager](cloudformation/farm_templates/smf_capacity_manager)** — This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets. _(platforms: platform-independent · tags: cloudformation)_ +* **[Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS](cloudformation/farm_templates/smf_vpc_fsx)** — This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint. _(platforms: platform-independent · tags: cloudformation)_ + +## Monitor events and budgets + +* **[Deadline Budget Threshold Reached Event Integration with Email and Slack](cloudformation/notification_templates/budget_events_notification)** — This CloudFormation template sets up an integration to receive notifications via email and Slack when a budget threshold is reached in the `aws.deadline` service. _(platforms: platform-independent · tags: cloudformation)_ +* **[Deploying Deadline Cloud fleet health check](cloudformation/farm_templates/cmf_templates)** — Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet. _(platforms: platform-independent · tags: cloudformation)_ +* **[Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. _(platforms: platform-independent · tags: cloudformation, slack)_ + +## Author and submit jobs + +* **[3ds Max V-Ray Denoiser Example](job_bundles/3dsmax_vray_denoiser)** — This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking. _(tags: 3dsmax, vray)_ +* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. +* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ +* **[Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. _(tags: carla)_ +* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ +* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ +* **[CLI script job](job_bundles/cli_job)** — Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI. +* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ +* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). +* **[FFmpeg Encode Video job bundle](job_bundles/ffmpeg_encode_video)** — This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg. _(tags: ffmpeg)_ +* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ +* **[FLUX.2 Klein LoRA Training and Image Generation](job_bundles/flux2_klein_lora)** — Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model. +* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ +* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. +* **[GROMACS Molecular Dynamics](job_bundles/gromacs_md)** — Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape. _(tags: gromacs)_ +* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ +* **[Job attachments input example](job_bundles/job_attachments_devguide)** — Demonstrate input path parameters and asset references for Deadline Cloud job attachments. +* **[Job bundle: Copy S3 prefix to job attachments](job_bundles/copy_s3_prefix_to_job_attachments)** — With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue. +* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. +* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. +* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. +* **[Job parameter GUI control showcase](job_bundles/gui_control_showcase)** — Preview every OpenJD job-parameter user interface control supported by the Deadline Cloud bundle submitter. +* **[KeyShot Standalone](job_bundles/keyshot_standalone)** — This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task. _(tags: keyshot)_ +* **[List Available Conda Packages Job Bundle](job_bundles/list_available_conda_packages)** — This job bundle lists all available conda packages in the deadline-cloud channel using `conda search -c deadline-cloud '*'` and prints the list into the logs. _(tags: conda)_ +* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ +* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ +* **[Minimal OpenJD job](job_bundles/simple_job)** — Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle. +* **[MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. +* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ +* **[Pip Package Job](job_bundles/pip_package_job)** — This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**. _(tags: pip)_ +* **[Pip Self-Contained Job](job_bundles/pip_self_contained_job)** — This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required. _(tags: pip)_ +* **[POV-Ray 3.7 AWS Deadline Cloud Job Template](job_bundles/povray-3.7)** — This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management. _(tags: povray)_ +* **[Pricing Financial Derivatives](job_bundles/monte_carlo_simulation)** — Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model. +* **[Redshift Rendering Job Template](job_bundles/redshift-2025)** — This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025. _(tags: redshift)_ +* **[Satellite Imagery Classification](job_bundles/satellite_classification)** — Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map. +* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. +* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ +* **[SSM Managed Node via Deadline Cloud Job](job_bundles/ssh_to_smf)** — Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job. +* **[SSM Managed Node via Deadline Cloud Job (Windows)](job_bundles/ssh_to_smf_windows)** — Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job. +* **[Task Chunking Job Bundle Samples](job_bundles/task_chunking)** — These samples demonstrate the Task Chunking extension for Open Job Description, which improves resource utilization by grouping multiple frames or tasks into chunks instead of processing them individually. +* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ +* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ +* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ +* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ +* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ +* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ +* **[Virtual Screening with AutoDock VINA](job_bundles/virtual_screening_vina)** — Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor). +* **[vLLM LLM Leaderboard (Matrix Evaluation)](job_bundles/vllm_lm_eval_leaderboard)** — Evaluate **multiple LLMs × multiple benchmarks** in a single Deadline Cloud job. +* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ +* **[VTK Visualization Job Template](job_bundles/vtk-latest)** — This OpenJD job template allows users to run VTK (Visualization Toolkit) Python scripts using AWS Deadline Cloud. + +## Render DCC content + +* **[3ds Max V-Ray Denoiser Example](job_bundles/3dsmax_vray_denoiser)** — This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking. _(tags: 3dsmax, vray)_ +* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. +* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ +* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ +* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ +* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ +* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ +* **[KeyShot Standalone](job_bundles/keyshot_standalone)** — This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task. _(tags: keyshot)_ +* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ +* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ +* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ +* **[POV-Ray 3.7 AWS Deadline Cloud Job Template](job_bundles/povray-3.7)** — This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management. _(tags: povray)_ +* **[Redshift Rendering Job Template](job_bundles/redshift-2025)** — This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025. _(tags: redshift)_ +* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ +* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ +* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ +* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ +* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ +* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ +* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ +* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ + +## Process media + +* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ +* **[FFmpeg Encode Video job bundle](job_bundles/ffmpeg_encode_video)** — This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg. _(tags: ffmpeg)_ +* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ +* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ +* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ + +## Run simulations + +* **[Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. _(tags: carla)_ +* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ +* **[MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. +* **[Pricing Financial Derivatives](job_bundles/monte_carlo_simulation)** — Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model. + +## Run machine learning workloads + +* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). +* **[FLUX.2 Klein LoRA Training and Image Generation](job_bundles/flux2_klein_lora)** — Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model. +* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. +* **[Satellite Imagery Classification](job_bundles/satellite_classification)** — Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map. +* **[vLLM LLM Leaderboard (Matrix Evaluation)](job_bundles/vllm_lm_eval_leaderboard)** — Evaluate **multiple LLMs × multiple benchmarks** in a single Deadline Cloud job. + +## Run scientific workloads + +* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). +* **[GROMACS Molecular Dynamics](job_bundles/gromacs_md)** — Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape. _(tags: gromacs)_ +* **[Virtual Screening with AutoDock VINA](job_bundles/virtual_screening_vina)** — Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor). + +## Move job assets + +* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ +* **[Job attachments input example](job_bundles/job_attachments_devguide)** — Demonstrate input path parameters and asset references for Deadline Cloud job attachments. +* **[Job bundle: Copy S3 prefix to job attachments](job_bundles/copy_s3_prefix_to_job_attachments)** — With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue. + +## Build software packages + +* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ +* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ +* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ +* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ +* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ +* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ +* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ +* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ +* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ +* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ +* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ +* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ +* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ +* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ +* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ +* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ +* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ +* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ +* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ +* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ +* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ +* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ +* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ +* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ +* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ +* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ +* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ +* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ +* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ +* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ + +## Provide software to workers + +* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ +* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ +* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ +* **[AWS Deadline Cloud Font Installation](host_configuration_scripts/linux_font_installation)** — This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke. _(platforms: linux)_ +* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ +* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ +* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ +* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ +* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ +* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ +* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ +* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ +* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ +* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ +* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ +* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ +* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ +* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ +* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ +* **[Docker and NVIDIA Container Toolkit](host_configuration_scripts/docker_nvidia_container_toolkit)** — Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads. _(platforms: linux · tags: docker)_ +* **[Enable Swap on Service Managed Fleet Workers](host_configuration_scripts/swap_for_smf)** — Create and enable a swap file on Linux service managed fleet workers. _(platforms: linux)_ +* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ +* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ +* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ +* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ +* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ +* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ +* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ +* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ +* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ +* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ +* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ +* **[Override Memory Overcommit on Service Managed Fleet Workers](host_configuration_scripts/overcommit_override_for_smf)** — Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers. _(platforms: linux)_ +* **[Passwordless Sudo for Job User](host_configuration_scripts/sudo_for_job_user)** — Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers. _(platforms: linux)_ +* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ +* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ +* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ +* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ +* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ +* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ +* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ +* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ +* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ +* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ +* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ +* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ +* **[Worker configuration examples](host_configuration_scripts/worker_configuration)** — These scripts demonstrate common configuration tasks that may be required for your workloads. _(platforms: windows)_ +* **[Worker reboot host configuration](host_configuration_scripts/worker_reboot)** — Worker reboots may be required for system configuration changes. _(platforms: linux, windows)_ + +## Install custom plugins + +* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ +* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ +* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ +* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ +* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ +* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ +* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ +* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ +* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ +* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ +* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ +* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ +* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ +* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ + +## Configure workers + +* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max Host Config](skills/3dsmax-host-config)** — This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: 3dsmax)_ +* **[AWS Deadline Cloud Font Installation](host_configuration_scripts/linux_font_installation)** — This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke. _(platforms: linux)_ +* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ +* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ +* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ +* **[Docker and NVIDIA Container Toolkit](host_configuration_scripts/docker_nvidia_container_toolkit)** — Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads. _(platforms: linux · tags: docker)_ +* **[Enable Swap on Service Managed Fleet Workers](host_configuration_scripts/swap_for_smf)** — Create and enable a swap file on Linux service managed fleet workers. _(platforms: linux)_ +* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ +* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ +* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ +* **[Override Memory Overcommit on Service Managed Fleet Workers](host_configuration_scripts/overcommit_override_for_smf)** — Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers. _(platforms: linux)_ +* **[Passwordless Sudo for Job User](host_configuration_scripts/sudo_for_job_user)** — Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers. _(platforms: linux)_ +* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ +* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ +* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ +* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ +* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ +* **[Worker configuration examples](host_configuration_scripts/worker_configuration)** — These scripts demonstrate common configuration tasks that may be required for your workloads. _(platforms: windows)_ +* **[Worker reboot host configuration](host_configuration_scripts/worker_reboot)** — Worker reboots may be required for system configuration changes. _(platforms: linux, windows)_ + +## Integrate a studio pipeline + +* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ +* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ +* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ +* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ +* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ +* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. +* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. +* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. +* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. + +## Customize job submission + +* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ + +## Troubleshoot workers + +* **[SSM Managed Node via Deadline Cloud Job](job_bundles/ssh_to_smf)** — Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job. +* **[SSM Managed Node via Deadline Cloud Job (Windows)](job_bundles/ssh_to_smf_windows)** — Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job. + +## Develop samples with an agent + +* **[3ds Max Host Config](skills/3dsmax-host-config)** — This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: 3dsmax)_ +* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ +* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ +* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ + +# Browse by sample type + +## Infrastructure as code + +* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ +* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ +* **[AWS Deadline Cloud farm for running CUDA jobs](cloudformation/farm_templates/cuda_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs. _(platforms: platform-independent · tags: cloudformation, cuda)_ +* **[Deadline Budget Threshold Reached Event Integration with Email and Slack](cloudformation/notification_templates/budget_events_notification)** — This CloudFormation template sets up an integration to receive notifications via email and Slack when a budget threshold is reached in the `aws.deadline` service. _(platforms: platform-independent · tags: cloudformation)_ +* **[Deploying Deadline Cloud fleet health check](cloudformation/farm_templates/cmf_templates)** — Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet. _(platforms: platform-independent · tags: cloudformation)_ +* **[Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. _(platforms: platform-independent · tags: cloudformation, slack)_ +* **[Scheduled Standby Workers for Deadline Cloud Fleets](cloudformation/farm_templates/fleet_standby_scheduling)** — This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule. _(platforms: platform-independent · tags: cloudformation)_ +* **[Service-managed fleet capacity manager](cloudformation/farm_templates/smf_capacity_manager)** — This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets. _(platforms: platform-independent · tags: cloudformation)_ +* **[Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS](cloudformation/farm_templates/smf_vpc_fsx)** — This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint. _(platforms: platform-independent · tags: cloudformation)_ + +## OpenJD job bundles + +* **[3ds Max V-Ray Denoiser Example](job_bundles/3dsmax_vray_denoiser)** — This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking. _(tags: 3dsmax, vray)_ +* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. +* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ +* **[Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. _(tags: carla)_ +* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ +* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ +* **[CLI script job](job_bundles/cli_job)** — Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI. +* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). +* **[FFmpeg Encode Video job bundle](job_bundles/ffmpeg_encode_video)** — This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg. _(tags: ffmpeg)_ +* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ +* **[FLUX.2 Klein LoRA Training and Image Generation](job_bundles/flux2_klein_lora)** — Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model. +* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ +* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. +* **[GROMACS Molecular Dynamics](job_bundles/gromacs_md)** — Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape. _(tags: gromacs)_ +* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ +* **[Job attachments input example](job_bundles/job_attachments_devguide)** — Demonstrate input path parameters and asset references for Deadline Cloud job attachments. +* **[Job bundle: Copy S3 prefix to job attachments](job_bundles/copy_s3_prefix_to_job_attachments)** — With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue. +* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. +* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. +* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. +* **[Job parameter GUI control showcase](job_bundles/gui_control_showcase)** — Preview every OpenJD job-parameter user interface control supported by the Deadline Cloud bundle submitter. +* **[KeyShot Standalone](job_bundles/keyshot_standalone)** — This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task. _(tags: keyshot)_ +* **[List Available Conda Packages Job Bundle](job_bundles/list_available_conda_packages)** — This job bundle lists all available conda packages in the deadline-cloud channel using `conda search -c deadline-cloud '*'` and prints the list into the logs. _(tags: conda)_ +* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ +* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ +* **[Minimal OpenJD job](job_bundles/simple_job)** — Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle. +* **[MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. +* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ +* **[Pip Package Job](job_bundles/pip_package_job)** — This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**. _(tags: pip)_ +* **[Pip Self-Contained Job](job_bundles/pip_self_contained_job)** — This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required. _(tags: pip)_ +* **[POV-Ray 3.7 AWS Deadline Cloud Job Template](job_bundles/povray-3.7)** — This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management. _(tags: povray)_ +* **[Pricing Financial Derivatives](job_bundles/monte_carlo_simulation)** — Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model. +* **[Redshift Rendering Job Template](job_bundles/redshift-2025)** — This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025. _(tags: redshift)_ +* **[Satellite Imagery Classification](job_bundles/satellite_classification)** — Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map. +* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. +* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ +* **[SSM Managed Node via Deadline Cloud Job](job_bundles/ssh_to_smf)** — Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job. +* **[SSM Managed Node via Deadline Cloud Job (Windows)](job_bundles/ssh_to_smf_windows)** — Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job. +* **[Task Chunking Job Bundle Samples](job_bundles/task_chunking)** — These samples demonstrate the Task Chunking extension for Open Job Description, which improves resource utilization by grouping multiple frames or tasks into chunks instead of processing them individually. +* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ +* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ +* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ +* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ +* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ +* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ +* **[Virtual Screening with AutoDock VINA](job_bundles/virtual_screening_vina)** — Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor). +* **[vLLM LLM Leaderboard (Matrix Evaluation)](job_bundles/vllm_lm_eval_leaderboard)** — Evaluate **multiple LLMs × multiple benchmarks** in a single Deadline Cloud job. +* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ +* **[VTK Visualization Job Template](job_bundles/vtk-latest)** — This OpenJD job template allows users to run VTK (Visualization Toolkit) Python scripts using AWS Deadline Cloud. + +## Conda recipes and build jobs + +* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ +* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ +* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ +* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ +* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ +* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ +* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ +* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ +* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ +* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ +* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ +* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ +* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ +* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ +* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ +* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ +* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ +* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ +* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ +* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ +* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ +* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ +* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ +* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ +* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ +* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ +* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ + +## Worker containers + +* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ +* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ + +## Queue environments + +* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ +* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ +* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ +* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ +* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ +* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ +* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ +* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ + +## Host configuration scripts + +* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[AWS Deadline Cloud Font Installation](host_configuration_scripts/linux_font_installation)** — This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke. _(platforms: linux)_ +* **[Docker and NVIDIA Container Toolkit](host_configuration_scripts/docker_nvidia_container_toolkit)** — Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads. _(platforms: linux · tags: docker)_ +* **[Enable Swap on Service Managed Fleet Workers](host_configuration_scripts/swap_for_smf)** — Create and enable a swap file on Linux service managed fleet workers. _(platforms: linux)_ +* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ +* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ +* **[Override Memory Overcommit on Service Managed Fleet Workers](host_configuration_scripts/overcommit_override_for_smf)** — Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers. _(platforms: linux)_ +* **[Passwordless Sudo for Job User](host_configuration_scripts/sudo_for_job_user)** — Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers. _(platforms: linux)_ +* **[Worker configuration examples](host_configuration_scripts/worker_configuration)** — These scripts demonstrate common configuration tasks that may be required for your workloads. _(platforms: windows)_ +* **[Worker reboot host configuration](host_configuration_scripts/worker_reboot)** — Worker reboots may be required for system configuration changes. _(platforms: linux, windows)_ + +## Submission hooks + +* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ + +## Utility scripts + +* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ + +## Agent skills + +* **[3ds Max Host Config](skills/3dsmax-host-config)** — This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: 3dsmax)_ +* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ +* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ +* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ + +# Browse by journey + +See [`docs/sample-navigation.md`](docs/sample-navigation.md) for abbreviated decision guidance. + +## Run a new DCC or application + +* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ +* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ +* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. +* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ +* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ +* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ +* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ +* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ +* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ +* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ +* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ +* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ +* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ +* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ +* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ +* **[CLI script job](job_bundles/cli_job)** — Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI. +* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ +* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ +* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ +* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ +* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ +* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ +* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ +* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ +* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ +* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ +* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ +* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ +* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ +* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ +* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ +* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ +* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. +* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ +* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ +* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ +* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ +* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ +* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ +* **[Minimal OpenJD job](job_bundles/simple_job)** — Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle. +* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ +* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ +* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ +* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ +* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ +* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ +* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ +* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ +* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ +* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ +* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ +* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ +* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ +* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ +* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ +* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ +* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ +* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ +* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ +* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ +* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ +* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ + +## Install custom plugins + +* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ +* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ +* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ +* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ +* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ +* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ +* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ +* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ +* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ +* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ +* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ +* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ +* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ +* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ +* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ +* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ +* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ +* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ +* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ +* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ +* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ + +## Integrate studio tools + +* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ +* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ +* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ +* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ +* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ +* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ +* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. +* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. +* **[Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. _(platforms: platform-independent · tags: cloudformation, slack)_ +* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. diff --git a/conda_recipes/blender-4.5/README.md b/conda_recipes/blender-4.5/README.md index af5a70e3..21238c02 100644 --- a/conda_recipes/blender-4.5/README.md +++ b/conda_recipes/blender-4.5/README.md @@ -97,7 +97,7 @@ sets for the location of Blender and it's Python. ### Examples Blender Addons - [Blender - Flip Fluids](../blender-flipfluids/) -- [Blender - Plugin Bundle](../blender-plugin-build/) +- [Blender - Plugin Bundle](../blender-plugin-bundle/) ## Troubleshooting diff --git a/conda_recipes/blender-5.0/README.md b/conda_recipes/blender-5.0/README.md index de027b1d..d44fba98 100644 --- a/conda_recipes/blender-5.0/README.md +++ b/conda_recipes/blender-5.0/README.md @@ -97,7 +97,7 @@ sets for the location of Blender and it's Python. ### Examples Blender Addons - [Blender - Flip Fluids](../blender-flipfluids/) -- [Blender - Plugin Bundle](../blender-plugin-build/) +- [Blender - Plugin Bundle](../blender-plugin-bundle/) ## Troubleshooting diff --git a/conda_recipes/houdini-20.5/README.md b/conda_recipes/houdini-20.5/README.md index 3cf49345..ebca5fb2 100644 --- a/conda_recipes/houdini-20.5/README.md +++ b/conda_recipes/houdini-20.5/README.md @@ -46,7 +46,7 @@ Houdini supports plugins through the use of package files. A package is a json f [Houdini Plugin Reference](https://www.sidefx.com/docs/houdini/ref/plugins.html). Create your package files in `$PREFIX/opt/houdini/packages` and point them to the location of your plugins. See our Redshift for -Houdini recipe as [an example](conda_recipes/houdini-redshift-2025). +Houdini recipe as [an example](../houdini-redshift-2025/). ### Plugin Installation Paths diff --git a/conda_recipes/houdini-21.0/README.md b/conda_recipes/houdini-21.0/README.md index b225f23a..b4b87b45 100644 --- a/conda_recipes/houdini-21.0/README.md +++ b/conda_recipes/houdini-21.0/README.md @@ -45,7 +45,7 @@ Houdini supports plugins through the use of package files. A package is a json f [Houdini Plugin Reference](https://www.sidefx.com/docs/houdini/ref/plugins.html). Create your package files in `$PREFIX/opt/houdini/packages` and point them to the location of your plugins. See our Redshift for -Houdini recipe as [an example](conda_recipes/houdini-redshift-2025). +Houdini recipe as [an example](../houdini-redshift-2025/). ### Plugin Installation Paths diff --git a/conda_recipes/maya-2025/README.md b/conda_recipes/maya-2025/README.md index 91c27cf0..103a7986 100644 --- a/conda_recipes/maya-2025/README.md +++ b/conda_recipes/maya-2025/README.md @@ -14,7 +14,7 @@ package, place its `.mod` file in one of these so that Maya loads the plugin at Download the Autodesk_Maya_2025_Linux_64bit.tgz full download file from Autodesk, and place it in the `conda_recipes/archive_files` directory in your git clone of the -[https://github.com/aws-deadline/deadline-cloud-samples](deadline-cloud-samples) repository for +[deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples) repository for submitting package build jobs, ## Creating an archive file for Windows diff --git a/conda_recipes/maya-2026/README.md b/conda_recipes/maya-2026/README.md index b2dc5bae..721aec37 100644 --- a/conda_recipes/maya-2026/README.md +++ b/conda_recipes/maya-2026/README.md @@ -14,6 +14,6 @@ package, place its `.mod` file in one of these so that Maya loads the plugin at Download the Autodesk_Maya_2026_ML_Linux_64bit.tgz full download file from Autodesk, and place it in the `conda_recipes/archive_files` directory in your git clone of the -[https://github.com/aws-deadline/deadline-cloud-samples](deadline-cloud-samples) repository for +[deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples) repository for submitting package build jobs. diff --git a/conda_recipes/maya-redshift-2025/README.md b/conda_recipes/maya-redshift-2025/README.md index 7a845b62..ed27eb25 100644 --- a/conda_recipes/maya-redshift-2025/README.md +++ b/conda_recipes/maya-redshift-2025/README.md @@ -11,7 +11,7 @@ This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026 Download the redshift_2025.4.2_1782753868_linux_x64.run installer, or suitable alternate version from Maxon, and place it in the `conda_recipes/archive_files` directory in your git clone of the -[https://github.com/aws-deadline/deadline-cloud-samples](deadline-cloud-samples) repository for +[deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples) repository for submitting package build jobs. Please note that if the installer version used differs from "redshift_2025.4.2_1782753868_linux_x64.run", version diff --git a/conda_recipes/maya-redshift-2026/README.md b/conda_recipes/maya-redshift-2026/README.md index 725466f5..2389af0f 100644 --- a/conda_recipes/maya-redshift-2026/README.md +++ b/conda_recipes/maya-redshift-2026/README.md @@ -11,7 +11,7 @@ This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026 Download the redshift_2026.2.1_2202748377_linux_x64.run installer, or suitable alternate version from Maxon, and place it in the `conda_recipes/archive_files` directory in your git clone of the -[https://github.com/aws-deadline/deadline-cloud-samples](deadline-cloud-samples) repository for +[deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples) repository for submitting package build jobs. Please note that if the installer version used differs from "redshift_2026.2.1_2202748377_linux_x64.run", version diff --git a/docs/SAMPLE_README_TEMPLATE.md b/docs/SAMPLE_README_TEMPLATE.md new file mode 100644 index 00000000..bd9ee0d1 --- /dev/null +++ b/docs/SAMPLE_README_TEMPLATE.md @@ -0,0 +1,59 @@ +# Sample title + + + +One or two sentences explaining what the sample accomplishes and when a user should choose it. + +## What this sample demonstrates + +* Deadline Cloud capability or OpenJD pattern. +* Important delivery, lifecycle, or integration choice. +* Expected result. + +## Prerequisites + +* Required AWS resources and permissions. +* Required local tools and versions. +* Required application, plugin, and license access. + +## How it works + +Describe the important components and data flow. Keep detailed architecture in canonical documentation +or a focused design document; make this section sufficient to operate the sample safely. + +## Setup + +Provide deterministic setup instructions, including configuration values users must replace. + +## Run or submit + +Show the shortest working command first, then document meaningful variants. + +```console +# command +``` + +## Parameters and outputs + +Document inputs, defaults, output locations, and any artifacts or resources the sample creates. + +## Security, cost, and cleanup + +State the permission boundary, secret-handling expectations, network exposure, billable resources, +and exact cleanup steps. Do not embed credentials or private data. + +## Troubleshooting + +List likely, diagnosable failures and where users can find relevant worker, job, or service logs. + +## Related resources + +* Link to the canonical AWS Deadline Cloud developer guide topic. +* Link to closely related samples in this repository. diff --git a/docs/sample-navigation.md b/docs/sample-navigation.md new file mode 100644 index 00000000..91fc2dd5 --- /dev/null +++ b/docs/sample-navigation.md @@ -0,0 +1,86 @@ +# Choose samples for your Deadline Cloud journey + +This page is a routing guide. It helps you choose a delivery and integration boundary, then points +to working samples. For architecture, security, and implementation details, follow the linked +[AWS Deadline Cloud developer guide](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/index.html) topics. + +## Run a new DCC or application + +Start with the canonical guidance for +[deploying custom software on workers](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html) +and [building jobs](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/building-jobs.html). +Choose the least privileged delivery method that fits the application: + +* **Already available on the worker:** request the existing package from a queue environment and + focus on the OpenJD job. Compare [Blender render](../job_bundles/blender_render/) with the + [default Conda queue environment](../queue_environments/conda_queue_env_from_console.yaml). +* **Versioned application or runtime, no administrator install required:** build a Conda package, + publish it to a channel, and activate it with a queue environment. Start with the + [Conda recipes guide](../conda_recipes/), [package build job](../conda_recipes/conda_build_linux_package/), + and [portable inline Conda environment](../queue_environments/conda_queue_env_inline.yaml). +* **Administrator install or machine-level configuration required:** use a + [host configuration script](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/smf-admin.html) + on service-managed fleets. Start with [3ds Max](../host_configuration_scripts/3dsmax/) or use the + [installer-to-host-config agent skill](../skills/host-config-from-installer/). +* **Container-first application:** use the [Blender container](../containers/blender/blender-aswf-ci-base/) + as the application-image example and the [AL2023 worker-equivalent image](../containers/al2023-deadline/) + for local compatibility work. For fully controlled hosts and images, evaluate customer-managed fleets. + +Then model the work: use [job development progression](../job_bundles/job_dev_progression/) to choose +parameters, steps, dependencies, and scripts; use [Maya CLI render](../job_bundles/maya_cli_render/) +for a small DCC command-line example. If the application needs a persistent integration process rather +than a simple CLI, review the OpenJD adaptor pattern in the developer guide before designing it. + +## Install custom plugins + +Read the canonical [Plugin Sync](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/plugin-sync.html) +and [custom software delivery](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html) +guidance first. Choose based on change rate, installation behavior, and privilege: + +* **Plugin Sync:** use it for supported DCC packages when plugin files can be staged in the job + attachments S3 bucket and copied into DCC-specific locations as the software environment activates. + It avoids rebuilding an application package for frequent plugin-file changes. See the implementations + in [Houdini 21.0](../conda_recipes/houdini-21.0/), [Blender 5.1](../conda_recipes/blender-5.1/), + [Maya 2026](../conda_recipes/maya-2026/), and [Nuke 17](../conda_recipes/nuke-17.0/). +* **Conda package:** use it when a plugin can install without administrator access and should be + versioned, resolved, cached, and activated with the DCC. Start with the + [Blender plugin bundle](../conda_recipes/blender-plugin-bundle/), + [After Effects plugin bundle](../conda_recipes/aftereffects-plugin-bundle/), or a renderer recipe + such as [V-Ray for Maya](../conda_recipes/maya-vray-2026/). +* **Host configuration:** use it when the vendor installer needs administrator privileges, writes + machine-wide state, installs services or drivers, or cannot be safely repackaged. Start with + [After Effects and Red Giant](../host_configuration_scripts/aftereffects/aftereffects_redgiant/), + [Cinema 4D and Red Giant](../host_configuration_scripts/cinema4d/cinema4d_redgiant/), or the + [3ds Max plugin combinations](../host_configuration_scripts/3dsmax/). + +Keep licensing separate from file delivery. The [license-limit submission hook](../submission_hooks/license_limits/) +shows one way to attach schedulable license requirements; the developer guide covers supported licensing models. + +## Integrate studio tools into the job lifecycle + +Use the canonical guides for [submitting from an application](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/from-within-applications.html), +[configuring jobs with environments](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/configure-jobs.html), +and [Deadline Cloud EventBridge events](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/eventbridge-integration.html). +Pick the narrowest lifecycle boundary that owns the behavior: + +* **Pre-submission:** validate policy, discover assets, or enrich the job before it reaches Deadline + Cloud. Use [submission hooks](../submission_hooks/) for cross-job policy such as + [license limits](../submission_hooks/license_limits/); use a custom in-application submitter when + artist context and DCC state are required, as in the [FuzzyPixel Maya submitter](../job_bundles/custom_submitters/fuzzypixel_maya/). +* **Session enter/exit:** initialize a costly runtime once for one or more tasks and tear it down at + session end. Queue environments apply to all compatible jobs; job environments travel with one + bundle. Compare the [queue environments](../queue_environments/) with the + [daemon-process](../job_bundles/job_env_daemon_process/), + [environment-variable](../job_bundles/job_env_vars/), and + [command-injection](../job_bundles/job_env_with_new_command/) examples. +* **Step and task actions:** put deterministic workload and publishing commands in OpenJD steps; + express ordering with step dependencies and parallelism with task parameter spaces. See + [Maya export then Arnold render](../job_bundles/maya_arnold_ass_export_render/) and + [Blender render, encode, and publish to Flow](../job_bundles/blender_turntable_to_flow/). +* **Service events:** react outside the worker after jobs or other resources change state. Route + EventBridge events to a durable integration target; start with + [job event Slack notifications](../cloudformation/notification_templates/job_events_slack_lambda/). + +Use [FFmpeg movie from job output](../job_bundles/ffmpeg_movie_from_job_output/) when post-processing +should be an explicitly submitted downstream job, and [the job attachments uploader](../utility_scripts/upload_to_job_attachments/) +when an external tool needs to stage assets before submission. diff --git a/job_bundles/README.md b/job_bundles/README.md index d940b6fd..b70e9d1d 100644 --- a/job_bundles/README.md +++ b/job_bundles/README.md @@ -53,7 +53,7 @@ the template is metadata for the job parameters, defining the parameter names, t The step definition includes a parameter space to define a task for each frame for a range expression in the Frames job parameter, and a short script that substitutes job parameters and the Frame task parameter into a script command for each task. -* [3dsmax_vray_denoiser_example](3dsmax_vray_denoiser_example) - 3ds Max V-Ray rendering with smart frame chunking and VRIMG to EXR conversion +* [3dsmax_vray_denoiser](3dsmax_vray_denoiser) - 3ds Max V-Ray rendering with smart frame chunking and VRIMG to EXR conversion * [arnold_standalone_render](arnold_standalone_render) - Arnold standalone rendering of .ass files using `kick` * [blender_render](blender_render/template.yaml) * [keyshot_standalone](keyshot_standalone) diff --git a/job_bundles/ssh_to_smf_windows/README.md b/job_bundles/ssh_to_smf_windows/README.md index 59de2e52..e9c0c97e 100644 --- a/job_bundles/ssh_to_smf_windows/README.md +++ b/job_bundles/ssh_to_smf_windows/README.md @@ -285,4 +285,4 @@ Push a new host-config via `aws deadline update-fleet --host-configuration file: ## See Also - [`ssh_to_smf`](../ssh_to_smf/README.md) — the Linux version this bundle is cloned from -- [`.kiro/specs/ssh-to-smf-windows/design.md`](../../../.kiro/specs/ssh-to-smf-windows/design.md) — full design doc +- [Linux sibling design reference](../ssh_to_smf/DESIGN.md) — background for the shared SSM activation pattern diff --git a/job_bundles/tile_render_maya_ffmpeg_for_blogpost/README.md b/job_bundles/tile_render_maya_ffmpeg_for_blogpost/README.md index ae5ae84b..8929111c 100644 --- a/job_bundles/tile_render_maya_ffmpeg_for_blogpost/README.md +++ b/job_bundles/tile_render_maya_ffmpeg_for_blogpost/README.md @@ -15,7 +15,7 @@ to define task parameter values (TileNumberX and TileNumberY) for the tile numbe to the runData for the Maya render step. A second step is defined to have a dependency on the render step, which uses a bash script to call ffmpeg to assemble the tiles. -See also the job bundle [tiled_region_render_with_maya_arnold](tiled_region_render_with_maya_arnold) +See also the job bundle [tile_render_with_maya_arnold](../tile_render_with_maya_arnold/) that forms the tile bounds in the job and uses region render parameters when calling the Open Job Description application interface for rendering Maya. diff --git a/job_bundles/tile_render_with_maya_vray/README.md b/job_bundles/tile_render_with_maya_vray/README.md index c01d52a0..5f12fa41 100644 --- a/job_bundles/tile_render_with_maya_vray/README.md +++ b/job_bundles/tile_render_with_maya_vray/README.md @@ -4,4 +4,4 @@ This job bundle will submit a tile rendering job using Maya and V-Ray to create This job bundle relies on the V-Ray render handler in the Maya adaptor. The template defines a number of X and Y tiles which is used to split the output into evenly sized tiles that can be distributed across multiple render nodes. -See also the job bundle [tiled_region_render_with_maya_arnold](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/tile_render_with_maya_arnold) for an example using Maya and Arnold and using FFMPG to assemble PNG files into the final image. +See also the job bundle [tile_render_with_maya_arnold](../tile_render_with_maya_arnold/) for an example using Maya and Arnold and using FFmpeg to assemble PNG files into the final image. diff --git a/sample_catalog.json b/sample_catalog.json new file mode 100644 index 00000000..84c3de97 --- /dev/null +++ b/sample_catalog.json @@ -0,0 +1,2935 @@ +{ + "schema_version": 1, + "taxonomy": { + "categories": [ + { + "id": "infrastructure", + "label": "Infrastructure as code", + "description": "Deploy or operate farms, queues, fleets, storage, and event integrations." + }, + { + "id": "job-bundle", + "label": "OpenJD job bundles", + "description": "Submit rendering, simulation, media, machine learning, and utility workloads." + }, + { + "id": "software-package", + "label": "Conda recipes and build jobs", + "description": "Build applications, adaptors, renderers, and plugins for worker delivery." + }, + { + "id": "container", + "label": "Worker containers", + "description": "Build container images for local compatibility testing or containerized jobs." + }, + { + "id": "queue-environment", + "label": "Queue environments", + "description": "Prepare session-scoped software and licensing for every job on a queue." + }, + { + "id": "host-configuration", + "label": "Host configuration scripts", + "description": "Configure service-managed fleet workers with elevated privileges at startup." + }, + { + "id": "submission-hook", + "label": "Submission hooks", + "description": "Apply organization policy or enrich job templates before submission." + }, + { + "id": "utility", + "label": "Utility scripts", + "description": "Automate supporting Deadline Cloud asset and workflow operations." + }, + { + "id": "agent-skill", + "label": "Agent skills", + "description": "Guide coding agents through repeatable sample authoring and software setup tasks." + } + ], + "tasks": [ + { + "id": "deploy-farm", + "label": "Deploy a farm", + "description": "Create Deadline Cloud farms and their supporting AWS infrastructure." + }, + { + "id": "manage-fleet", + "label": "Manage fleet capacity", + "description": "Configure worker connectivity, capacity, scheduling, and health." + }, + { + "id": "monitor-events", + "label": "Monitor events and budgets", + "description": "Route Deadline Cloud lifecycle or budget events to operational destinations." + }, + { + "id": "submit-job", + "label": "Author and submit jobs", + "description": "Create or run OpenJD job bundles through Deadline Cloud." + }, + { + "id": "render-content", + "label": "Render DCC content", + "description": "Render scenes and images with digital content creation applications." + }, + { + "id": "process-media", + "label": "Process media", + "description": "Encode, assemble, or publish image sequences and review media." + }, + { + "id": "run-simulation", + "label": "Run simulations", + "description": "Distribute physical, robotics, driving, procedural, or financial simulations." + }, + { + "id": "run-ml-workload", + "label": "Run machine learning workloads", + "description": "Distribute model training, inference, evaluation, or classification." + }, + { + "id": "run-scientific-workload", + "label": "Run scientific workloads", + "description": "Distribute computational biology, chemistry, or molecular workloads." + }, + { + "id": "manage-assets", + "label": "Move job assets", + "description": "Upload, discover, stage, or retrieve job inputs and outputs." + }, + { + "id": "build-software", + "label": "Build software packages", + "description": "Build Conda packages or container images for repeatable delivery." + }, + { + "id": "provide-software", + "label": "Provide software to workers", + "description": "Make applications, runtimes, and dependencies available to jobs." + }, + { + "id": "install-plugins", + "label": "Install custom plugins", + "description": "Package or install DCC renderers, extensions, and plugins." + }, + { + "id": "configure-workers", + "label": "Configure workers", + "description": "Prepare operating systems, software environments, and worker settings." + }, + { + "id": "integrate-pipeline", + "label": "Integrate a studio pipeline", + "description": "Connect submission, execution, publishing, notifications, and studio services." + }, + { + "id": "customize-submission", + "label": "Customize job submission", + "description": "Inspect or modify job bundles before they reach Deadline Cloud." + }, + { + "id": "troubleshoot-workers", + "label": "Troubleshoot workers", + "description": "Create controlled interactive access for diagnosing worker behavior." + }, + { + "id": "develop-samples", + "label": "Develop samples with an agent", + "description": "Use repository agent skills to create and test consistent samples." + } + ], + "journeys": [ + { + "id": "new-application", + "label": "Run a new DCC or application", + "description": "Choose how to package software, model work, and submit an application job." + }, + { + "id": "custom-plugins", + "label": "Install custom plugins", + "description": "Choose plugin sync, Conda packaging, or privileged host installation." + }, + { + "id": "studio-integration", + "label": "Integrate studio tools", + "description": "Connect tools at submission, session, step, task, and event boundaries." + } + ] + }, + "inventory": { + "roots": [ + { + "path": "cloudformation/farm_templates", + "kind": "directory" + }, + { + "path": "cloudformation/notification_templates", + "kind": "directory" + }, + { + "path": "terraform/farm_templates", + "kind": "directory" + }, + { + "path": "job_bundles", + "kind": "directory" + }, + { + "path": "job_bundles/custom_submitters", + "kind": "directory" + }, + { + "path": "conda_recipes", + "kind": "directory" + }, + { + "path": "containers", + "kind": "directory" + }, + { + "path": "containers/blender", + "kind": "directory" + }, + { + "path": "queue_environments", + "kind": "file", + "pattern": "*.yaml" + }, + { + "path": "host_configuration_scripts", + "kind": "directory" + }, + { + "path": "host_configuration_scripts/3dsmax", + "kind": "directory" + }, + { + "path": "host_configuration_scripts/aftereffects", + "kind": "directory" + }, + { + "path": "host_configuration_scripts/cinema4d", + "kind": "directory" + }, + { + "path": "submission_hooks", + "kind": "directory" + }, + { + "path": "utility_scripts", + "kind": "directory" + }, + { + "path": "skills", + "kind": "directory" + } + ], + "exclusions": [ + { + "path": "job_bundles/custom_submitters", + "reason": "Grouping directory; its concrete submitter sample is discovered from the nested root." + }, + { + "path": "job_bundles/job_attachments_devguide_output", + "reason": "Support-only output companion consumed by the job attachments developer-guide sample." + }, + { + "path": "conda_recipes/archive_files", + "reason": "Support-only staging area for vendor archives used while building package recipes." + }, + { + "path": "containers/blender", + "reason": "Grouping directory; its concrete Blender container sample is discovered from the nested root." + }, + { + "path": "host_configuration_scripts/3dsmax", + "reason": "Grouping directory; concrete 3ds Max host configuration samples are cataloged below it." + }, + { + "path": "host_configuration_scripts/aftereffects", + "reason": "Grouping directory; concrete After Effects host configuration samples are cataloged below it." + }, + { + "path": "host_configuration_scripts/cinema4d", + "reason": "Grouping directory; concrete Cinema 4D host configuration samples are cataloged below it." + } + ] + }, + "samples": [ + { + "path": "cloudformation/farm_templates/cmf_templates", + "title": "Deploying Deadline Cloud fleet health check", + "description": "Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet.", + "category": "infrastructure", + "tasks": [ + "manage-fleet", + "monitor-events" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation" + ], + "status": "active" + }, + { + "path": "cloudformation/farm_templates/cuda_farm", + "title": "AWS Deadline Cloud farm for running CUDA jobs", + "description": "This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs.", + "category": "infrastructure", + "tasks": [ + "deploy-farm", + "manage-fleet" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation", + "cuda" + ], + "status": "active" + }, + { + "path": "cloudformation/farm_templates/fleet_standby_scheduling", + "title": "Scheduled Standby Workers for Deadline Cloud Fleets", + "description": "This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule.", + "category": "infrastructure", + "tasks": [ + "deploy-farm", + "manage-fleet" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation" + ], + "status": "active" + }, + { + "path": "cloudformation/farm_templates/smf_capacity_manager", + "title": "Service-managed fleet capacity manager", + "description": "This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets.", + "category": "infrastructure", + "tasks": [ + "deploy-farm", + "manage-fleet" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation" + ], + "status": "active" + }, + { + "path": "cloudformation/farm_templates/smf_vpc_fsx", + "title": "Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS", + "description": "This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint.", + "category": "infrastructure", + "tasks": [ + "deploy-farm", + "manage-fleet" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation" + ], + "status": "active" + }, + { + "path": "cloudformation/farm_templates/starter_farm", + "title": "A starter AWS Deadline Cloud farm", + "description": "This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways.", + "category": "infrastructure", + "tasks": [ + "deploy-farm", + "manage-fleet" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation" + ], + "featured": true, + "status": "active" + }, + { + "path": "cloudformation/notification_templates/budget_events_notification", + "title": "Deadline Budget Threshold Reached Event Integration with Email and Slack", + "description": "This CloudFormation template sets up an integration to receive notifications via email and Slack when a budget threshold is reached in the `aws.deadline` service.", + "category": "infrastructure", + "tasks": [ + "monitor-events" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation" + ], + "status": "active" + }, + { + "path": "cloudformation/notification_templates/job_events_slack_lambda", + "title": "Job event Slack notifications with Lambda and EventBridge", + "description": "This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge.", + "category": "infrastructure", + "tasks": [ + "monitor-events" + ], + "journeys": [ + "studio-integration" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "cloudformation", + "slack" + ], + "updated": "2026-07-10", + "status": "active" + }, + { + "path": "conda_recipes/aftereffects-25.1", + "title": "Adobe After Effects 25 conda build recipe", + "description": "The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "windows" + ], + "tags": [ + "aftereffects", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/aftereffects-plugin-bundle", + "title": "Conda build recipe for a bundle of After Effects plugins", + "description": "This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "aftereffects", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/aftereffects-saber", + "title": "Saber plug-in conda build recipe for After Effects", + "description": "Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "aftereffects", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/autodock-vina-1.2.5", + "title": "AutoDock Vina 1.2.5 Conda recipe", + "description": "Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "autodock", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/ayon-launcher", + "title": "AYON Launcher Conda Package", + "description": "This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application", + "studio-integration" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "ayon", + "conda" + ], + "updated": "2026-06-18", + "status": "active" + }, + { + "path": "conda_recipes/blender-4.2", + "title": "Blender 4.2 Conda recipe", + "description": "Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "blender", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/blender-4.3", + "title": "Blender 4.3 Conda recipe", + "description": "Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "blender", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/blender-4.4", + "title": "Blender 4.4 Conda recipe", + "description": "Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "blender", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/blender-4.5", + "title": "Blender 4.5 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "blender", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/blender-5.0", + "title": "Blender 5.0 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "blender", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/blender-5.1", + "title": "Blender 5.1 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "blender", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/blender-flipfluids", + "title": "FLIP Fluids addon conda build recipe for Blender", + "description": "Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "blender", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/blender-plugin-bundle", + "title": "Blender Plugin Build", + "description": "This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "blender", + "conda" + ], + "featured": true, + "status": "active" + }, + { + "path": "conda_recipes/cinema4d-2024", + "title": "Cinema 2024 conda build recipe", + "description": "The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "windows" + ], + "tags": [ + "cinema4d", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/cinema4d-2025", + "title": "Cinema 2025 conda build recipe", + "description": "The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "windows" + ], + "tags": [ + "cinema4d", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/cinema4d-c4dtoa-2025", + "title": "Conda build recipe for Arnold C4DtoA", + "description": "This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "cinema4d", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/cinema4d-insydium-2025", + "title": "Conda build recipe for INSYDIUM X-Particles", + "description": "This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "cinema4d", + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/cinema4d-openjd", + "title": "Cinema 4D OpenJD adaptor Conda recipe", + "description": "Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "cinema4d", + "conda", + "openjd" + ], + "status": "active" + }, + { + "path": "conda_recipes/cinema4d-vray-2025", + "title": "Conda build recipe for Cinema 4D V-Ray", + "description": "This package build recipe creates a conda package for the vray plugin you provide in an input folder.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "cinema4d", + "conda", + "vray" + ], + "status": "active" + }, + { + "path": "conda_recipes/conda_build_linux_package", + "title": "Conda package build job", + "description": "Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/deadline", + "title": "Deadline Cloud CLI Conda recipe", + "description": "Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "conda", + "deadline" + ], + "status": "active" + }, + { + "path": "conda_recipes/houdini-20.5", + "title": "Houdini 20.5 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "houdini" + ], + "status": "active" + }, + { + "path": "conda_recipes/houdini-21.0", + "title": "Houdini 21.0 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "houdini" + ], + "updated": "2026-07-07", + "status": "active" + }, + { + "path": "conda_recipes/houdini-redshift-2025", + "title": "Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "houdini", + "redshift" + ], + "status": "active" + }, + { + "path": "conda_recipes/houdini-redshift-2026", + "title": "Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "houdini", + "redshift" + ], + "status": "active" + }, + { + "path": "conda_recipes/houdini-vray-7", + "title": "V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "houdini", + "vray" + ], + "status": "active" + }, + { + "path": "conda_recipes/infinigen-1.19.0", + "title": "Infinigen conda package recipe", + "description": "This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "infinigen" + ], + "updated": "2026-06-23", + "status": "active" + }, + { + "path": "conda_recipes/keyshot-2025", + "title": "KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "windows" + ], + "tags": [ + "conda", + "keyshot" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-2025", + "title": "Maya 2025 conda build recipe", + "description": "This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "conda", + "maya" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-2026", + "title": "Maya 2026 conda build recipe", + "description": "This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-bifrost-2026", + "title": "Bifrost for Maya conda build recipe", + "description": "This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-mtoa-2025", + "title": "Maya to Arnold 2025 conda build recipe", + "description": "Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "conda", + "maya" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-mtoa-2026", + "title": "Maya to Arnold 2026 conda build recipe", + "description": "Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-openjd", + "title": "Maya OpenJD adaptor Conda recipe", + "description": "Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "conda", + "maya", + "openjd" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-redshift-2025", + "title": "Redshift 2025.4.2 for Maya conda build recipe", + "description": "This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya", + "redshift" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-redshift-2026", + "title": "Redshift 2026.2.1 for Maya conda build recipe", + "description": "This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya", + "redshift" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-vray-2025", + "title": "V-Ray 6.20.02 for Maya 2025 Conda Recipe", + "description": "Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya", + "vray" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-vray-2026", + "title": "V-Ray 7.10.02 for Maya 2026 Conda Recipe", + "description": "Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya", + "vray" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-vray-7.2-2025", + "title": "V-Ray 7.20.02 for Maya 2025 Conda Recipe", + "description": "Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya", + "vray" + ], + "status": "active" + }, + { + "path": "conda_recipes/maya-vray-7.2-2026", + "title": "V-Ray 7.20.02 for Maya 2026 Conda Recipe", + "description": "Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "maya", + "vray" + ], + "status": "active" + }, + { + "path": "conda_recipes/nerfstudio", + "title": "NeRF Studio conda package recipe", + "description": "This is a rattler-build recipe for NeRF Studio and some extras.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/nuke-16.0", + "title": "Nuke 16.0 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "nuke" + ], + "status": "active" + }, + { + "path": "conda_recipes/nuke-17.0", + "title": "Nuke 17.0 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "nuke" + ], + "status": "active" + }, + { + "path": "conda_recipes/nuke-denoise", + "title": "Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud", + "description": "This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "nuke" + ], + "status": "active" + }, + { + "path": "conda_recipes/openjd-adaptor-runtime", + "title": "OpenJD adaptor runtime Conda recipe", + "description": "Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux", + "windows" + ], + "tags": [ + "conda", + "openjd" + ], + "status": "active" + }, + { + "path": "conda_recipes/unreal-engine", + "title": "Unreal Engine Conda Package Recipe", + "description": "This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "conda_recipes/unreal-engine-openjd", + "title": "Unreal Engine OpenJD adaptor Conda recipe", + "description": "Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "windows" + ], + "tags": [ + "conda", + "openjd" + ], + "status": "active" + }, + { + "path": "conda_recipes/vray", + "title": "V-Ray conda package recipe", + "description": "This is a rattler-build recipe for the VRay standalone renderer.", + "category": "software-package", + "tasks": [ + "build-software", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "vray" + ], + "status": "active" + }, + { + "path": "conda_recipes/vredcore-2025", + "title": "VRED 2025 Conda Recipe", + "description": "Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "vred" + ], + "status": "active" + }, + { + "path": "conda_recipes/vredcore-2026", + "title": "VRED 2026 Conda Recipe", + "description": "Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page.", + "category": "software-package", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "conda", + "vred" + ], + "status": "active" + }, + { + "path": "containers/al2023-deadline", + "title": "AL2023 Deadline Cloud worker-equivalent image", + "description": "This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image.", + "category": "container", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "deadline" + ], + "status": "active" + }, + { + "path": "containers/blender/blender-aswf-ci-base", + "title": "Blender container for AWS Deadline Cloud", + "description": "This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud.", + "category": "container", + "tasks": [ + "build-software", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "linux" + ], + "tags": [ + "blender" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2024", + "title": "3ds Max 2024 host configuration", + "description": "Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13", + "title": "3ds Max 2025 with Corona 13", + "description": "Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2025-and-vray", + "title": "3ds Max 2025 and V-Ray host configuration", + "description": "This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin", + "vray" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins", + "title": "3ds Max 2025, V-Ray, and AEC plugins", + "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin", + "vray" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow", + "title": "3ds Max 2025, V-Ray, and tyFlow", + "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin", + "vray" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2027", + "title": "3ds Max 2027 host configuration", + "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14", + "title": "3ds Max 2027 and Corona 14", + "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2027-and-vray", + "title": "3ds Max 2027 and V-Ray", + "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin", + "vray" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow", + "title": "3ds Max 2027, V-Ray, and tyFlow", + "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin", + "vray" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins", + "title": "3ds Max 2027, V-Ray, and AEC plugins", + "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "3dsmax", + "plugin", + "vray" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/aftereffects/aftereffects_redgiant", + "title": "Host Configuration for After Effects and Plugins", + "description": "This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "aftereffects", + "plugin", + "redgiant" + ], + "updated": "2026-07-14", + "featured": true, + "status": "active" + }, + { + "path": "host_configuration_scripts/cinema4d/cinema4d_redgiant", + "title": "Host Configuration for Cinema 4D and Red Giant", + "description": "This guide covers setting up the required software installers for Red Giant host config script package build.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "windows" + ], + "tags": [ + "cinema4d", + "plugin", + "redgiant" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/docker_nvidia_container_toolkit", + "title": "Docker and NVIDIA Container Toolkit", + "description": "Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "platforms": [ + "linux" + ], + "tags": [ + "docker" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/linux_font_installation", + "title": "AWS Deadline Cloud Font Installation", + "description": "This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "platforms": [ + "linux" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/overcommit_override_for_smf", + "title": "Override Memory Overcommit on Service Managed Fleet Workers", + "description": "Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "platforms": [ + "linux" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/sudo_for_job_user", + "title": "Passwordless Sudo for Job User", + "description": "Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "platforms": [ + "linux" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/swap_for_smf", + "title": "Enable Swap on Service Managed Fleet Workers", + "description": "Create and enable a swap file on Linux service managed fleet workers.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "platforms": [ + "linux" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/worker_configuration", + "title": "Worker configuration examples", + "description": "These scripts demonstrate common configuration tasks that may be required for your workloads.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "platforms": [ + "windows" + ], + "status": "active" + }, + { + "path": "host_configuration_scripts/worker_reboot", + "title": "Worker reboot host configuration", + "description": "Worker reboots may be required for system configuration changes.", + "category": "host-configuration", + "tasks": [ + "configure-workers", + "provide-software" + ], + "platforms": [ + "linux", + "windows" + ], + "status": "active" + }, + { + "path": "job_bundles/3dsmax_vray_denoiser", + "title": "3ds Max V-Ray Denoiser Example", + "description": "This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "tags": [ + "3dsmax", + "vray" + ], + "status": "active" + }, + { + "path": "job_bundles/afterfx_render_one_task", + "title": "After Effects Render - one task", + "description": "This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "status": "active" + }, + { + "path": "job_bundles/arnold_standalone_render", + "title": "Arnold Standalone Render", + "description": "This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya).", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "arnold" + ], + "status": "active" + }, + { + "path": "job_bundles/autonomous_driving_carla", + "title": "Autonomous Driving Simulation Using CARLA", + "description": "This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture.", + "category": "job-bundle", + "tasks": [ + "run-simulation", + "submit-job" + ], + "tags": [ + "carla" + ], + "updated": "2026-06-19", + "status": "active" + }, + { + "path": "job_bundles/blender_render", + "title": "Blender frame render", + "description": "Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "blender" + ], + "status": "active" + }, + { + "path": "job_bundles/blender_turntable_to_flow", + "title": "Blender Turntable to Autodesk Flow Production Tracking", + "description": "This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`.", + "category": "job-bundle", + "tasks": [ + "integrate-pipeline", + "process-media", + "render-content", + "submit-job" + ], + "journeys": [ + "studio-integration" + ], + "tags": [ + "blender", + "flow" + ], + "updated": "2026-06-25", + "featured": true, + "status": "active" + }, + { + "path": "job_bundles/cli_job", + "title": "CLI script job", + "description": "Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "journeys": [ + "new-application" + ], + "status": "active" + }, + { + "path": "job_bundles/copy_s3_prefix_to_job_attachments", + "title": "Job bundle: Copy S3 prefix to job attachments", + "description": "With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue.", + "category": "job-bundle", + "tasks": [ + "manage-assets", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/custom_submitters/fuzzypixel_maya", + "title": "FuzzyPixel Maya Custom Submitter", + "description": "Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns.", + "category": "job-bundle", + "tasks": [ + "integrate-pipeline", + "render-content", + "submit-job" + ], + "journeys": [ + "studio-integration" + ], + "tags": [ + "maya" + ], + "status": "active" + }, + { + "path": "job_bundles/esmfold_predict", + "title": "ESMFold protein structure prediction", + "description": "This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license).", + "category": "job-bundle", + "tasks": [ + "run-ml-workload", + "run-scientific-workload", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/ffmpeg_encode_video", + "title": "FFmpeg Encode Video job bundle", + "description": "This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg.", + "category": "job-bundle", + "tasks": [ + "process-media", + "submit-job" + ], + "tags": [ + "ffmpeg" + ], + "status": "active" + }, + { + "path": "job_bundles/ffmpeg_movie_from_job_output", + "title": "FFmpeg Movie from Job Output", + "description": "This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file.", + "category": "job-bundle", + "tasks": [ + "integrate-pipeline", + "process-media", + "submit-job" + ], + "journeys": [ + "studio-integration" + ], + "tags": [ + "ffmpeg" + ], + "status": "active" + }, + { + "path": "job_bundles/flux2_klein_lora", + "title": "FLUX.2 Klein LoRA Training and Image Generation", + "description": "Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model.", + "category": "job-bundle", + "tasks": [ + "run-ml-workload", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/gromacs_md", + "title": "GROMACS Molecular Dynamics", + "description": "Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape.", + "category": "job-bundle", + "tasks": [ + "run-scientific-workload", + "submit-job" + ], + "tags": [ + "gromacs" + ], + "status": "active" + }, + { + "path": "job_bundles/gsplat_pipeline", + "title": "Gaussian Splatting pipeline for AWS Deadline Cloud", + "description": "This job bundle runs a 3D Gaussian Splatting pipeline.", + "category": "job-bundle", + "tasks": [ + "integrate-pipeline", + "run-ml-workload", + "submit-job" + ], + "tags": [], + "status": "active" + }, + { + "path": "job_bundles/gui_control_showcase", + "title": "Job parameter GUI control showcase", + "description": "Preview every OpenJD job-parameter user interface control supported by the Deadline Cloud bundle submitter.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/houdini_husk_usd_render", + "title": "SideFX Houdini Husk USD Render", + "description": "Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "houdini" + ], + "status": "active" + }, + { + "path": "job_bundles/infinigen_scene_gen", + "title": "Infinigen scene generation job bundle", + "description": "Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers.", + "category": "job-bundle", + "tasks": [ + "render-content", + "run-simulation", + "submit-job" + ], + "tags": [ + "infinigen" + ], + "updated": "2026-06-23", + "status": "active" + }, + { + "path": "job_bundles/job_attachments_devguide", + "title": "Job attachments input example", + "description": "Demonstrate input path parameters and asset references for Deadline Cloud job attachments.", + "category": "job-bundle", + "tasks": [ + "manage-assets", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/job_dev_progression", + "title": "Job Development Progression", + "description": "Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "journeys": [ + "new-application" + ], + "featured": true, + "status": "active" + }, + { + "path": "job_bundles/job_env_daemon_process", + "title": "Session daemon process environment", + "description": "Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits.", + "category": "job-bundle", + "tasks": [ + "integrate-pipeline", + "submit-job" + ], + "journeys": [ + "studio-integration" + ], + "status": "active" + }, + { + "path": "job_bundles/job_env_vars", + "title": "Job environment variables", + "description": "Set environment variables at the OpenJD job environment level for all steps in a session.", + "category": "job-bundle", + "tasks": [ + "integrate-pipeline", + "submit-job" + ], + "journeys": [ + "studio-integration" + ], + "status": "active" + }, + { + "path": "job_bundles/job_env_with_new_command", + "title": "Job environment command injection", + "description": "Add a command to every task in a session by using an OpenJD job environment.", + "category": "job-bundle", + "tasks": [ + "integrate-pipeline", + "submit-job" + ], + "journeys": [ + "studio-integration" + ], + "status": "active" + }, + { + "path": "job_bundles/keyshot_standalone", + "title": "KeyShot Standalone", + "description": "This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "tags": [ + "keyshot" + ], + "status": "active" + }, + { + "path": "job_bundles/list_available_conda_packages", + "title": "List Available Conda Packages Job Bundle", + "description": "This job bundle lists all available conda packages in the deadline-cloud channel using `conda search -c deadline-cloud '*'` and prints the list into the logs.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "job_bundles/maya_arnold_ass_export_render", + "title": "Maya Arnold Export and Render", + "description": "This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "arnold", + "maya" + ], + "status": "active" + }, + { + "path": "job_bundles/maya_cli_render", + "title": "Maya CLI Render", + "description": "This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "maya" + ], + "status": "active" + }, + { + "path": "job_bundles/monte_carlo_simulation", + "title": "Pricing Financial Derivatives", + "description": "Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model.", + "category": "job-bundle", + "tasks": [ + "run-simulation", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/mujoco_sim_to_policy", + "title": "MuJoCo Sim-to-Policy Pipeline (3-step)", + "description": "This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm.", + "category": "job-bundle", + "tasks": [ + "run-simulation", + "submit-job" + ], + "updated": "2026-06-25", + "status": "active" + }, + { + "path": "job_bundles/nuke_render", + "title": "Nuke Render Job Bundle", + "description": "This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "nuke" + ], + "status": "active" + }, + { + "path": "job_bundles/pip_package_job", + "title": "Pip Package Job", + "description": "This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "tags": [ + "pip" + ], + "updated": "2026-07-08", + "status": "active" + }, + { + "path": "job_bundles/pip_self_contained_job", + "title": "Pip Self-Contained Job", + "description": "This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "tags": [ + "pip" + ], + "updated": "2026-07-08", + "status": "active" + }, + { + "path": "job_bundles/povray-3.7", + "title": "POV-Ray 3.7 AWS Deadline Cloud Job Template", + "description": "This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "tags": [ + "povray" + ], + "status": "active" + }, + { + "path": "job_bundles/redshift-2025", + "title": "Redshift Rendering Job Template", + "description": "This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "tags": [ + "redshift" + ], + "status": "active" + }, + { + "path": "job_bundles/satellite_classification", + "title": "Satellite Imagery Classification", + "description": "Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map.", + "category": "job-bundle", + "tasks": [ + "run-ml-workload", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/simple_job", + "title": "Minimal OpenJD job", + "description": "Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "journeys": [ + "new-application" + ], + "status": "active" + }, + { + "path": "job_bundles/ssh_to_smf", + "title": "SSM Managed Node via Deadline Cloud Job", + "description": "Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job.", + "category": "job-bundle", + "tasks": [ + "submit-job", + "troubleshoot-workers" + ], + "status": "active" + }, + { + "path": "job_bundles/ssh_to_smf_windows", + "title": "SSM Managed Node via Deadline Cloud Job (Windows)", + "description": "Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job.", + "category": "job-bundle", + "tasks": [ + "submit-job", + "troubleshoot-workers" + ], + "status": "active" + }, + { + "path": "job_bundles/task_chunking", + "title": "Task Chunking Job Bundle Samples", + "description": "These samples demonstrate the Task Chunking extension for Open Job Description, which improves resource utilization by grouping multiple frames or tasks into chunks instead of processing them individually.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/tile_render_maya_ffmpeg_for_blogpost", + "title": "Tile Render with Maya/Arnold and Ffmpeg", + "description": "Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created.", + "category": "job-bundle", + "tasks": [ + "process-media", + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "ffmpeg", + "maya" + ], + "status": "active" + }, + { + "path": "job_bundles/tile_render_with_maya_arnold", + "title": "Tile render with Maya and Arnold", + "description": "Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "arnold", + "maya" + ], + "status": "active" + }, + { + "path": "job_bundles/tile_render_with_maya_vray", + "title": "Tile Render with Maya/V-Ray and OpenImageIO", + "description": "This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "maya", + "vray" + ], + "status": "active" + }, + { + "path": "job_bundles/tile_render_with_vray_linux", + "title": "V-Ray Region Render Sample Job Bundle", + "description": "This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "vray" + ], + "status": "active" + }, + { + "path": "job_bundles/turntable_with_maya_arnold", + "title": "Turntable with Maya/Arnold job bundle", + "description": "This job takes an OBJ geometry file as input, and outputs a video turntable render.", + "category": "job-bundle", + "tasks": [ + "process-media", + "render-content", + "submit-job" + ], + "tags": [ + "arnold", + "maya" + ], + "status": "active" + }, + { + "path": "job_bundles/virtual_screening_vina", + "title": "Virtual Screening with AutoDock VINA", + "description": "Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor).", + "category": "job-bundle", + "tasks": [ + "run-scientific-workload", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/vllm_lm_eval_leaderboard", + "title": "vLLM LLM Leaderboard (Matrix Evaluation)", + "description": "Evaluate **multiple LLMs \u00d7 multiple benchmarks** in a single Deadline Cloud job.", + "category": "job-bundle", + "tasks": [ + "run-ml-workload", + "submit-job" + ], + "status": "active" + }, + { + "path": "job_bundles/vray_render", + "title": "V-Ray sample job bundle", + "description": "Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "vray" + ], + "status": "active" + }, + { + "path": "job_bundles/vred_render", + "title": "VRED Renderer Job Bundle", + "description": "Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly.", + "category": "job-bundle", + "tasks": [ + "render-content", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "tags": [ + "vred" + ], + "status": "active" + }, + { + "path": "job_bundles/vtk-latest", + "title": "VTK Visualization Job Template", + "description": "This OpenJD job template allows users to run VTK (Visualization Toolkit) Python scripts using AWS Deadline Cloud.", + "category": "job-bundle", + "tasks": [ + "submit-job" + ], + "status": "active" + }, + { + "path": "queue_environments/conda_queue_env_from_console.yaml", + "title": "Default service-managed fleet Conda environment", + "description": "Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "queue_environments/conda_queue_env_improved_caching.yaml", + "title": "Cached service-managed fleet Conda environment", + "description": "Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "conda" + ], + "featured": true, + "status": "active" + }, + { + "path": "queue_environments/conda_queue_env_inline.yaml", + "title": "Portable inline Conda environment", + "description": "Create and activate a Conda environment using portable inline shell actions on customer-managed workers.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "queue_environments/conda_queue_env_inline_improved_caching.yaml", + "title": "Portable cached inline Conda environment", + "description": "Create reusable Conda environments with inline actions suitable for customer-managed fleet workers.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "queue_environments/conda_queue_env_pyrattler.yaml", + "title": "Py-rattler queue environment", + "description": "Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "queue_environments/disconnect_ubl_queue_env.yaml", + "title": "Disconnect usage-based licensing environment", + "description": "Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "status": "active" + }, + { + "path": "queue_environments/pip_queue_env.yaml", + "title": "Pip queue environment", + "description": "Create a session-scoped Python virtual environment and install job-requested packages with pip.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "pip" + ], + "updated": "2026-07-08", + "status": "active" + }, + { + "path": "queue_environments/rez_queue_env.yaml", + "title": "Rez queue environment", + "description": "Resolve job-requested Rez packages from a shared repository and activate them for the worker session.", + "category": "queue-environment", + "tasks": [ + "configure-workers", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "rez" + ], + "status": "active" + }, + { + "path": "skills/3dsmax-host-config", + "title": "3ds Max Host Config", + "description": "This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers.", + "category": "agent-skill", + "tasks": [ + "configure-workers", + "develop-samples" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "3dsmax" + ], + "status": "active" + }, + { + "path": "skills/conda-builder", + "title": "Conda recipe builder agent skill", + "description": "Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe.", + "category": "agent-skill", + "tasks": [ + "build-software", + "develop-samples", + "provide-software" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "conda" + ], + "status": "active" + }, + { + "path": "skills/deadline-cloud-job", + "title": "Deadline Cloud job authoring agent skill", + "description": "Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud.", + "category": "agent-skill", + "tasks": [ + "develop-samples", + "submit-job" + ], + "journeys": [ + "new-application" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "deadline" + ], + "status": "active" + }, + { + "path": "skills/host-config-from-installer", + "title": "Host Config from Installer", + "description": "This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers.", + "category": "agent-skill", + "tasks": [ + "configure-workers", + "develop-samples", + "install-plugins", + "provide-software" + ], + "journeys": [ + "new-application", + "custom-plugins" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "installer", + "plugin" + ], + "status": "active" + }, + { + "path": "submission_hooks/license_limits", + "title": "Enforce Fixed License Limits with Submission Hooks", + "description": "This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions \u2014 without requiring artists to configure anything manually.", + "category": "submission-hook", + "tasks": [ + "customize-submission", + "integrate-pipeline" + ], + "journeys": [ + "studio-integration" + ], + "platforms": [ + "platform-independent" + ], + "featured": true, + "status": "active" + }, + { + "path": "terraform/farm_templates/starter_farm", + "title": "A starter AWS Deadline Cloud farm (Terraform)", + "description": "This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways.", + "category": "infrastructure", + "tasks": [ + "deploy-farm", + "manage-fleet" + ], + "platforms": [ + "platform-independent" + ], + "tags": [ + "terraform" + ], + "featured": true, + "status": "active" + }, + { + "path": "utility_scripts/upload_to_job_attachments", + "title": "AWS Deadline Cloud Job Attachments Uploader", + "description": "Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage.", + "category": "utility", + "tasks": [ + "integrate-pipeline", + "manage-assets" + ], + "journeys": [ + "studio-integration" + ], + "platforms": [ + "platform-independent" + ], + "status": "active" + } + ] +} diff --git a/sample_catalog.schema.json b/sample_catalog.schema.json new file mode 100644 index 00000000..43a702fe --- /dev/null +++ b/sample_catalog.schema.json @@ -0,0 +1,130 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/sample_catalog.schema.json", + "title": "AWS Deadline Cloud sample catalog", + "type": "object", + "additionalProperties": false, + "required": ["schema_version", "taxonomy", "inventory", "samples"], + "properties": { + "schema_version": {"type": "integer", "const": 1}, + "taxonomy": { + "type": "object", + "additionalProperties": false, + "required": ["categories", "tasks", "journeys"], + "properties": { + "categories": {"$ref": "#/$defs/taxonomyItems"}, + "tasks": {"$ref": "#/$defs/taxonomyItems"}, + "journeys": {"$ref": "#/$defs/taxonomyItems"} + } + }, + "inventory": { + "type": "object", + "additionalProperties": false, + "required": ["roots", "exclusions"], + "properties": { + "roots": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": ["path", "kind"], + "properties": { + "path": {"$ref": "#/$defs/repositoryPath"}, + "kind": {"enum": ["directory", "file"]}, + "pattern": {"type": "string", "minLength": 1} + } + } + }, + "exclusions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["path", "reason"], + "properties": { + "path": {"$ref": "#/$defs/repositoryPath"}, + "reason": {"type": "string", "minLength": 20} + } + } + } + } + }, + "samples": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/$defs/sample"} + } + }, + "$defs": { + "repositoryPath": { + "type": "string", + "minLength": 1, + "pattern": "^[A-Za-z0-9._-]+(?:/[A-Za-z0-9._-]+)*$" + }, + "taxonomyItems": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": ["id", "label", "description"], + "properties": { + "id": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"}, + "label": {"type": "string", "minLength": 2}, + "description": {"type": "string", "minLength": 20} + } + } + }, + "sample": { + "type": "object", + "additionalProperties": false, + "required": ["path", "title", "description", "category", "tasks"], + "properties": { + "path": {"$ref": "#/$defs/repositoryPath"}, + "title": {"type": "string", "minLength": 3, "maxLength": 100}, + "description": {"type": "string", "minLength": 30, "maxLength": 300}, + "category": { + "enum": [ + "infrastructure", "job-bundle", "software-package", "container", + "queue-environment", "host-configuration", "submission-hook", + "utility", "agent-skill" + ] + }, + "tasks": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "enum": [ + "deploy-farm", "manage-fleet", "monitor-events", "submit-job", + "render-content", "process-media", "run-simulation", "run-ml-workload", + "run-scientific-workload", "manage-assets", "build-software", + "provide-software", "install-plugins", "configure-workers", + "integrate-pipeline", "customize-submission", "troubleshoot-workers", + "develop-samples" + ] + } + }, + "journeys": { + "type": "array", + "uniqueItems": true, + "items": {"enum": ["new-application", "custom-plugins", "studio-integration"]} + }, + "platforms": { + "type": "array", + "uniqueItems": true, + "items": {"enum": ["linux", "windows", "macos", "platform-independent"]} + }, + "tags": { + "type": "array", + "uniqueItems": true, + "items": {"type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$"} + }, + "status": {"enum": ["active", "reference", "deprecated"]}, + "updated": {"type": "string", "format": "date"}, + "featured": {"type": "boolean"} + } + } + } +} diff --git a/scripts/catalog_lib.py b/scripts/catalog_lib.py new file mode 100644 index 00000000..60068dae --- /dev/null +++ b/scripts/catalog_lib.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +"""Shared helpers for the sample catalog tools.""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + +REPOSITORY_ROOT = Path(__file__).resolve().parents[1] +CATALOG_PATH = REPOSITORY_ROOT / "sample_catalog.json" +SCHEMA_PATH = REPOSITORY_ROOT / "sample_catalog.schema.json" +GENERATED_PATH = REPOSITORY_ROOT / "SAMPLES.md" + + +def load_json(path: Path) -> dict[str, Any]: + with path.open(encoding="utf-8") as stream: + value = json.load(stream) + if not isinstance(value, dict): + raise ValueError(f"{path.relative_to(REPOSITORY_ROOT)} must contain a JSON object") + return value + + +def load_catalog() -> dict[str, Any]: + return load_json(CATALOG_PATH) + + +def taxonomy_labels(catalog: dict[str, Any], taxonomy: str) -> dict[str, str]: + return {item["id"]: item["label"] for item in catalog["taxonomy"][taxonomy]} diff --git a/scripts/check_markdown_links.py b/scripts/check_markdown_links.py new file mode 100644 index 00000000..8c8ebe06 --- /dev/null +++ b/scripts/check_markdown_links.py @@ -0,0 +1,262 @@ +#!/usr/bin/env python3 +"""Check local links in every tracked Markdown file.""" + +from __future__ import annotations + +import html +import os +import re +import subprocess +import sys +from pathlib import Path +from urllib.parse import unquote, urlsplit + +REPOSITORY_ROOT = Path(__file__).resolve().parents[1] +SCHEME = re.compile(r"^[A-Za-z][A-Za-z0-9+.-]*:") +REFERENCE_DEFINITION = re.compile(r"^\s*\[[^]]+\]:\s*(?:<([^>]+)>|(\S+))", re.MULTILINE) +HTML_TARGET = re.compile( + r"\b(?:href|src)\s*=\s*(?:\"([^\"]*)\"|'([^']*)'|([^\s>'\"]+))", + re.IGNORECASE, +) +OPENING_FENCE = re.compile(r"^ {0,3}(`{3,}|~{3,})(.*)$") +ATX_HEADING = re.compile(r"^ {0,3}#{1,6}(?:[ \t]+|$)(.*)$") +SETEXT_HEADING = re.compile(r"^ {0,3}(=+|-+)[ \t]*$") +HTML_ANCHOR = re.compile( + r"<(?:a\b[^>]*\b(?:id|name)|[A-Za-z][A-Za-z0-9:-]*\b[^>]*\bid)\s*=\s*" + r"(?:\"([^\"]+)\"|'([^']+)'|([^\s>'\"]+))", + re.IGNORECASE, +) + + +def tracked_markdown() -> list[Path]: + output = subprocess.check_output( + ["git", "ls-files", "-z", "--cached", "--others", "--exclude-standard"], + cwd=REPOSITORY_ROOT, + ).decode("utf-8") + return [REPOSITORY_ROOT / path for path in output.split("\0") if path.endswith(".md")] + + +def strip_html_comments(line: str, in_comment: bool) -> tuple[str, bool]: + visible: list[str] = [] + position = 0 + while position < len(line): + if in_comment: + end = line.find("-->", position) + if end == -1: + return "".join(visible), True + position = end + 3 + in_comment = False + continue + start = line.find("\nafter\n" + self.assertEqual([], checker.extract_targets(text)) + + def test_brackets_followed_by_spaced_parenthetical_are_not_links(self) -> None: + targets = checker.extract_targets("Region [0,0,960,540] (top-left)\n") + self.assertEqual([], targets) + + def test_shorter_fence_does_not_close_four_backtick_block(self) -> None: + text = ( + "````markdown\n" + "[hidden](missing-one.md)\n" + "```\n" + "[still hidden](missing-two.md)\n" + "````\n" + "[visible](present.md)\n" + ) + self.assertEqual(["present.md"], checker.extract_targets(text)) + + def test_duplicate_headings_use_github_suffixes(self) -> None: + fragments = checker.heading_fragments("# Example\n## Example\n## Example\n") + self.assertEqual({"example", "example-1", "example-2"}, fragments) + + def test_explicit_unquoted_html_anchor_is_supported(self) -> None: + fragments = checker.heading_fragments("\n") + self.assertIn("custom-anchor", fragments) + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/tests/test_validate_catalog.py b/scripts/tests/test_validate_catalog.py new file mode 100644 index 00000000..5445f864 --- /dev/null +++ b/scripts/tests/test_validate_catalog.py @@ -0,0 +1,58 @@ +from __future__ import annotations + +import sys +import unittest +from pathlib import Path + +SCRIPTS_DIR = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(SCRIPTS_DIR)) + +from validate_catalog import ( # noqa: E402 + ValidationFailure, + validate_schema, + validate_title_uniqueness, +) + + +class ValidateSchemaTests(unittest.TestCase): + def test_boolean_does_not_equal_integer_const(self) -> None: + with self.assertRaises(ValidationFailure): + validate_schema(True, {"const": 1}, {}) + + def test_boolean_does_not_equal_integer_enum_value(self) -> None: + with self.assertRaises(ValidationFailure): + validate_schema(True, {"enum": [1]}, {}) + + def test_date_rejects_compact_iso_form(self) -> None: + with self.assertRaises(ValidationFailure): + validate_schema("20260714", {"type": "string", "format": "date"}, {}) + + def test_date_rejects_iso_week_date(self) -> None: + with self.assertRaises(ValidationFailure): + validate_schema("2026-W29-2", {"type": "string", "format": "date"}, {}) + + def test_date_accepts_rfc3339_full_date(self) -> None: + validate_schema("2026-07-14", {"type": "string", "format": "date"}, {}) + + def test_date_rejects_invalid_calendar_date(self) -> None: + with self.assertRaises(ValidationFailure): + validate_schema("2026-02-30", {"type": "string", "format": "date"}, {}) + + def test_semantically_duplicate_titles_are_rejected(self) -> None: + samples = [ + {"path": "samples/one", "title": "Redshift for Maya: Conda Recipe"}, + {"path": "samples/two", "title": "redshift-for-maya conda recipe"}, + ] + with self.assertRaisesRegex(ValidationFailure, "semantically duplicate titles"): + validate_title_uniqueness(samples) + + def test_version_distinguished_titles_are_accepted(self) -> None: + samples = [ + {"path": "samples/2025", "title": "Redshift 2025 for Maya Conda Recipe"}, + {"path": "samples/2026", "title": "Redshift 2026 for Maya Conda Recipe"}, + ] + validate_title_uniqueness(samples) + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/validate_catalog.py b/scripts/validate_catalog.py new file mode 100644 index 00000000..9811b0bc --- /dev/null +++ b/scripts/validate_catalog.py @@ -0,0 +1,222 @@ +#!/usr/bin/env python3 +"""Validate sample metadata, tracked inventory coverage, and generated output.""" + +from __future__ import annotations + +import fnmatch +import re +import subprocess +import sys +from datetime import date +from pathlib import Path +from typing import Any + +from catalog_lib import CATALOG_PATH, GENERATED_PATH, REPOSITORY_ROOT, SCHEMA_PATH, load_catalog, load_json +from generate_samples import render + + +class ValidationFailure(Exception): + pass + + +def fail(message: str) -> None: + raise ValidationFailure(message) + + +def resolve_reference(root_schema: dict[str, Any], reference: str) -> dict[str, Any]: + if not reference.startswith("#/"): + fail(f"unsupported schema reference: {reference}") + value: Any = root_schema + for component in reference[2:].split("/"): + value = value[component.replace("~1", "/").replace("~0", "~")] + return value + + +def json_equal(left: Any, right: Any) -> bool: + """Compare JSON values without treating booleans as numbers.""" + if type(left) is not type(right): + return False + if isinstance(left, dict): + return left.keys() == right.keys() and all(json_equal(left[key], right[key]) for key in left) + if isinstance(left, list): + return len(left) == len(right) and all(json_equal(a, b) for a, b in zip(left, right)) + return left == right + + +def validate_schema(value: Any, rule: dict[str, Any], root_schema: dict[str, Any], location: str = "$") -> None: + if "$ref" in rule: + validate_schema(value, resolve_reference(root_schema, rule["$ref"]), root_schema, location) + return + if "const" in rule and not json_equal(value, rule["const"]): + fail(f"{location}: expected {rule['const']!r}") + if "enum" in rule and not any(json_equal(value, option) for option in rule["enum"]): + fail(f"{location}: {value!r} is not one of {rule['enum']!r}") + + expected_type = rule.get("type") + type_matches = { + "object": lambda item: isinstance(item, dict), + "array": lambda item: isinstance(item, list), + "string": lambda item: isinstance(item, str), + "boolean": lambda item: isinstance(item, bool), + "integer": lambda item: isinstance(item, int) and not isinstance(item, bool), + } + if expected_type and not type_matches[expected_type](value): + fail(f"{location}: expected {expected_type}, got {type(value).__name__}") + + if isinstance(value, dict): + for required in rule.get("required", []): + if required not in value: + fail(f"{location}: missing required property {required!r}") + properties = rule.get("properties", {}) + if rule.get("additionalProperties") is False: + unexpected = sorted(set(value) - set(properties)) + if unexpected: + fail(f"{location}: unexpected properties {unexpected!r}") + for key, child in value.items(): + if key in properties: + validate_schema(child, properties[key], root_schema, f"{location}.{key}") + + if isinstance(value, list): + if len(value) < rule.get("minItems", 0): + fail(f"{location}: expected at least {rule['minItems']} items") + if rule.get("uniqueItems"): + for index, item in enumerate(value): + if any(json_equal(item, earlier) for earlier in value[:index]): + fail(f"{location}: array values must be unique") + if "items" in rule: + for index, child in enumerate(value): + validate_schema(child, rule["items"], root_schema, f"{location}[{index}]") + + if isinstance(value, str): + if len(value) < rule.get("minLength", 0): + fail(f"{location}: string is shorter than {rule['minLength']} characters") + if "maxLength" in rule and len(value) > rule["maxLength"]: + fail(f"{location}: string is longer than {rule['maxLength']} characters") + if "pattern" in rule and not re.fullmatch(rule["pattern"], value): + fail(f"{location}: {value!r} does not match {rule['pattern']!r}") + if rule.get("format") == "date": + if not re.fullmatch(r"\d{4}-\d{2}-\d{2}", value): + fail(f"{location}: {value!r} is not an RFC 3339 full-date") + try: + date.fromisoformat(value) + except ValueError: + fail(f"{location}: {value!r} is not an RFC 3339 full-date") + + +def tracked_paths() -> list[str]: + output = subprocess.check_output(["git", "ls-files", "-z"], cwd=REPOSITORY_ROOT).decode("utf-8") + return [path for path in output.split("\0") if path] + + +def discover_inventory(catalog: dict[str, Any], tracked: list[str]) -> set[str]: + discovered: set[str] = set() + for root in catalog["inventory"]["roots"]: + prefix = root["path"].rstrip("/") + "/" + pattern = root.get("pattern", "*") + if root["kind"] == "directory": + children = { + remainder.split("/", 1)[0] + for path in tracked + if path.startswith(prefix) + for remainder in [path[len(prefix) :]] + if "/" in remainder + } + else: + children = { + remainder + for path in tracked + if path.startswith(prefix) + for remainder in [path[len(prefix) :]] + if "/" not in remainder and fnmatch.fnmatchcase(remainder, pattern) + } + discovered.update(prefix + child for child in children) + return discovered + + +def semantic_title(title: str) -> str: + """Normalize title presentation differences that should not create distinct samples.""" + return re.sub(r"[\W_]+", " ", title.casefold(), flags=re.UNICODE).strip() + + +def validate_title_uniqueness(samples: list[dict[str, Any]]) -> None: + paths_by_title: dict[str, list[str]] = {} + for sample in samples: + paths_by_title.setdefault(semantic_title(sample["title"]), []).append(sample["path"]) + duplicates = {title: paths for title, paths in paths_by_title.items() if len(paths) > 1} + if duplicates: + details = "; ".join(f"{title!r}: {paths}" for title, paths in sorted(duplicates.items())) + fail(f"samples: semantically duplicate titles: {details}") + + +def validate_semantics(catalog: dict[str, Any]) -> None: + for taxonomy_name in ("categories", "tasks", "journeys"): + identifiers = [item["id"] for item in catalog["taxonomy"][taxonomy_name]] + if len(identifiers) != len(set(identifiers)): + fail(f"taxonomy.{taxonomy_name}: duplicate IDs") + + category_ids = {item["id"] for item in catalog["taxonomy"]["categories"]} + task_ids = {item["id"] for item in catalog["taxonomy"]["tasks"]} + journey_ids = {item["id"] for item in catalog["taxonomy"]["journeys"]} + sample_paths = [sample["path"] for sample in catalog["samples"]] + if len(sample_paths) != len(set(sample_paths)): + fail("samples: duplicate paths") + validate_title_uniqueness(catalog["samples"]) + + for sample in catalog["samples"]: + path = sample["path"] + if not (REPOSITORY_ROOT / path).exists(): + fail(f"samples: path does not exist: {path}") + if sample["category"] not in category_ids: + fail(f"{path}: undefined category {sample['category']}") + undefined_tasks = set(sample["tasks"]) - task_ids + undefined_journeys = set(sample.get("journeys", [])) - journey_ids + if undefined_tasks: + fail(f"{path}: undefined tasks {sorted(undefined_tasks)}") + if undefined_journeys: + fail(f"{path}: undefined journeys {sorted(undefined_journeys)}") + if sample["description"].rstrip()[-1] not in ".!?": + fail(f"{path}: description must end with punctuation") + + tracked = tracked_paths() + discovered = discover_inventory(catalog, tracked) + exclusions = catalog["inventory"]["exclusions"] + exclusion_paths = [item["path"] for item in exclusions] + if len(exclusion_paths) != len(set(exclusion_paths)): + fail("inventory.exclusions: duplicate paths") + invalid_exclusions = set(exclusion_paths) - discovered + if invalid_exclusions: + fail(f"inventory.exclusions: paths are not discoverable: {sorted(invalid_exclusions)}") + + expected_samples = discovered - set(exclusion_paths) + actual_samples = set(sample_paths) + missing = expected_samples - actual_samples + unexpected = actual_samples - expected_samples + if missing or unexpected: + details = [] + if missing: + details.append(f"missing catalog entries: {sorted(missing)}") + if unexpected: + details.append(f"entries outside tracked inventory: {sorted(unexpected)}") + fail("; ".join(details)) + + generated = render(catalog) + current = GENERATED_PATH.read_text(encoding="utf-8") if GENERATED_PATH.exists() else "" + if current != generated: + fail("SAMPLES.md drifted; run: python3 scripts/generate_samples.py") + + +def main() -> int: + try: + catalog = load_catalog() + schema = load_json(SCHEMA_PATH) + validate_schema(catalog, schema, schema) + validate_semantics(catalog) + except (OSError, ValueError, ValidationFailure) as error: + print(f"Catalog validation failed: {error}", file=sys.stderr) + return 1 + print(f"Catalog valid ({len(catalog['samples'])} samples; exact tracked inventory coverage)") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/validate_repository.py b/scripts/validate_repository.py new file mode 100644 index 00000000..3c6d4a1f --- /dev/null +++ b/scripts/validate_repository.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +"""Run all repository-wide static validation.""" + +from __future__ import annotations + +import subprocess +import sys +from pathlib import Path + +REPOSITORY_ROOT = Path(__file__).resolve().parents[1] +CHECKS = ( + ( + "unit tests", + sys.executable, + "-m", + "unittest", + "discover", + "-s", + str(REPOSITORY_ROOT / "scripts" / "tests"), + "-p", + "test_*.py", + ), + ("sample catalog", sys.executable, str(REPOSITORY_ROOT / "scripts" / "validate_catalog.py")), + ( + "generated sample index", + sys.executable, + str(REPOSITORY_ROOT / "scripts" / "generate_samples.py"), + "--check", + ), + ("Markdown links", sys.executable, str(REPOSITORY_ROOT / "scripts" / "check_markdown_links.py")), +) + + +def main() -> int: + for label, *command in CHECKS: + print(f"==> {label}", flush=True) + result = subprocess.run(command, cwd=REPOSITORY_ROOT, check=False) + if result.returncode: + return result.returncode + print("Repository validation passed") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 4790467379cbf0d5a7306735e9b6d5c6590ab748 Mon Sep 17 00:00:00 2001 From: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> Date: Wed, 15 Jul 2026 07:33:59 -0700 Subject: [PATCH 2/6] docs: simplify sample navigation and check links Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- .github/external-link-ignore.txt | 18 + .github/workflows/static_validation.yml | 36 +- AGENTS.md | 40 +- CONTRIBUTING.md | 52 +- README.md | 15 +- SAMPLES.md | 729 ---- conda_recipes/keyshot-2025/README.md | 2 +- conda_recipes/nuke-16.0/README.md | 1 - conda_recipes/nuke-17.0/README.md | 1 - conda_recipes/nuke-denoise/README.md | 2 +- docs/SAMPLE_README_TEMPLATE.md | 3 +- .../README.md | 6 +- job_bundles/job_dev_progression/README.md | 4 +- sample_catalog.json | 2935 ----------------- sample_catalog.schema.json | 130 - scripts/catalog_lib.py | 29 - scripts/check_external_links.py | 498 +++ scripts/check_markdown_links.py | 109 +- scripts/generate_samples.py | 117 - scripts/query_samples.py | 36 - scripts/tests/test_check_external_links.py | 217 ++ scripts/tests/test_check_markdown_links.py | 72 +- scripts/tests/test_validate_catalog.py | 58 - scripts/validate_catalog.py | 222 -- scripts/validate_repository.py | 7 - 25 files changed, 1003 insertions(+), 4336 deletions(-) create mode 100644 .github/external-link-ignore.txt delete mode 100644 SAMPLES.md delete mode 100644 sample_catalog.json delete mode 100644 sample_catalog.schema.json delete mode 100644 scripts/catalog_lib.py create mode 100644 scripts/check_external_links.py delete mode 100644 scripts/generate_samples.py delete mode 100644 scripts/query_samples.py create mode 100644 scripts/tests/test_check_external_links.py delete mode 100644 scripts/tests/test_validate_catalog.py delete mode 100644 scripts/validate_catalog.py diff --git a/.github/external-link-ignore.txt b/.github/external-link-ignore.txt new file mode 100644 index 00000000..ef73383e --- /dev/null +++ b/.github/external-link-ignore.txt @@ -0,0 +1,18 @@ +# Exact original-link domains that consistently reject this repository's live checker. +# Entries may cover true subdomains by DNS-label boundary; wildcards and substrings are forbidden. +# Each domain must be immediately preceded by: # YYYY-MM-DD: empirically observed bot rejection. + +# 2026-07-14: HEAD and minimal Range GET both returned HTTP 403 for public API documentation. +docs.blender.org +# 2026-07-14: HEAD and minimal Range GET both returned HTTP 403 for public release downloads. +download.blender.org +# 2026-07-14: HEAD and minimal Range GET both returned HTTP 429 after bounded retries. +docs.vllm.ai +# 2026-07-14: HEAD and minimal Range GET both returned HTTP 429 after bounded retries. +pip.pypa.io +# 2026-07-14: HEAD and minimal Range GET both returned HTTP 429 after bounded retries. +rez.readthedocs.io +# 2026-07-14: HEAD and minimal Range GET both returned HTTP 403 for public product pages. +www.autodesk.com +# 2026-07-14: HEAD and minimal Range GET both returned a self-referential HTTP 302 without a browser session. +manage.autodesk.com diff --git a/.github/workflows/static_validation.yml b/.github/workflows/static_validation.yml index ae25560c..ddd1d133 100644 --- a/.github/workflows/static_validation.yml +++ b/.github/workflows/static_validation.yml @@ -1,19 +1,45 @@ -name: Static validation +name: Documentation validation on: pull_request: push: branches: [mainline] + schedule: + - cron: "17 8 * * 2" + workflow_dispatch: -permissions: - contents: read +permissions: {} + +concurrency: + group: documentation-validation-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true jobs: - validate: - name: Catalog and Markdown + static: + name: Unit and static checks + if: github.event_name == 'pull_request' || github.event_name == 'push' runs-on: ubuntu-latest + timeout-minutes: 10 + permissions: + contents: read steps: - name: Check out repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false - name: Run repository validation run: python3 scripts/validate_repository.py + + external-links: + name: Live external Markdown links + runs-on: ubuntu-latest + timeout-minutes: 30 + permissions: + contents: read + steps: + - name: Check out repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + - name: Check live external links + run: python3 scripts/check_external_links.py diff --git a/AGENTS.md b/AGENTS.md index 841b4c9a..aa412ebc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -14,22 +14,23 @@ python3 scripts/validate_repository.py ``` Run it after every repository change, in addition to tests or validation owned by the sample you edit. - -## Find and query samples - -[`sample_catalog.json`](sample_catalog.json) is the human-edited, machine-readable source of truth. -[`SAMPLES.md`](SAMPLES.md) is generated for browsing and must not be edited directly. Query catalog -metadata without third-party dependencies, for example: +External Markdown links use a separate network-dependent command: ```console -python3 scripts/query_samples.py --task render-content -python3 scripts/query_samples.py --journey custom-plugins --platform windows -python3 scripts/query_samples.py --category job-bundle --tag blender +python3 scripts/check_external_links.py ``` -Run `python3 scripts/query_samples.py --help` for all filters. Paths are stable sample identities. -Discovery roots and intentional support-only exclusions are declared in the catalog's `inventory` -section and enforced against tracked Git files. +Use `--no-ignore` to audit the narrowly documented domain ignore list before changing it; genuine +broken links must be fixed rather than ignored. + +## Find samples + +The filesystem is the exhaustive sample inventory. Browse the top-level area directories directly and +search their paths or contents (for example, with `find` and `git grep`) when looking for a specific +application, renderer, workflow, or platform. Start with the task table and repository map in +[`README.md`](README.md) when you want recommendations. Folder READMEs and +[`docs/sample-navigation.md`](docs/sample-navigation.md) are curated introductions; they may +intentionally highlight only recommended canonical examples and are not complete inventories. ## Where things live @@ -45,10 +46,8 @@ deadline-cloud-samples/ ├── submission_hooks/ Pre-submission Deadline Cloud CLI hooks ├── utility_scripts/ Standalone workflow helpers ├── skills/ Task-specific guides for coding agents -├── docs/ Navigation and contributor contracts -├── scripts/ Catalog generation and repository validation -├── sample_catalog.json Human-edited sample metadata and inventory policy -└── SAMPLES.md Generated browseable sample index +├── docs/ Curated navigation and contributor contracts +└── scripts/ Standard-library repository validation ``` Read the relevant sample `README.md` before modifying its files. Use @@ -81,16 +80,17 @@ Skills are auto-discovered through `.claude/skills` and `.kiro/skills` symlinks. `deadline-cloud.yaml`. * For OpenJD templates, run `openjd check` and `openjd run --tasks ` to verify a representative task locally before submitting the full parameter range when possible. -* New, renamed, or removed samples must update `sample_catalog.json`; run - `python3 scripts/generate_samples.py` after editing metadata. +* Keep the filesystem as the inventory; update curated folder, root, or journey guidance only when + recommended starting points change. * Do not add third-party runtime dependencies to repository validation. ## Pre-PR checklist -* [ ] Run `python3 scripts/validate_repository.py` successfully. +* [ ] Run `python3 scripts/validate_repository.py` successfully (unit tests and static local-link checks). +* [ ] Run `python3 scripts/check_external_links.py` successfully when Markdown links change. * [ ] Run the affected sample's own relevant tests or static checks. * [ ] Update the sample README when behavior, prerequisites, parameters, outputs, or risks change. -* [ ] Update catalog metadata and regenerate `SAMPLES.md` when sample inventory or metadata changes. +* [ ] Update curated folder or journey guidance only when recommended starting points change. * [ ] Use a [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) title. * [ ] Sign off every commit under the [Developer Certificate of Origin](https://developercertificate.org/). * [ ] Check changed content for inclusive language. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 692ea813..c7d6b36a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -71,28 +71,52 @@ GitHub provides additional documentation on [forking a repository](https://help. ### Adding or updating a sample -Every discoverable sample is indexed by [`sample_catalog.json`](sample_catalog.json), and the -human-browsable [`SAMPLES.md`](SAMPLES.md) is generated from it. When you add, rename, or remove a -sample, you must: - -1. Add or update its catalog entry. Use the path as its stable identity, select values from the - controlled category/task/journey taxonomies, and write a concise plain-English description. -2. For a nontrivial sample, include the sections documented in +The filesystem under each top-level sample area is the exhaustive inventory. Folder READMEs, the root +README, and [`docs/sample-navigation.md`](docs/sample-navigation.md) are curated introductions and may +intentionally highlight only recommended or canonical samples. Do not maintain a second exhaustive +list. When you add, rename, or remove a sample: + +1. Put it in the appropriate top-level area and give a nontrivial sample its own README. +2. Update a folder README, the root README, or the journey guide only when the sample should become a + recommended starting point or changes existing curated guidance. +3. For a nontrivial sample, include the sections documented in [`docs/SAMPLE_README_TEMPLATE.md`](docs/SAMPLE_README_TEMPLATE.md): purpose, demonstrated capabilities, prerequisites, operation, setup, run instructions, parameters and outputs, security/cost/cleanup, troubleshooting, and related resources. -3. Regenerate the browsable catalog with `python3 scripts/generate_samples.py`. -4. Run the complete local static validation from the repository root: +4. Run the complete local unit and static validation from the repository root: ```console python3 scripts/validate_repository.py ``` -The validation uses only the Python standard library. It checks metadata against the JSON Schema, -requires exact coverage of the tracked sample inventory (including documented exclusions), detects -catalog generation drift, and checks local links in all tracked Markdown files. Also run any tests -specific to the sample you changed; for OpenJD templates, validate and run a representative task -locally when possible. +The top-level command uses only the Python standard library. It runs all checker unit tests and checks +local links, including same-document and cross-document anchors, in every tracked Markdown file. Also +run tests specific to the sample you changed; for OpenJD templates, validate and run a representative +task locally when possible. + +Live external links are intentionally a separate network-dependent validation mode: + +```console +python3 scripts/check_external_links.py +``` + +The live checker aggregates source locations, validates every URL, redirect, and DNS answer against +public-network-only rules, tries `HEAD` before a minimal one-byte `GET`, and does not honor environment +proxy settings. It checks all external Markdown links on pull requests, mainline pushes, the weekly +schedule, and manual workflow runs. + +The narrow [external-link ignore file](.github/external-link-ignore.txt) is only for domains that +empirically reject both checker requests as bot traffic. Before adding an exact domain, run the audit: + +```console +python3 scripts/check_external_links.py --no-ignore +``` + +Confirm the failure is a repeatable bot rejection rather than a missing page, then add the exact domain +with an immediately preceding dated comment that records the observed status or error. Entries match +the domain and true subdomains by DNS-label boundary only; wildcards and substring matching are not +supported. Ignores apply only to original link hosts, never redirect destinations. Fix genuine broken +links, including HTTP 404 responses, instead of ignoring them. ### Conventional commits diff --git a/README.md b/README.md index 8f253140..0686910f 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,13 @@ Start with the task you want to complete; each sample stays self-contained in it |---|---| | Deploy a farm | [CloudFormation starter farm](cloudformation/farm_templates/starter_farm/) or [Terraform starter farm](terraform/farm_templates/starter_farm/) | | Learn how a job is structured | [Job development progression](job_bundles/job_dev_progression/) or the [minimal job](job_bundles/simple_job/) | -| Render with a DCC | [Blender render](job_bundles/blender_render/), [Maya CLI render](job_bundles/maya_cli_render/), or browse [all job bundles](SAMPLES.md#openjd-job-bundles) | +| Render with a DCC | [Blender render](job_bundles/blender_render/), [Maya CLI render](job_bundles/maya_cli_render/), or browse the [job bundles](job_bundles/) | | Provide applications to workers | [Conda recipes](conda_recipes/), [queue environments](queue_environments/), or [worker containers](containers/) | | Install software or plugins | [Custom-plugin journey](docs/sample-navigation.md#install-custom-plugins) and [host configuration scripts](host_configuration_scripts/) | | Connect studio systems | [Studio-integration journey](docs/sample-navigation.md#integrate-studio-tools-into-the-job-lifecycle) | -| Find a specific example | Browse the generated [sample catalog](SAMPLES.md) by goal, type, or journey | +| Find a specific example | Use the [repository map](#repository-map), then browse that area's folder README | | Create a sample with an AI agent | Use the task-specific guides in [skills](skills/) | -The human-edited [`sample_catalog.json`](sample_catalog.json) is also available for tools and automation. -Its schema is [`sample_catalog.schema.json`](sample_catalog.schema.json). - ## Quick start 1. Configure a Deadline Cloud farm and install the @@ -59,7 +56,8 @@ This is a curated selection of noteworthy additions and updates, not an exhausti * **2026-07-07 — [Houdini 21.0 recipe](conda_recipes/houdini-21.0/):** adds Plugin Sync support. * **2026-06-25 — [Blender turntable to Flow Production Tracking](job_bundles/blender_turntable_to_flow/):** demonstrates render-to-review publishing. -See the catalog's curated [recent highlights](SAMPLES.md#recent-highlights) for more. +Browse the repository map below, then inspect the filesystem directly for the exhaustive inventory. +Folder READMEs are curated introductions and may intentionally highlight only recommended samples. ## Choose a path for a larger journey @@ -87,8 +85,9 @@ to the strongest implementations in this repository. | [Utility scripts](utility_scripts/) | Automate supporting tasks such as uploading job attachments. | | [Agent skills](skills/) | Give coding agents repeatable instructions for authoring jobs, packages, and host configs. | -For every discoverable sample—including explicit support-directory exclusions—use the -[complete generated catalog](SAMPLES.md). +The filesystem in each area is the exhaustive inventory. Area READMEs, the task table, featured +examples, and [journey guide](docs/sample-navigation.md) are curated introductions that may intentionally +highlight only recommended samples. ## Documentation diff --git a/SAMPLES.md b/SAMPLES.md deleted file mode 100644 index 867275ba..00000000 --- a/SAMPLES.md +++ /dev/null @@ -1,729 +0,0 @@ -# AWS Deadline Cloud sample catalog - -> This file is generated by `python3 scripts/generate_samples.py`. Edit -> [`sample_catalog.json`](sample_catalog.json), not this file, then regenerate it. - -Find a sample by what you want to accomplish. Paths in the catalog are stable sample -identities; samples remain in their existing directories. - -## Featured samples - -* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ -* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ -* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ -* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ -* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ -* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ -* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ -* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. - -## Recent highlights - -This is a curated selection of noteworthy additions and updates, not an exhaustive chronology. - -* **2026-07-14 — [Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. -* **2026-07-10 — [Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. -* **2026-07-08 — [Pip Self-Contained Job](job_bundles/pip_self_contained_job)** — This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required. -* **2026-07-08 — [Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. -* **2026-07-08 — [Pip Package Job](job_bundles/pip_package_job)** — This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**. -* **2026-07-07 — [Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. -* **2026-06-25 — [MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. -* **2026-06-25 — [Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. -* **2026-06-23 — [Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. -* **2026-06-23 — [Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. -* **2026-06-19 — [Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. -* **2026-06-18 — [AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. - -## Browse by goal - -Each sample can appear under more than one goal. - -## Deploy a farm - -* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ -* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ -* **[AWS Deadline Cloud farm for running CUDA jobs](cloudformation/farm_templates/cuda_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs. _(platforms: platform-independent · tags: cloudformation, cuda)_ -* **[Scheduled Standby Workers for Deadline Cloud Fleets](cloudformation/farm_templates/fleet_standby_scheduling)** — This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule. _(platforms: platform-independent · tags: cloudformation)_ -* **[Service-managed fleet capacity manager](cloudformation/farm_templates/smf_capacity_manager)** — This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets. _(platforms: platform-independent · tags: cloudformation)_ -* **[Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS](cloudformation/farm_templates/smf_vpc_fsx)** — This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint. _(platforms: platform-independent · tags: cloudformation)_ - -## Manage fleet capacity - -* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ -* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ -* **[AWS Deadline Cloud farm for running CUDA jobs](cloudformation/farm_templates/cuda_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs. _(platforms: platform-independent · tags: cloudformation, cuda)_ -* **[Deploying Deadline Cloud fleet health check](cloudformation/farm_templates/cmf_templates)** — Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet. _(platforms: platform-independent · tags: cloudformation)_ -* **[Scheduled Standby Workers for Deadline Cloud Fleets](cloudformation/farm_templates/fleet_standby_scheduling)** — This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule. _(platforms: platform-independent · tags: cloudformation)_ -* **[Service-managed fleet capacity manager](cloudformation/farm_templates/smf_capacity_manager)** — This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets. _(platforms: platform-independent · tags: cloudformation)_ -* **[Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS](cloudformation/farm_templates/smf_vpc_fsx)** — This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint. _(platforms: platform-independent · tags: cloudformation)_ - -## Monitor events and budgets - -* **[Deadline Budget Threshold Reached Event Integration with Email and Slack](cloudformation/notification_templates/budget_events_notification)** — This CloudFormation template sets up an integration to receive notifications via email and Slack when a budget threshold is reached in the `aws.deadline` service. _(platforms: platform-independent · tags: cloudformation)_ -* **[Deploying Deadline Cloud fleet health check](cloudformation/farm_templates/cmf_templates)** — Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet. _(platforms: platform-independent · tags: cloudformation)_ -* **[Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. _(platforms: platform-independent · tags: cloudformation, slack)_ - -## Author and submit jobs - -* **[3ds Max V-Ray Denoiser Example](job_bundles/3dsmax_vray_denoiser)** — This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking. _(tags: 3dsmax, vray)_ -* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. -* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ -* **[Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. _(tags: carla)_ -* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ -* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ -* **[CLI script job](job_bundles/cli_job)** — Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI. -* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ -* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). -* **[FFmpeg Encode Video job bundle](job_bundles/ffmpeg_encode_video)** — This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg. _(tags: ffmpeg)_ -* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ -* **[FLUX.2 Klein LoRA Training and Image Generation](job_bundles/flux2_klein_lora)** — Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model. -* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ -* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. -* **[GROMACS Molecular Dynamics](job_bundles/gromacs_md)** — Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape. _(tags: gromacs)_ -* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ -* **[Job attachments input example](job_bundles/job_attachments_devguide)** — Demonstrate input path parameters and asset references for Deadline Cloud job attachments. -* **[Job bundle: Copy S3 prefix to job attachments](job_bundles/copy_s3_prefix_to_job_attachments)** — With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue. -* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. -* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. -* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. -* **[Job parameter GUI control showcase](job_bundles/gui_control_showcase)** — Preview every OpenJD job-parameter user interface control supported by the Deadline Cloud bundle submitter. -* **[KeyShot Standalone](job_bundles/keyshot_standalone)** — This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task. _(tags: keyshot)_ -* **[List Available Conda Packages Job Bundle](job_bundles/list_available_conda_packages)** — This job bundle lists all available conda packages in the deadline-cloud channel using `conda search -c deadline-cloud '*'` and prints the list into the logs. _(tags: conda)_ -* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ -* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ -* **[Minimal OpenJD job](job_bundles/simple_job)** — Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle. -* **[MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. -* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ -* **[Pip Package Job](job_bundles/pip_package_job)** — This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**. _(tags: pip)_ -* **[Pip Self-Contained Job](job_bundles/pip_self_contained_job)** — This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required. _(tags: pip)_ -* **[POV-Ray 3.7 AWS Deadline Cloud Job Template](job_bundles/povray-3.7)** — This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management. _(tags: povray)_ -* **[Pricing Financial Derivatives](job_bundles/monte_carlo_simulation)** — Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model. -* **[Redshift Rendering Job Template](job_bundles/redshift-2025)** — This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025. _(tags: redshift)_ -* **[Satellite Imagery Classification](job_bundles/satellite_classification)** — Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map. -* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. -* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ -* **[SSM Managed Node via Deadline Cloud Job](job_bundles/ssh_to_smf)** — Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job. -* **[SSM Managed Node via Deadline Cloud Job (Windows)](job_bundles/ssh_to_smf_windows)** — Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job. -* **[Task Chunking Job Bundle Samples](job_bundles/task_chunking)** — These samples demonstrate the Task Chunking extension for Open Job Description, which improves resource utilization by grouping multiple frames or tasks into chunks instead of processing them individually. -* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ -* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ -* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ -* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ -* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ -* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ -* **[Virtual Screening with AutoDock VINA](job_bundles/virtual_screening_vina)** — Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor). -* **[vLLM LLM Leaderboard (Matrix Evaluation)](job_bundles/vllm_lm_eval_leaderboard)** — Evaluate **multiple LLMs × multiple benchmarks** in a single Deadline Cloud job. -* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ -* **[VTK Visualization Job Template](job_bundles/vtk-latest)** — This OpenJD job template allows users to run VTK (Visualization Toolkit) Python scripts using AWS Deadline Cloud. - -## Render DCC content - -* **[3ds Max V-Ray Denoiser Example](job_bundles/3dsmax_vray_denoiser)** — This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking. _(tags: 3dsmax, vray)_ -* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. -* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ -* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ -* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ -* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ -* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ -* **[KeyShot Standalone](job_bundles/keyshot_standalone)** — This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task. _(tags: keyshot)_ -* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ -* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ -* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ -* **[POV-Ray 3.7 AWS Deadline Cloud Job Template](job_bundles/povray-3.7)** — This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management. _(tags: povray)_ -* **[Redshift Rendering Job Template](job_bundles/redshift-2025)** — This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025. _(tags: redshift)_ -* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ -* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ -* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ -* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ -* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ -* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ -* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ -* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ - -## Process media - -* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ -* **[FFmpeg Encode Video job bundle](job_bundles/ffmpeg_encode_video)** — This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg. _(tags: ffmpeg)_ -* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ -* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ -* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ - -## Run simulations - -* **[Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. _(tags: carla)_ -* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ -* **[MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. -* **[Pricing Financial Derivatives](job_bundles/monte_carlo_simulation)** — Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model. - -## Run machine learning workloads - -* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). -* **[FLUX.2 Klein LoRA Training and Image Generation](job_bundles/flux2_klein_lora)** — Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model. -* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. -* **[Satellite Imagery Classification](job_bundles/satellite_classification)** — Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map. -* **[vLLM LLM Leaderboard (Matrix Evaluation)](job_bundles/vllm_lm_eval_leaderboard)** — Evaluate **multiple LLMs × multiple benchmarks** in a single Deadline Cloud job. - -## Run scientific workloads - -* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). -* **[GROMACS Molecular Dynamics](job_bundles/gromacs_md)** — Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape. _(tags: gromacs)_ -* **[Virtual Screening with AutoDock VINA](job_bundles/virtual_screening_vina)** — Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor). - -## Move job assets - -* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ -* **[Job attachments input example](job_bundles/job_attachments_devguide)** — Demonstrate input path parameters and asset references for Deadline Cloud job attachments. -* **[Job bundle: Copy S3 prefix to job attachments](job_bundles/copy_s3_prefix_to_job_attachments)** — With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue. - -## Build software packages - -* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ -* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ -* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ -* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ -* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ -* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ -* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ -* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ -* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ -* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ -* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ -* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ -* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ -* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ -* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ -* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ -* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ -* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ -* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ -* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ -* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ -* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ -* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ -* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ -* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ -* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ -* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ -* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ -* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ -* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ - -## Provide software to workers - -* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ -* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ -* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ -* **[AWS Deadline Cloud Font Installation](host_configuration_scripts/linux_font_installation)** — This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke. _(platforms: linux)_ -* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ -* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ -* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ -* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ -* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ -* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ -* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ -* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ -* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ -* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ -* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ -* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ -* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ -* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ -* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ -* **[Docker and NVIDIA Container Toolkit](host_configuration_scripts/docker_nvidia_container_toolkit)** — Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads. _(platforms: linux · tags: docker)_ -* **[Enable Swap on Service Managed Fleet Workers](host_configuration_scripts/swap_for_smf)** — Create and enable a swap file on Linux service managed fleet workers. _(platforms: linux)_ -* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ -* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ -* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ -* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ -* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ -* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ -* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ -* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ -* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ -* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ -* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ -* **[Override Memory Overcommit on Service Managed Fleet Workers](host_configuration_scripts/overcommit_override_for_smf)** — Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers. _(platforms: linux)_ -* **[Passwordless Sudo for Job User](host_configuration_scripts/sudo_for_job_user)** — Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers. _(platforms: linux)_ -* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ -* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ -* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ -* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ -* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ -* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ -* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ -* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ -* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ -* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ -* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ -* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ -* **[Worker configuration examples](host_configuration_scripts/worker_configuration)** — These scripts demonstrate common configuration tasks that may be required for your workloads. _(platforms: windows)_ -* **[Worker reboot host configuration](host_configuration_scripts/worker_reboot)** — Worker reboots may be required for system configuration changes. _(platforms: linux, windows)_ - -## Install custom plugins - -* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ -* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ -* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ -* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ -* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ -* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ -* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ -* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ -* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ -* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ -* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ -* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ -* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ -* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ - -## Configure workers - -* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max Host Config](skills/3dsmax-host-config)** — This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: 3dsmax)_ -* **[AWS Deadline Cloud Font Installation](host_configuration_scripts/linux_font_installation)** — This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke. _(platforms: linux)_ -* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ -* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ -* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ -* **[Docker and NVIDIA Container Toolkit](host_configuration_scripts/docker_nvidia_container_toolkit)** — Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads. _(platforms: linux · tags: docker)_ -* **[Enable Swap on Service Managed Fleet Workers](host_configuration_scripts/swap_for_smf)** — Create and enable a swap file on Linux service managed fleet workers. _(platforms: linux)_ -* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ -* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ -* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ -* **[Override Memory Overcommit on Service Managed Fleet Workers](host_configuration_scripts/overcommit_override_for_smf)** — Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers. _(platforms: linux)_ -* **[Passwordless Sudo for Job User](host_configuration_scripts/sudo_for_job_user)** — Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers. _(platforms: linux)_ -* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ -* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ -* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ -* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ -* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ -* **[Worker configuration examples](host_configuration_scripts/worker_configuration)** — These scripts demonstrate common configuration tasks that may be required for your workloads. _(platforms: windows)_ -* **[Worker reboot host configuration](host_configuration_scripts/worker_reboot)** — Worker reboots may be required for system configuration changes. _(platforms: linux, windows)_ - -## Integrate a studio pipeline - -* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ -* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ -* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ -* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ -* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ -* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. -* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. -* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. -* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. - -## Customize job submission - -* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ - -## Troubleshoot workers - -* **[SSM Managed Node via Deadline Cloud Job](job_bundles/ssh_to_smf)** — Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job. -* **[SSM Managed Node via Deadline Cloud Job (Windows)](job_bundles/ssh_to_smf_windows)** — Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job. - -## Develop samples with an agent - -* **[3ds Max Host Config](skills/3dsmax-host-config)** — This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: 3dsmax)_ -* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ -* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ -* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ - -# Browse by sample type - -## Infrastructure as code - -* **[A starter AWS Deadline Cloud farm](cloudformation/farm_templates/starter_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: cloudformation)_ -* **[A starter AWS Deadline Cloud farm (Terraform)](terraform/farm_templates/starter_farm)** — This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. _(platforms: platform-independent · tags: terraform)_ -* **[AWS Deadline Cloud farm for running CUDA jobs](cloudformation/farm_templates/cuda_farm)** — This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs. _(platforms: platform-independent · tags: cloudformation, cuda)_ -* **[Deadline Budget Threshold Reached Event Integration with Email and Slack](cloudformation/notification_templates/budget_events_notification)** — This CloudFormation template sets up an integration to receive notifications via email and Slack when a budget threshold is reached in the `aws.deadline` service. _(platforms: platform-independent · tags: cloudformation)_ -* **[Deploying Deadline Cloud fleet health check](cloudformation/farm_templates/cmf_templates)** — Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet. _(platforms: platform-independent · tags: cloudformation)_ -* **[Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. _(platforms: platform-independent · tags: cloudformation, slack)_ -* **[Scheduled Standby Workers for Deadline Cloud Fleets](cloudformation/farm_templates/fleet_standby_scheduling)** — This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule. _(platforms: platform-independent · tags: cloudformation)_ -* **[Service-managed fleet capacity manager](cloudformation/farm_templates/smf_capacity_manager)** — This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets. _(platforms: platform-independent · tags: cloudformation)_ -* **[Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS](cloudformation/farm_templates/smf_vpc_fsx)** — This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint. _(platforms: platform-independent · tags: cloudformation)_ - -## OpenJD job bundles - -* **[3ds Max V-Ray Denoiser Example](job_bundles/3dsmax_vray_denoiser)** — This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking. _(tags: 3dsmax, vray)_ -* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. -* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ -* **[Autonomous Driving Simulation Using CARLA](job_bundles/autonomous_driving_carla)** — This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture. _(tags: carla)_ -* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ -* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ -* **[CLI script job](job_bundles/cli_job)** — Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI. -* **[ESMFold protein structure prediction](job_bundles/esmfold_predict)** — This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license). -* **[FFmpeg Encode Video job bundle](job_bundles/ffmpeg_encode_video)** — This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg. _(tags: ffmpeg)_ -* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ -* **[FLUX.2 Klein LoRA Training and Image Generation](job_bundles/flux2_klein_lora)** — Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model. -* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ -* **[Gaussian Splatting pipeline for AWS Deadline Cloud](job_bundles/gsplat_pipeline)** — This job bundle runs a 3D Gaussian Splatting pipeline. -* **[GROMACS Molecular Dynamics](job_bundles/gromacs_md)** — Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape. _(tags: gromacs)_ -* **[Infinigen scene generation job bundle](job_bundles/infinigen_scene_gen)** — Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers. _(tags: infinigen)_ -* **[Job attachments input example](job_bundles/job_attachments_devguide)** — Demonstrate input path parameters and asset references for Deadline Cloud job attachments. -* **[Job bundle: Copy S3 prefix to job attachments](job_bundles/copy_s3_prefix_to_job_attachments)** — With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue. -* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. -* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. -* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. -* **[Job parameter GUI control showcase](job_bundles/gui_control_showcase)** — Preview every OpenJD job-parameter user interface control supported by the Deadline Cloud bundle submitter. -* **[KeyShot Standalone](job_bundles/keyshot_standalone)** — This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task. _(tags: keyshot)_ -* **[List Available Conda Packages Job Bundle](job_bundles/list_available_conda_packages)** — This job bundle lists all available conda packages in the deadline-cloud channel using `conda search -c deadline-cloud '*'` and prints the list into the logs. _(tags: conda)_ -* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ -* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ -* **[Minimal OpenJD job](job_bundles/simple_job)** — Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle. -* **[MuJoCo Sim-to-Policy Pipeline (3-step)](job_bundles/mujoco_sim_to_policy)** — This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm. -* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ -* **[Pip Package Job](job_bundles/pip_package_job)** — This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**. _(tags: pip)_ -* **[Pip Self-Contained Job](job_bundles/pip_self_contained_job)** — This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required. _(tags: pip)_ -* **[POV-Ray 3.7 AWS Deadline Cloud Job Template](job_bundles/povray-3.7)** — This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management. _(tags: povray)_ -* **[Pricing Financial Derivatives](job_bundles/monte_carlo_simulation)** — Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model. -* **[Redshift Rendering Job Template](job_bundles/redshift-2025)** — This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025. _(tags: redshift)_ -* **[Satellite Imagery Classification](job_bundles/satellite_classification)** — Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map. -* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. -* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ -* **[SSM Managed Node via Deadline Cloud Job](job_bundles/ssh_to_smf)** — Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job. -* **[SSM Managed Node via Deadline Cloud Job (Windows)](job_bundles/ssh_to_smf_windows)** — Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job. -* **[Task Chunking Job Bundle Samples](job_bundles/task_chunking)** — These samples demonstrate the Task Chunking extension for Open Job Description, which improves resource utilization by grouping multiple frames or tasks into chunks instead of processing them individually. -* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ -* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ -* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ -* **[Turntable with Maya/Arnold job bundle](job_bundles/turntable_with_maya_arnold)** — This job takes an OBJ geometry file as input, and outputs a video turntable render. _(tags: arnold, maya)_ -* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ -* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ -* **[Virtual Screening with AutoDock VINA](job_bundles/virtual_screening_vina)** — Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor). -* **[vLLM LLM Leaderboard (Matrix Evaluation)](job_bundles/vllm_lm_eval_leaderboard)** — Evaluate **multiple LLMs × multiple benchmarks** in a single Deadline Cloud job. -* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ -* **[VTK Visualization Job Template](job_bundles/vtk-latest)** — This OpenJD job template allows users to run VTK (Visualization Toolkit) Python scripts using AWS Deadline Cloud. - -## Conda recipes and build jobs - -* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ -* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ -* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ -* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ -* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ -* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ -* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ -* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ -* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ -* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ -* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ -* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ -* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ -* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ -* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ -* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ -* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ -* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ -* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ -* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ -* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ -* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ -* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ -* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ -* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ -* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ -* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ - -## Worker containers - -* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ -* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ - -## Queue environments - -* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ -* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ -* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ -* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ -* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ -* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ -* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ -* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ - -## Host configuration scripts - -* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[AWS Deadline Cloud Font Installation](host_configuration_scripts/linux_font_installation)** — This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke. _(platforms: linux)_ -* **[Docker and NVIDIA Container Toolkit](host_configuration_scripts/docker_nvidia_container_toolkit)** — Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads. _(platforms: linux · tags: docker)_ -* **[Enable Swap on Service Managed Fleet Workers](host_configuration_scripts/swap_for_smf)** — Create and enable a swap file on Linux service managed fleet workers. _(platforms: linux)_ -* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ -* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ -* **[Override Memory Overcommit on Service Managed Fleet Workers](host_configuration_scripts/overcommit_override_for_smf)** — Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers. _(platforms: linux)_ -* **[Passwordless Sudo for Job User](host_configuration_scripts/sudo_for_job_user)** — Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers. _(platforms: linux)_ -* **[Worker configuration examples](host_configuration_scripts/worker_configuration)** — These scripts demonstrate common configuration tasks that may be required for your workloads. _(platforms: windows)_ -* **[Worker reboot host configuration](host_configuration_scripts/worker_reboot)** — Worker reboots may be required for system configuration changes. _(platforms: linux, windows)_ - -## Submission hooks - -* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ - -## Utility scripts - -* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ - -## Agent skills - -* **[3ds Max Host Config](skills/3dsmax-host-config)** — This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: 3dsmax)_ -* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ -* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ -* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ - -# Browse by journey - -See [`docs/sample-navigation.md`](docs/sample-navigation.md) for abbreviated decision guidance. - -## Run a new DCC or application - -* **[3ds Max 2024 host configuration](host_configuration_scripts/3dsmax/3dsmax-2024)** — Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 host configuration](host_configuration_scripts/3dsmax/3dsmax-2027)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs. _(platforms: windows · tags: 3dsmax)_ -* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[Adobe After Effects 25 conda build recipe](conda_recipes/aftereffects-25.1)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: aftereffects, conda)_ -* **[After Effects Render - one task](job_bundles/afterfx_render_one_task)** — This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task. -* **[AL2023 Deadline Cloud worker-equivalent image](containers/al2023-deadline)** — This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image. _(platforms: linux · tags: deadline)_ -* **[Arnold Standalone Render](job_bundles/arnold_standalone_render)** — This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya). _(tags: arnold)_ -* **[AutoDock Vina 1.2.5 Conda recipe](conda_recipes/autodock-vina-1.2.5)** — Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: autodock, conda)_ -* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ -* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ -* **[Blender 4.2 Conda recipe](conda_recipes/blender-4.2)** — Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.3 Conda recipe](conda_recipes/blender-4.3)** — Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.4 Conda recipe](conda_recipes/blender-4.4)** — Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 4.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-4.5)** — This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.0)** — This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender 5.1 Conda Recipe for AWS Deadline Cloud](conda_recipes/blender-5.1)** — This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud. _(platforms: linux, windows · tags: blender, conda)_ -* **[Blender container for AWS Deadline Cloud](containers/blender/blender-aswf-ci-base)** — This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud. _(platforms: linux · tags: blender)_ -* **[Blender frame render](job_bundles/blender_render)** — Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame. _(tags: blender)_ -* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ -* **[Cached service-managed fleet Conda environment](queue_environments/conda_queue_env_improved_caching.yaml)** — Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time. _(platforms: platform-independent · tags: conda)_ -* **[Cinema 2024 conda build recipe](conda_recipes/cinema4d-2024)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 2025 conda build recipe](conda_recipes/cinema4d-2025)** — The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets. _(platforms: windows · tags: cinema4d, conda)_ -* **[Cinema 4D OpenJD adaptor Conda recipe](conda_recipes/cinema4d-openjd)** — Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: cinema4d, conda, openjd)_ -* **[CLI script job](job_bundles/cli_job)** — Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI. -* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ -* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ -* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ -* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ -* **[Conda package build job](conda_recipes/conda_build_linux_package)** — Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel. _(tags: conda)_ -* **[Conda recipe builder agent skill](skills/conda-builder)** — Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe. _(platforms: platform-independent · tags: conda)_ -* **[Deadline Cloud CLI Conda recipe](conda_recipes/deadline)** — Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, deadline)_ -* **[Deadline Cloud job authoring agent skill](skills/deadline-cloud-job)** — Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud. _(platforms: platform-independent · tags: deadline)_ -* **[Default service-managed fleet Conda environment](queue_environments/conda_queue_env_from_console.yaml)** — Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding. _(platforms: platform-independent · tags: conda)_ -* **[Disconnect usage-based licensing environment](queue_environments/disconnect_ubl_queue_env.yaml)** — Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers. _(platforms: platform-independent)_ -* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ -* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ -* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ -* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ -* **[Houdini 20.5 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-20.5)** — This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Houdini 21.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-21.0)** — This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini)_ -* **[Infinigen conda package recipe](conda_recipes/infinigen-1.19.0)** — This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab. _(platforms: linux · tags: conda, infinigen)_ -* **[Job Development Progression](job_bundles/job_dev_progression)** — Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package. -* **[KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud](conda_recipes/keyshot-2025)** — This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud. _(platforms: windows · tags: conda, keyshot)_ -* **[Maya 2025 conda build recipe](conda_recipes/maya-2025)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya 2026 conda build recipe](conda_recipes/maya-2026)** — This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files. _(platforms: linux · tags: conda, maya)_ -* **[Maya Arnold Export and Render](job_bundles/maya_arnold_ass_export_render)** — This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer. _(tags: arnold, maya)_ -* **[Maya CLI Render](job_bundles/maya_cli_render)** — This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command. _(tags: maya)_ -* **[Maya OpenJD adaptor Conda recipe](conda_recipes/maya-openjd)** — Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya, openjd)_ -* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ -* **[Minimal OpenJD job](job_bundles/simple_job)** — Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle. -* **[NeRF Studio conda package recipe](conda_recipes/nerfstudio)** — This is a rattler-build recipe for NeRF Studio and some extras. _(platforms: linux · tags: conda)_ -* **[Nuke 16.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-16.0)** — This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke 17.0 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-17.0)** — This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Nuke Render Job Bundle](job_bundles/nuke_render)** — This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command. _(tags: nuke)_ -* **[OpenJD adaptor runtime Conda recipe](conda_recipes/openjd-adaptor-runtime)** — Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux, windows · tags: conda, openjd)_ -* **[Pip queue environment](queue_environments/pip_queue_env.yaml)** — Create a session-scoped Python virtual environment and install job-requested packages with pip. _(platforms: platform-independent · tags: pip)_ -* **[Portable cached inline Conda environment](queue_environments/conda_queue_env_inline_improved_caching.yaml)** — Create reusable Conda environments with inline actions suitable for customer-managed fleet workers. _(platforms: platform-independent · tags: conda)_ -* **[Portable inline Conda environment](queue_environments/conda_queue_env_inline.yaml)** — Create and activate a Conda environment using portable inline shell actions on customer-managed workers. _(platforms: platform-independent · tags: conda)_ -* **[Py-rattler queue environment](queue_environments/conda_queue_env_pyrattler.yaml)** — Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library. _(platforms: platform-independent · tags: conda)_ -* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Rez queue environment](queue_environments/rez_queue_env.yaml)** — Resolve job-requested Rez packages from a shared repository and activate them for the worker session. _(platforms: platform-independent · tags: rez)_ -* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ -* **[SideFX Houdini Husk USD Render](job_bundles/houdini_husk_usd_render)** — Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files. _(tags: houdini)_ -* **[Tile render with Maya and Arnold](job_bundles/tile_render_with_maya_arnold)** — Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame. _(tags: arnold, maya)_ -* **[Tile Render with Maya/Arnold and Ffmpeg](job_bundles/tile_render_maya_ffmpeg_for_blogpost)** — Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created. _(tags: ffmpeg, maya)_ -* **[Tile Render with Maya/V-Ray and OpenImageIO](job_bundles/tile_render_with_maya_vray)** — This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output. _(tags: maya, vray)_ -* **[Unreal Engine Conda Package Recipe](conda_recipes/unreal-engine)** — This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem. _(tags: conda)_ -* **[Unreal Engine OpenJD adaptor Conda recipe](conda_recipes/unreal-engine-openjd)** — Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers. _(platforms: windows · tags: conda, openjd)_ -* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ -* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ -* **[V-Ray Region Render Sample Job Bundle](job_bundles/tile_render_with_vray_linux)** — This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image. _(tags: vray)_ -* **[V-Ray sample job bundle](job_bundles/vray_render)** — Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output. _(tags: vray)_ -* **[VRED 2025 Conda Recipe](conda_recipes/vredcore-2025)** — Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ -* **[VRED 2026 Conda Recipe](conda_recipes/vredcore-2026)** — Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page. _(platforms: linux · tags: conda, vred)_ -* **[VRED Renderer Job Bundle](job_bundles/vred_render)** — Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly. _(tags: vred)_ - -## Install custom plugins - -* **[3ds Max 2025 and V-Ray host configuration](host_configuration_scripts/3dsmax/3dsmax-2025-and-vray)** — This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025 with Corona 13](host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13)** — Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2025, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2025, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027 and Corona 14](host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14. _(platforms: windows · tags: 3dsmax, plugin)_ -* **[3ds Max 2027 and V-Ray](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and AEC plugins](host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[3ds Max 2027, V-Ray, and tyFlow](host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow)** — This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow. _(platforms: windows · tags: 3dsmax, plugin, vray)_ -* **[Bifrost for Maya conda build recipe](conda_recipes/maya-bifrost-2026)** — This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026. _(platforms: linux · tags: conda, maya)_ -* **[Blender Plugin Build](conda_recipes/blender-plugin-bundle)** — This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files. _(platforms: linux · tags: blender, conda)_ -* **[Conda build recipe for a bundle of After Effects plugins](conda_recipes/aftereffects-plugin-bundle)** — This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder. _(platforms: windows · tags: aftereffects, conda)_ -* **[Conda build recipe for Arnold C4DtoA](conda_recipes/cinema4d-c4dtoa-2025)** — This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder. _(platforms: linux, windows · tags: cinema4d, conda)_ -* **[Conda build recipe for Cinema 4D V-Ray](conda_recipes/cinema4d-vray-2025)** — This package build recipe creates a conda package for the vray plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda, vray)_ -* **[Conda build recipe for INSYDIUM X-Particles](conda_recipes/cinema4d-insydium-2025)** — This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder. _(platforms: windows · tags: cinema4d, conda)_ -* **[FLIP Fluids addon conda build recipe for Blender](conda_recipes/blender-flipfluids)** — Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers. _(platforms: linux · tags: blender, conda)_ -* **[Host Config from Installer](skills/host-config-from-installer)** — This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers. _(platforms: platform-independent · tags: installer, plugin)_ -* **[Host Configuration for After Effects and Plugins](host_configuration_scripts/aftereffects/aftereffects_redgiant)** — This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers. _(platforms: windows · tags: aftereffects, plugin, redgiant)_ -* **[Host Configuration for Cinema 4D and Red Giant](host_configuration_scripts/cinema4d/cinema4d_redgiant)** — This guide covers setting up the required software installers for Red Giant host config script package build. _(platforms: windows · tags: cinema4d, plugin, redgiant)_ -* **[Maya to Arnold 2025 conda build recipe](conda_recipes/maya-mtoa-2025)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers. _(platforms: linux, windows · tags: conda, maya)_ -* **[Maya to Arnold 2026 conda build recipe](conda_recipes/maya-mtoa-2026)** — Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers. _(platforms: linux · tags: conda, maya)_ -* **[Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud](conda_recipes/nuke-denoise)** — This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, nuke)_ -* **[Redshift 2025.4.2 for Maya conda build recipe](conda_recipes/maya-redshift-2025)** — This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift 2026.2.1 for Maya conda build recipe](conda_recipes/maya-redshift-2026)** — This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026. _(platforms: linux · tags: conda, maya, redshift)_ -* **[Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2025)** — This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-redshift-2026)** — This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, redshift)_ -* **[Saber plug-in conda build recipe for After Effects](conda_recipes/aftereffects-saber)** — Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers. _(platforms: windows · tags: aftereffects, conda)_ -* **[V-Ray 6.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-2025)** — Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud](conda_recipes/houdini-vray-7)** — This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud. _(platforms: linux · tags: conda, houdini, vray)_ -* **[V-Ray 7.10.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-2026)** — Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2025 Conda Recipe](conda_recipes/maya-vray-7.2-2025)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray 7.20.02 for Maya 2026 Conda Recipe](conda_recipes/maya-vray-7.2-2026)** — Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers. _(platforms: linux · tags: conda, maya, vray)_ -* **[V-Ray conda package recipe](conda_recipes/vray)** — This is a rattler-build recipe for the VRay standalone renderer. _(platforms: linux · tags: conda, vray)_ - -## Integrate studio tools - -* **[AWS Deadline Cloud Job Attachments Uploader](utility_scripts/upload_to_job_attachments)** — Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage. _(platforms: platform-independent)_ -* **[AYON Launcher Conda Package](conda_recipes/ayon-launcher)** — This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers. _(platforms: linux, windows · tags: ayon, conda)_ -* **[Blender Turntable to Autodesk Flow Production Tracking](job_bundles/blender_turntable_to_flow)** — This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`. _(tags: blender, flow)_ -* **[Enforce Fixed License Limits with Submission Hooks](submission_hooks/license_limits)** — This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions — without requiring artists to configure anything manually. _(platforms: platform-independent)_ -* **[FFmpeg Movie from Job Output](job_bundles/ffmpeg_movie_from_job_output)** — This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file. _(tags: ffmpeg)_ -* **[FuzzyPixel Maya Custom Submitter](job_bundles/custom_submitters/fuzzypixel_maya)** — Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns. _(tags: maya)_ -* **[Job environment command injection](job_bundles/job_env_with_new_command)** — Add a command to every task in a session by using an OpenJD job environment. -* **[Job environment variables](job_bundles/job_env_vars)** — Set environment variables at the OpenJD job environment level for all steps in a session. -* **[Job event Slack notifications with Lambda and EventBridge](cloudformation/notification_templates/job_events_slack_lambda)** — This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge. _(platforms: platform-independent · tags: cloudformation, slack)_ -* **[Session daemon process environment](job_bundles/job_env_daemon_process)** — Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits. diff --git a/conda_recipes/keyshot-2025/README.md b/conda_recipes/keyshot-2025/README.md index fa64363b..02b2c42f 100644 --- a/conda_recipes/keyshot-2025/README.md +++ b/conda_recipes/keyshot-2025/README.md @@ -94,7 +94,7 @@ keyshot-2025/ ## Resources - **KeyShot Documentation**: https://www.keyshot.com/resources/ -- **KeyShot Scripting**: https://www.keyshot.com/scripting/ +- **KeyShot Scripting**: https://manual.keyshot.com/manual/scripting-2/ - **AWS Deadline Cloud Developer Guide**: https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/ - **Conda Build Documentation**: https://docs.conda.io/projects/conda-build/ - **KeyShot Network Rendering**: https://www.keyshot.com/network-rendering/ diff --git a/conda_recipes/nuke-16.0/README.md b/conda_recipes/nuke-16.0/README.md index c54663f9..12a7f5a0 100644 --- a/conda_recipes/nuke-16.0/README.md +++ b/conda_recipes/nuke-16.0/README.md @@ -98,7 +98,6 @@ nuke-16.0/ - **Nuke Documentation**: https://learn.foundry.com/nuke/ - **AWS Deadline Cloud Developer Guide**: https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/ - **Conda Build Documentation**: https://docs.conda.io/projects/conda-build/ -- **Plugin Development**: https://learn.foundry.com/nuke/developers/ --- diff --git a/conda_recipes/nuke-17.0/README.md b/conda_recipes/nuke-17.0/README.md index 11554a34..35e400d0 100644 --- a/conda_recipes/nuke-17.0/README.md +++ b/conda_recipes/nuke-17.0/README.md @@ -101,7 +101,6 @@ nuke-17.0/ - **Nuke Documentation**: https://learn.foundry.com/nuke/ - **AWS Deadline Cloud Developer Guide**: https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/ - **Conda Build Documentation**: https://docs.conda.io/projects/conda-build/ -- **Plugin Development**: https://learn.foundry.com/nuke/developers/ --- diff --git a/conda_recipes/nuke-denoise/README.md b/conda_recipes/nuke-denoise/README.md index 207aea0c..c33c7056 100644 --- a/conda_recipes/nuke-denoise/README.md +++ b/conda_recipes/nuke-denoise/README.md @@ -113,7 +113,7 @@ nuke-denoise/ - **OpenFX Standard**: http://openeffects.org/ - **AWS Deadline Cloud Developer Guide**: https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/ - **Conda Build Documentation**: https://docs.conda.io/projects/conda-build/ -- **Nuke Plugin Development**: https://learn.foundry.com/nuke/developers/ +- **Nuke Documentation**: https://learn.foundry.com/nuke/ --- diff --git a/docs/SAMPLE_README_TEMPLATE.md b/docs/SAMPLE_README_TEMPLATE.md index bd9ee0d1..161222da 100644 --- a/docs/SAMPLE_README_TEMPLATE.md +++ b/docs/SAMPLE_README_TEMPLATE.md @@ -6,7 +6,8 @@ Contributor contract for a nontrivial sample: * Keep the summary task-oriented and name the Deadline Cloud capability demonstrated. * Document prerequisites, permissions, software/licensing, cost-bearing resources, and cleanup. * Use repository-relative links for other samples and canonical AWS documentation for detailed design. -* Add or update the entry in sample_catalog.json and run python3 scripts/validate_repository.py. +* Run `python3 scripts/validate_repository.py`. +* Update curated navigation only if this sample should be a recommended starting point. --> One or two sentences explaining what the sample accomplishes and when a user should choose it. diff --git a/job_bundles/copy_s3_prefix_to_job_attachments/README.md b/job_bundles/copy_s3_prefix_to_job_attachments/README.md index 4dc38e15..51aa0f62 100644 --- a/job_bundles/copy_s3_prefix_to_job_attachments/README.md +++ b/job_bundles/copy_s3_prefix_to_job_attachments/README.md @@ -9,9 +9,9 @@ volume of data, or are submitting a job that depends on a lot of new data like a can be a longer wait for the job attachments upload. Because job attachments never re-uploads files that are already in job attachments, you can use alternative -upload tools like [AWS Snowball](https://aws.amazon.com/snowball/), [AWS DataSync](https://aws.amazon.com/datasync/), -or [Nimble Studio File Transfer](https://docs.aws.amazon.com/nimble-studio/latest/filetransfer-guide/what-is-file-transfer.html) -to first copy that data to S3, then use this job to copy it into the job attachments for your queue. +upload tools like [AWS Snowball](https://aws.amazon.com/snowball/) or +[AWS DataSync](https://aws.amazon.com/datasync/) to first copy that data to S3, then use this job to +copy it into the job attachments for your queue. ## How to submit this job diff --git a/job_bundles/job_dev_progression/README.md b/job_bundles/job_dev_progression/README.md index f4a3e4b7..4db9e683 100644 --- a/job_bundles/job_dev_progression/README.md +++ b/job_bundles/job_dev_progression/README.md @@ -50,12 +50,12 @@ like `ModuleNotFoundError: No module named 'polars'`. $ openjd run stage_1_self_contained_template/template.yaml ``` -If you run the jobs with the [conda_queue_env_console_equivalent](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml) +If you run the jobs with the [console-equivalent Conda queue environment](../../queue_environments/conda_queue_env_from_console.yaml) sample, it will create a conda virtual environment within the job's session directory. This creates a fresh conda environment every time you run the job. ```bash -$ openjd run --environment ../../queue_environments/conda_queue_env_console_equivalent.yaml stage_1_self_contained_template/template.yaml +$ openjd run --environment ../../queue_environments/conda_queue_env_from_console.yaml stage_1_self_contained_template/template.yaml ``` If you run the jobs with the [conda_queue_env_improved_caching](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_improved_caching.yaml) diff --git a/sample_catalog.json b/sample_catalog.json deleted file mode 100644 index 84c3de97..00000000 --- a/sample_catalog.json +++ /dev/null @@ -1,2935 +0,0 @@ -{ - "schema_version": 1, - "taxonomy": { - "categories": [ - { - "id": "infrastructure", - "label": "Infrastructure as code", - "description": "Deploy or operate farms, queues, fleets, storage, and event integrations." - }, - { - "id": "job-bundle", - "label": "OpenJD job bundles", - "description": "Submit rendering, simulation, media, machine learning, and utility workloads." - }, - { - "id": "software-package", - "label": "Conda recipes and build jobs", - "description": "Build applications, adaptors, renderers, and plugins for worker delivery." - }, - { - "id": "container", - "label": "Worker containers", - "description": "Build container images for local compatibility testing or containerized jobs." - }, - { - "id": "queue-environment", - "label": "Queue environments", - "description": "Prepare session-scoped software and licensing for every job on a queue." - }, - { - "id": "host-configuration", - "label": "Host configuration scripts", - "description": "Configure service-managed fleet workers with elevated privileges at startup." - }, - { - "id": "submission-hook", - "label": "Submission hooks", - "description": "Apply organization policy or enrich job templates before submission." - }, - { - "id": "utility", - "label": "Utility scripts", - "description": "Automate supporting Deadline Cloud asset and workflow operations." - }, - { - "id": "agent-skill", - "label": "Agent skills", - "description": "Guide coding agents through repeatable sample authoring and software setup tasks." - } - ], - "tasks": [ - { - "id": "deploy-farm", - "label": "Deploy a farm", - "description": "Create Deadline Cloud farms and their supporting AWS infrastructure." - }, - { - "id": "manage-fleet", - "label": "Manage fleet capacity", - "description": "Configure worker connectivity, capacity, scheduling, and health." - }, - { - "id": "monitor-events", - "label": "Monitor events and budgets", - "description": "Route Deadline Cloud lifecycle or budget events to operational destinations." - }, - { - "id": "submit-job", - "label": "Author and submit jobs", - "description": "Create or run OpenJD job bundles through Deadline Cloud." - }, - { - "id": "render-content", - "label": "Render DCC content", - "description": "Render scenes and images with digital content creation applications." - }, - { - "id": "process-media", - "label": "Process media", - "description": "Encode, assemble, or publish image sequences and review media." - }, - { - "id": "run-simulation", - "label": "Run simulations", - "description": "Distribute physical, robotics, driving, procedural, or financial simulations." - }, - { - "id": "run-ml-workload", - "label": "Run machine learning workloads", - "description": "Distribute model training, inference, evaluation, or classification." - }, - { - "id": "run-scientific-workload", - "label": "Run scientific workloads", - "description": "Distribute computational biology, chemistry, or molecular workloads." - }, - { - "id": "manage-assets", - "label": "Move job assets", - "description": "Upload, discover, stage, or retrieve job inputs and outputs." - }, - { - "id": "build-software", - "label": "Build software packages", - "description": "Build Conda packages or container images for repeatable delivery." - }, - { - "id": "provide-software", - "label": "Provide software to workers", - "description": "Make applications, runtimes, and dependencies available to jobs." - }, - { - "id": "install-plugins", - "label": "Install custom plugins", - "description": "Package or install DCC renderers, extensions, and plugins." - }, - { - "id": "configure-workers", - "label": "Configure workers", - "description": "Prepare operating systems, software environments, and worker settings." - }, - { - "id": "integrate-pipeline", - "label": "Integrate a studio pipeline", - "description": "Connect submission, execution, publishing, notifications, and studio services." - }, - { - "id": "customize-submission", - "label": "Customize job submission", - "description": "Inspect or modify job bundles before they reach Deadline Cloud." - }, - { - "id": "troubleshoot-workers", - "label": "Troubleshoot workers", - "description": "Create controlled interactive access for diagnosing worker behavior." - }, - { - "id": "develop-samples", - "label": "Develop samples with an agent", - "description": "Use repository agent skills to create and test consistent samples." - } - ], - "journeys": [ - { - "id": "new-application", - "label": "Run a new DCC or application", - "description": "Choose how to package software, model work, and submit an application job." - }, - { - "id": "custom-plugins", - "label": "Install custom plugins", - "description": "Choose plugin sync, Conda packaging, or privileged host installation." - }, - { - "id": "studio-integration", - "label": "Integrate studio tools", - "description": "Connect tools at submission, session, step, task, and event boundaries." - } - ] - }, - "inventory": { - "roots": [ - { - "path": "cloudformation/farm_templates", - "kind": "directory" - }, - { - "path": "cloudformation/notification_templates", - "kind": "directory" - }, - { - "path": "terraform/farm_templates", - "kind": "directory" - }, - { - "path": "job_bundles", - "kind": "directory" - }, - { - "path": "job_bundles/custom_submitters", - "kind": "directory" - }, - { - "path": "conda_recipes", - "kind": "directory" - }, - { - "path": "containers", - "kind": "directory" - }, - { - "path": "containers/blender", - "kind": "directory" - }, - { - "path": "queue_environments", - "kind": "file", - "pattern": "*.yaml" - }, - { - "path": "host_configuration_scripts", - "kind": "directory" - }, - { - "path": "host_configuration_scripts/3dsmax", - "kind": "directory" - }, - { - "path": "host_configuration_scripts/aftereffects", - "kind": "directory" - }, - { - "path": "host_configuration_scripts/cinema4d", - "kind": "directory" - }, - { - "path": "submission_hooks", - "kind": "directory" - }, - { - "path": "utility_scripts", - "kind": "directory" - }, - { - "path": "skills", - "kind": "directory" - } - ], - "exclusions": [ - { - "path": "job_bundles/custom_submitters", - "reason": "Grouping directory; its concrete submitter sample is discovered from the nested root." - }, - { - "path": "job_bundles/job_attachments_devguide_output", - "reason": "Support-only output companion consumed by the job attachments developer-guide sample." - }, - { - "path": "conda_recipes/archive_files", - "reason": "Support-only staging area for vendor archives used while building package recipes." - }, - { - "path": "containers/blender", - "reason": "Grouping directory; its concrete Blender container sample is discovered from the nested root." - }, - { - "path": "host_configuration_scripts/3dsmax", - "reason": "Grouping directory; concrete 3ds Max host configuration samples are cataloged below it." - }, - { - "path": "host_configuration_scripts/aftereffects", - "reason": "Grouping directory; concrete After Effects host configuration samples are cataloged below it." - }, - { - "path": "host_configuration_scripts/cinema4d", - "reason": "Grouping directory; concrete Cinema 4D host configuration samples are cataloged below it." - } - ] - }, - "samples": [ - { - "path": "cloudformation/farm_templates/cmf_templates", - "title": "Deploying Deadline Cloud fleet health check", - "description": "Deploy Lambda and EventBridge resources that continuously monitor and report the health of a customer-managed fleet.", - "category": "infrastructure", - "tasks": [ - "manage-fleet", - "monitor-events" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation" - ], - "status": "active" - }, - { - "path": "cloudformation/farm_templates/cuda_farm", - "title": "AWS Deadline Cloud farm for running CUDA jobs", - "description": "This CloudFormation template deploys an AWS Deadline Cloud farm that you can use to run CUDA jobs.", - "category": "infrastructure", - "tasks": [ - "deploy-farm", - "manage-fleet" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation", - "cuda" - ], - "status": "active" - }, - { - "path": "cloudformation/farm_templates/fleet_standby_scheduling", - "title": "Scheduled Standby Workers for Deadline Cloud Fleets", - "description": "This CloudFormation template schedules standby worker count changes on a Deadline Cloud fleet based on a time schedule.", - "category": "infrastructure", - "tasks": [ - "deploy-farm", - "manage-fleet" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation" - ], - "status": "active" - }, - { - "path": "cloudformation/farm_templates/smf_capacity_manager", - "title": "Service-managed fleet capacity manager", - "description": "This CloudFormation template implements automated capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets.", - "category": "infrastructure", - "tasks": [ - "deploy-farm", - "manage-fleet" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation" - ], - "status": "active" - }, - { - "path": "cloudformation/farm_templates/smf_vpc_fsx", - "title": "Service-Managed Fleet with VPC Resource Endpoint and FSx for OpenZFS", - "description": "This CloudFormation template demonstrates how to set up AWS Deadline Cloud with a service-managed fleet that connects to FSx for OpenZFS storage through a VPC resource endpoint.", - "category": "infrastructure", - "tasks": [ - "deploy-farm", - "manage-fleet" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation" - ], - "status": "active" - }, - { - "path": "cloudformation/farm_templates/starter_farm", - "title": "A starter AWS Deadline Cloud farm", - "description": "This CloudFormation template deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways.", - "category": "infrastructure", - "tasks": [ - "deploy-farm", - "manage-fleet" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation" - ], - "featured": true, - "status": "active" - }, - { - "path": "cloudformation/notification_templates/budget_events_notification", - "title": "Deadline Budget Threshold Reached Event Integration with Email and Slack", - "description": "This CloudFormation template sets up an integration to receive notifications via email and Slack when a budget threshold is reached in the `aws.deadline` service.", - "category": "infrastructure", - "tasks": [ - "monitor-events" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation" - ], - "status": "active" - }, - { - "path": "cloudformation/notification_templates/job_events_slack_lambda", - "title": "Job event Slack notifications with Lambda and EventBridge", - "description": "This CloudFormation template demonstrates the general mechanism for connecting an AWS Lambda function to AWS Deadline Cloud job events through Amazon EventBridge.", - "category": "infrastructure", - "tasks": [ - "monitor-events" - ], - "journeys": [ - "studio-integration" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "cloudformation", - "slack" - ], - "updated": "2026-07-10", - "status": "active" - }, - { - "path": "conda_recipes/aftereffects-25.1", - "title": "Adobe After Effects 25 conda build recipe", - "description": "The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "windows" - ], - "tags": [ - "aftereffects", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/aftereffects-plugin-bundle", - "title": "Conda build recipe for a bundle of After Effects plugins", - "description": "This package build recipe creates a conda package that bundles together all the After Effects plugins you provide in an input folder.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "aftereffects", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/aftereffects-saber", - "title": "Saber plug-in conda build recipe for After Effects", - "description": "Build the Saber After Effects plugin as a Windows Conda package that activates alongside After Effects on workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "aftereffects", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/autodock-vina-1.2.5", - "title": "AutoDock Vina 1.2.5 Conda recipe", - "description": "Build and publish AutoDock Vina 1.2.5 as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "autodock", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/ayon-launcher", - "title": "AYON Launcher Conda Package", - "description": "This recipe packages the AYON Launcher as a conda package for AWS Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application", - "studio-integration" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "ayon", - "conda" - ], - "updated": "2026-06-18", - "status": "active" - }, - { - "path": "conda_recipes/blender-4.2", - "title": "Blender 4.2 Conda recipe", - "description": "Build and publish Blender 4.2 as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "blender", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/blender-4.3", - "title": "Blender 4.3 Conda recipe", - "description": "Build and publish Blender 4.3 as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "blender", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/blender-4.4", - "title": "Blender 4.4 Conda recipe", - "description": "Build and publish Blender 4.4 as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "blender", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/blender-4.5", - "title": "Blender 4.5 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Blender 4.5, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "blender", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/blender-5.0", - "title": "Blender 5.0 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Blender 5.0, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "blender", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/blender-5.1", - "title": "Blender 5.1 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a rattler-build recipe for packaging Blender 5.1 for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "blender", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/blender-flipfluids", - "title": "FLIP Fluids addon conda build recipe for Blender", - "description": "Build and publish FLIP Fluids addon conda build recipe for Blender as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "blender", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/blender-plugin-bundle", - "title": "Blender Plugin Build", - "description": "This conda recipe packages multiple Blender addons from a zip archive containing individual addon zip files.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "blender", - "conda" - ], - "featured": true, - "status": "active" - }, - { - "path": "conda_recipes/cinema4d-2024", - "title": "Cinema 2024 conda build recipe", - "description": "The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "windows" - ], - "tags": [ - "cinema4d", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/cinema4d-2025", - "title": "Cinema 2025 conda build recipe", - "description": "The Windows installer requires Administrator permissions that are not available in most conda package build environments, such as on a Deadline Cloud service-managed fleets.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "windows" - ], - "tags": [ - "cinema4d", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/cinema4d-c4dtoa-2025", - "title": "Conda build recipe for Arnold C4DtoA", - "description": "This package build recipe creates a conda package for the C4DtoA plugin you provide in an input folder.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "cinema4d", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/cinema4d-insydium-2025", - "title": "Conda build recipe for INSYDIUM X-Particles", - "description": "This package build recipe creates a conda package for the INSYDIUM plugin you provide in an input folder.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "cinema4d", - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/cinema4d-openjd", - "title": "Cinema 4D OpenJD adaptor Conda recipe", - "description": "Build and publish Cinema 4D OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "cinema4d", - "conda", - "openjd" - ], - "status": "active" - }, - { - "path": "conda_recipes/cinema4d-vray-2025", - "title": "Conda build recipe for Cinema 4D V-Ray", - "description": "This package build recipe creates a conda package for the vray plugin you provide in an input folder.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "cinema4d", - "conda", - "vray" - ], - "status": "active" - }, - { - "path": "conda_recipes/conda_build_linux_package", - "title": "Conda package build job", - "description": "Build a supplied Conda recipe on Deadline Cloud and publish the package to an Amazon S3 channel.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/deadline", - "title": "Deadline Cloud CLI Conda recipe", - "description": "Build and publish Deadline Cloud CLI as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "conda", - "deadline" - ], - "status": "active" - }, - { - "path": "conda_recipes/houdini-20.5", - "title": "Houdini 20.5 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Houdini 20.5.654, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "houdini" - ], - "status": "active" - }, - { - "path": "conda_recipes/houdini-21.0", - "title": "Houdini 21.0 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Houdini 21.0.596, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "houdini" - ], - "updated": "2026-07-07", - "status": "active" - }, - { - "path": "conda_recipes/houdini-redshift-2025", - "title": "Redshift for Houdini 2025 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Redshift for Houdini 2025.6.0, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "houdini", - "redshift" - ], - "status": "active" - }, - { - "path": "conda_recipes/houdini-redshift-2026", - "title": "Redshift for Houdini 2026 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Redshift for Houdini 2026.1.1, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "houdini", - "redshift" - ], - "status": "active" - }, - { - "path": "conda_recipes/houdini-vray-7", - "title": "V-Ray 7 for Houdini Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for V-Ray 7.10.01 (stable nightly build) for Houdini, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "houdini", - "vray" - ], - "status": "active" - }, - { - "path": "conda_recipes/infinigen-1.19.0", - "title": "Infinigen conda package recipe", - "description": "This is a rattler-build recipe for Infinigen, a procedural 3D scene generator from Princeton Vision & Learning Lab.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "infinigen" - ], - "updated": "2026-06-23", - "status": "active" - }, - { - "path": "conda_recipes/keyshot-2025", - "title": "KeyShot 2025.2 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for KeyShot 2025.2, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "windows" - ], - "tags": [ - "conda", - "keyshot" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-2025", - "title": "Maya 2025 conda build recipe", - "description": "This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "conda", - "maya" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-2026", - "title": "Maya 2026 conda build recipe", - "description": "This Maya conda build recipe configures the `MAYA_MODULE_PATH` environment variable to include several paths to search for plugin `.mod` files.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-bifrost-2026", - "title": "Bifrost for Maya conda build recipe", - "description": "This package provides Autodesk Bifrost 2.14.1.0 support for Maya 2026.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-mtoa-2025", - "title": "Maya to Arnold 2025 conda build recipe", - "description": "Build a Conda package that integrates Arnold (MtoA) with Maya 2025 for repeatable rendering on Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "conda", - "maya" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-mtoa-2026", - "title": "Maya to Arnold 2026 conda build recipe", - "description": "Build a Conda package that integrates Arnold (MtoA) with Maya 2026 for repeatable rendering on Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-openjd", - "title": "Maya OpenJD adaptor Conda recipe", - "description": "Build and publish Maya OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "conda", - "maya", - "openjd" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-redshift-2025", - "title": "Redshift 2025.4.2 for Maya conda build recipe", - "description": "This package provides Redshift 2025.4.2 support for Maya versions 2025, and 2026.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya", - "redshift" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-redshift-2026", - "title": "Redshift 2026.2.1 for Maya conda build recipe", - "description": "This package provides Redshift 2026.2.1 support for Maya versions 2025, and 2026.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya", - "redshift" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-vray-2025", - "title": "V-Ray 6.20.02 for Maya 2025 Conda Recipe", - "description": "Build a Linux conda package for V-Ray 6.20.02 and Maya 2025 for software delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya", - "vray" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-vray-2026", - "title": "V-Ray 7.10.02 for Maya 2026 Conda Recipe", - "description": "Build a Linux conda package for V-Ray 7.10.02 and Maya 2026 for software delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya", - "vray" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-vray-7.2-2025", - "title": "V-Ray 7.20.02 for Maya 2025 Conda Recipe", - "description": "Build a Linux conda package for V-Ray 7.20.02 and Maya 2025 for software delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya", - "vray" - ], - "status": "active" - }, - { - "path": "conda_recipes/maya-vray-7.2-2026", - "title": "V-Ray 7.20.02 for Maya 2026 Conda Recipe", - "description": "Build a Linux conda package for V-Ray 7.20.02 and Maya 2026 for software delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "maya", - "vray" - ], - "status": "active" - }, - { - "path": "conda_recipes/nerfstudio", - "title": "NeRF Studio conda package recipe", - "description": "This is a rattler-build recipe for NeRF Studio and some extras.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/nuke-16.0", - "title": "Nuke 16.0 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Nuke 16.0.1, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "nuke" - ], - "status": "active" - }, - { - "path": "conda_recipes/nuke-17.0", - "title": "Nuke 17.0 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Nuke 17.0.1, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "nuke" - ], - "status": "active" - }, - { - "path": "conda_recipes/nuke-denoise", - "title": "Nuke DENoise 3.6.9 Conda Recipe for AWS Deadline Cloud", - "description": "This directory contains a conda build recipe for Nuke DENoise 3.6.9, specifically configured for use with AWS Deadline Cloud.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "nuke" - ], - "status": "active" - }, - { - "path": "conda_recipes/openjd-adaptor-runtime", - "title": "OpenJD adaptor runtime Conda recipe", - "description": "Build and publish OpenJD adaptor runtime as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux", - "windows" - ], - "tags": [ - "conda", - "openjd" - ], - "status": "active" - }, - { - "path": "conda_recipes/unreal-engine", - "title": "Unreal Engine Conda Package Recipe", - "description": "This recipe packages Unreal Engine for use in the AWS Deadline Cloud ecosystem.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "conda_recipes/unreal-engine-openjd", - "title": "Unreal Engine OpenJD adaptor Conda recipe", - "description": "Build and publish Unreal Engine OpenJD adaptor as a Conda package for delivery to Deadline Cloud workers.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "windows" - ], - "tags": [ - "conda", - "openjd" - ], - "status": "active" - }, - { - "path": "conda_recipes/vray", - "title": "V-Ray conda package recipe", - "description": "This is a rattler-build recipe for the VRay standalone renderer.", - "category": "software-package", - "tasks": [ - "build-software", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "vray" - ], - "status": "active" - }, - { - "path": "conda_recipes/vredcore-2025", - "title": "VRED 2025 Conda Recipe", - "description": "Download the VRED Core 2025 installation file for Linux (VREDCOre-2025.sh) from Autodesk Account page.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "vred" - ], - "status": "active" - }, - { - "path": "conda_recipes/vredcore-2026", - "title": "VRED 2026 Conda Recipe", - "description": "Download the VRED Core 2026 installation file for Linux (VREDCOre-2026.sh) from Autodesk Account page.", - "category": "software-package", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "conda", - "vred" - ], - "status": "active" - }, - { - "path": "containers/al2023-deadline", - "title": "AL2023 Deadline Cloud worker-equivalent image", - "description": "This Dockerfile replicates the package set of an April 2026 snapshot of the AWS Deadline Cloud service-managed fleet (SMF) worker AMI on top of the base Amazon Linux 2023 image.", - "category": "container", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "deadline" - ], - "status": "active" - }, - { - "path": "containers/blender/blender-aswf-ci-base", - "title": "Blender container for AWS Deadline Cloud", - "description": "This example builds a Docker image that packages Blender with the deadline-cloud-for-blender adaptor and GPU support for rendering on AWS Deadline Cloud.", - "category": "container", - "tasks": [ - "build-software", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "linux" - ], - "tags": [ - "blender" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2024", - "title": "3ds Max 2024 host configuration", - "description": "Install 3ds Max 2024 on Windows service-managed fleet workers with an elevated host configuration script.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2025-and-corona-13", - "title": "3ds Max 2025 with Corona 13", - "description": "Install 3ds Max 2025 and Corona 13 on Windows service-managed fleet workers during host configuration.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2025-and-vray", - "title": "3ds Max 2025 and V-Ray host configuration", - "description": "This sample host configuration scripts configures your Service Managed Fleet with 3ds Max 2025 and V-Ray to render your 3ds Max 2025 jobs with V-Ray.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin", - "vray" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-aec-plugins", - "title": "3ds Max 2025, V-Ray, and AEC plugins", - "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, Forest Pack, RailClone, and additional AEC plugins to render your 3ds Max 2025 jobs with V-Ray and architectural visualization plugins.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin", - "vray" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2025-vray-and-tyflow", - "title": "3ds Max 2025, V-Ray, and tyFlow", - "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2025, V-Ray, and tyFlow to render your 3ds Max 2025 jobs with V-Ray and tyFlow plugins.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin", - "vray" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2027", - "title": "3ds Max 2027 host configuration", - "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 to render your 3ds Max 2027 jobs.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2027-and-corona-14", - "title": "3ds Max 2027 and Corona 14", - "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and Corona 14.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2027-and-vray", - "title": "3ds Max 2027 and V-Ray", - "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027 and V-Ray.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin", - "vray" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2027-and-vray-and-tyflow", - "title": "3ds Max 2027, V-Ray, and tyFlow", - "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, and tyFlow.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin", - "vray" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/3dsmax/3dsmax-2027-vray-and-aec-plugins", - "title": "3ds Max 2027, V-Ray, and AEC plugins", - "description": "This sample host configuration script configures your Service Managed Fleet with 3ds Max 2027, V-Ray, Forest Pack, RailClone, FloorGenerator, and MultiTexture.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "3dsmax", - "plugin", - "vray" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/aftereffects/aftereffects_redgiant", - "title": "Host Configuration for After Effects and Plugins", - "description": "This guide covers setting up host configuration scripts for installing Adobe After Effects and optional plugins on AWS Deadline Cloud workers.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "aftereffects", - "plugin", - "redgiant" - ], - "updated": "2026-07-14", - "featured": true, - "status": "active" - }, - { - "path": "host_configuration_scripts/cinema4d/cinema4d_redgiant", - "title": "Host Configuration for Cinema 4D and Red Giant", - "description": "This guide covers setting up the required software installers for Red Giant host config script package build.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "windows" - ], - "tags": [ - "cinema4d", - "plugin", - "redgiant" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/docker_nvidia_container_toolkit", - "title": "Docker and NVIDIA Container Toolkit", - "description": "Install Docker and the NVIDIA Container Toolkit on Linux service managed fleet workers, enabling GPU-accelerated container workloads.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "platforms": [ - "linux" - ], - "tags": [ - "docker" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/linux_font_installation", - "title": "AWS Deadline Cloud Font Installation", - "description": "This script installs fonts from an S3 bucket on AWS Deadline Cloud Linux service managed fleet instances, making them available to applications like Nuke.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "platforms": [ - "linux" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/overcommit_override_for_smf", - "title": "Override Memory Overcommit on Service Managed Fleet Workers", - "description": "Override the default `vm.overcommit_memory=2` (strict accounting) on Linux service managed fleet workers.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "platforms": [ - "linux" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/sudo_for_job_user", - "title": "Passwordless Sudo for Job User", - "description": "Grant the Deadline Cloud `job-user` passwordless sudo access on Linux service managed fleet workers.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "platforms": [ - "linux" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/swap_for_smf", - "title": "Enable Swap on Service Managed Fleet Workers", - "description": "Create and enable a swap file on Linux service managed fleet workers.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "platforms": [ - "linux" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/worker_configuration", - "title": "Worker configuration examples", - "description": "These scripts demonstrate common configuration tasks that may be required for your workloads.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "platforms": [ - "windows" - ], - "status": "active" - }, - { - "path": "host_configuration_scripts/worker_reboot", - "title": "Worker reboot host configuration", - "description": "Worker reboots may be required for system configuration changes.", - "category": "host-configuration", - "tasks": [ - "configure-workers", - "provide-software" - ], - "platforms": [ - "linux", - "windows" - ], - "status": "active" - }, - { - "path": "job_bundles/3dsmax_vray_denoiser", - "title": "3ds Max V-Ray Denoiser Example", - "description": "This job bundle demonstrates rendering 3ds Max scenes with V-Ray, including automatic VRIMG to EXR conversion with denoising preservation and intelligent frame chunking.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "tags": [ - "3dsmax", - "vray" - ], - "status": "active" - }, - { - "path": "job_bundles/afterfx_render_one_task", - "title": "After Effects Render - one task", - "description": "This is an After Effects job bundle that allows the user to submit a job that uses aerender to render a frame range as a single task.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "status": "active" - }, - { - "path": "job_bundles/arnold_standalone_render", - "title": "Arnold Standalone Render", - "description": "This job bundle renders Arnold `.ass` (Arnold Scene Source) files using the Arnold `kick` command-line renderer that ships with MtoA (Arnold for Maya).", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "arnold" - ], - "status": "active" - }, - { - "path": "job_bundles/autonomous_driving_carla", - "title": "Autonomous Driving Simulation Using CARLA", - "description": "This job bundle runs a CARLA autonomous driving simulation parameter sweep on AWS Deadline Cloud with configurable multi-sensor capture.", - "category": "job-bundle", - "tasks": [ - "run-simulation", - "submit-job" - ], - "tags": [ - "carla" - ], - "updated": "2026-06-19", - "status": "active" - }, - { - "path": "job_bundles/blender_render", - "title": "Blender frame render", - "description": "Render a Blender scene over a configurable frame range with one parallel Deadline Cloud task per frame.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "blender" - ], - "status": "active" - }, - { - "path": "job_bundles/blender_turntable_to_flow", - "title": "Blender Turntable to Autodesk Flow Production Tracking", - "description": "This job bundle renders an animated turntable in Blender, encodes it into a review-ready movie, extracts a poster-frame thumbnail, and publishes the result to Autodesk Flow Production Tracking (formerly ShotGrid) as a new `Version` on an `Asset`'s review `Task`.", - "category": "job-bundle", - "tasks": [ - "integrate-pipeline", - "process-media", - "render-content", - "submit-job" - ], - "journeys": [ - "studio-integration" - ], - "tags": [ - "blender", - "flow" - ], - "updated": "2026-06-25", - "featured": true, - "status": "active" - }, - { - "path": "job_bundles/cli_job", - "title": "CLI script job", - "description": "Run a user-provided multi-line shell script against a selected data directory from the Deadline Cloud CLI.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "journeys": [ - "new-application" - ], - "status": "active" - }, - { - "path": "job_bundles/copy_s3_prefix_to_job_attachments", - "title": "Job bundle: Copy S3 prefix to job attachments", - "description": "With AWS Deadline Cloud job attachments, you can attach files and directories to the jobs you submit, and that data gets uploaded to the job attachments S3 bucket that is configured on your queue.", - "category": "job-bundle", - "tasks": [ - "manage-assets", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/custom_submitters/fuzzypixel_maya", - "title": "FuzzyPixel Maya Custom Submitter", - "description": "Integrate a custom Deadline Cloud job submitter into Maya, including scene settings, asset collection, and submission UI patterns.", - "category": "job-bundle", - "tasks": [ - "integrate-pipeline", - "render-content", - "submit-job" - ], - "journeys": [ - "studio-integration" - ], - "tags": [ - "maya" - ], - "status": "active" - }, - { - "path": "job_bundles/esmfold_predict", - "title": "ESMFold protein structure prediction", - "description": "This job bundle runs protein structure prediction with ESMFold (Meta's `facebook/esmfold_v1`, MIT license).", - "category": "job-bundle", - "tasks": [ - "run-ml-workload", - "run-scientific-workload", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/ffmpeg_encode_video", - "title": "FFmpeg Encode Video job bundle", - "description": "This job takes a directory of sequentially numbered image files and encodes them into an MP4 video using FFmpeg.", - "category": "job-bundle", - "tasks": [ - "process-media", - "submit-job" - ], - "tags": [ - "ffmpeg" - ], - "status": "active" - }, - { - "path": "job_bundles/ffmpeg_movie_from_job_output", - "title": "FFmpeg Movie from Job Output", - "description": "This job bundle downloads the rendered output of another completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video file.", - "category": "job-bundle", - "tasks": [ - "integrate-pipeline", - "process-media", - "submit-job" - ], - "journeys": [ - "studio-integration" - ], - "tags": [ - "ffmpeg" - ], - "status": "active" - }, - { - "path": "job_bundles/flux2_klein_lora", - "title": "FLUX.2 Klein LoRA Training and Image Generation", - "description": "Train your own AI image models with just 20-50 photos, then generate unlimited new images using Black Forest Labs' fastest model.", - "category": "job-bundle", - "tasks": [ - "run-ml-workload", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/gromacs_md", - "title": "GROMACS Molecular Dynamics", - "description": "Molecular dynamics (MD) simulates the physical movement of atoms in a protein over time, revealing how it folds, binds drugs, or changes shape.", - "category": "job-bundle", - "tasks": [ - "run-scientific-workload", - "submit-job" - ], - "tags": [ - "gromacs" - ], - "status": "active" - }, - { - "path": "job_bundles/gsplat_pipeline", - "title": "Gaussian Splatting pipeline for AWS Deadline Cloud", - "description": "This job bundle runs a 3D Gaussian Splatting pipeline.", - "category": "job-bundle", - "tasks": [ - "integrate-pipeline", - "run-ml-workload", - "submit-job" - ], - "tags": [], - "status": "active" - }, - { - "path": "job_bundles/gui_control_showcase", - "title": "Job parameter GUI control showcase", - "description": "Preview every OpenJD job-parameter user interface control supported by the Deadline Cloud bundle submitter.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/houdini_husk_usd_render", - "title": "SideFX Houdini Husk USD Render", - "description": "Husk is a CLI application provided with SideFX Houdini that renders Universal Scene Description(USD) files.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "houdini" - ], - "status": "active" - }, - { - "path": "job_bundles/infinigen_scene_gen", - "title": "Infinigen scene generation job bundle", - "description": "Generates photorealistic 3D scenes using Infinigen on AWS Deadline Cloud GPU workers.", - "category": "job-bundle", - "tasks": [ - "render-content", - "run-simulation", - "submit-job" - ], - "tags": [ - "infinigen" - ], - "updated": "2026-06-23", - "status": "active" - }, - { - "path": "job_bundles/job_attachments_devguide", - "title": "Job attachments input example", - "description": "Demonstrate input path parameters and asset references for Deadline Cloud job attachments.", - "category": "job-bundle", - "tasks": [ - "manage-assets", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/job_dev_progression", - "title": "Job Development Progression", - "description": "Follow four stages that evolve a minimal OpenJD job into a maintainable bundle with scripts, shared code, and a bundled Python package.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "journeys": [ - "new-application" - ], - "featured": true, - "status": "active" - }, - { - "path": "job_bundles/job_env_daemon_process", - "title": "Session daemon process environment", - "description": "Start a daemon once for an OpenJD session, use it from tasks, and stop it when the session exits.", - "category": "job-bundle", - "tasks": [ - "integrate-pipeline", - "submit-job" - ], - "journeys": [ - "studio-integration" - ], - "status": "active" - }, - { - "path": "job_bundles/job_env_vars", - "title": "Job environment variables", - "description": "Set environment variables at the OpenJD job environment level for all steps in a session.", - "category": "job-bundle", - "tasks": [ - "integrate-pipeline", - "submit-job" - ], - "journeys": [ - "studio-integration" - ], - "status": "active" - }, - { - "path": "job_bundles/job_env_with_new_command", - "title": "Job environment command injection", - "description": "Add a command to every task in a session by using an OpenJD job environment.", - "category": "job-bundle", - "tasks": [ - "integrate-pipeline", - "submit-job" - ], - "journeys": [ - "studio-integration" - ], - "status": "active" - }, - { - "path": "job_bundles/keyshot_standalone", - "title": "KeyShot Standalone", - "description": "This is a Windows KeyShot job bundle that allows the user to render a scene with each frame as a separate task.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "tags": [ - "keyshot" - ], - "status": "active" - }, - { - "path": "job_bundles/list_available_conda_packages", - "title": "List Available Conda Packages Job Bundle", - "description": "This job bundle lists all available conda packages in the deadline-cloud channel using `conda search -c deadline-cloud '*'` and prints the list into the logs.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "job_bundles/maya_arnold_ass_export_render", - "title": "Maya Arnold Export and Render", - "description": "This job exports Arnold `.ass` files from a Maya scene and renders them using the Arnold `kick` command-line renderer.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "arnold", - "maya" - ], - "status": "active" - }, - { - "path": "job_bundles/maya_cli_render", - "title": "Maya CLI Render", - "description": "This job bundle renders a Maya software renderer scene with the Maya CLI `Render` command.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "maya" - ], - "status": "active" - }, - { - "path": "job_bundles/monte_carlo_simulation", - "title": "Pricing Financial Derivatives", - "description": "Prices a portfolio of autocallable structured notes using Monte Carlo simulation with QuantLib's Heston stochastic volatility model.", - "category": "job-bundle", - "tasks": [ - "run-simulation", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/mujoco_sim_to_policy", - "title": "MuJoCo Sim-to-Policy Pipeline (3-step)", - "description": "This sample trains and renders a learned robot-manipulation policy on AWS Deadline Cloud, using a MuJoCo simulation of the Strands Robots so100 arm.", - "category": "job-bundle", - "tasks": [ - "run-simulation", - "submit-job" - ], - "updated": "2026-06-25", - "status": "active" - }, - { - "path": "job_bundles/nuke_render", - "title": "Nuke Render Job Bundle", - "description": "This job bundle renders Nuke scripts using Nuke's headless rendering mode with the `nuke -x` command.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "nuke" - ], - "status": "active" - }, - { - "path": "job_bundles/pip_package_job", - "title": "Pip Package Job", - "description": "This job bundle demonstrates providing a job's Python dependencies with pip through a **queue environment**.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "tags": [ - "pip" - ], - "updated": "2026-07-08", - "status": "active" - }, - { - "path": "job_bundles/pip_self_contained_job", - "title": "Pip Self-Contained Job", - "description": "This job bundle demonstrates managing pip packages entirely **within the job bundle**, with no queue environment required.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "tags": [ - "pip" - ], - "updated": "2026-07-08", - "status": "active" - }, - { - "path": "job_bundles/povray-3.7", - "title": "POV-Ray 3.7 AWS Deadline Cloud Job Template", - "description": "This OpenJD job template enables POV-Ray 3.7 raytracing rendering on AWS Deadline Cloud using conda package management.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "tags": [ - "povray" - ], - "status": "active" - }, - { - "path": "job_bundles/redshift-2025", - "title": "Redshift Rendering Job Template", - "description": "This job template allows you to render Redshift scenes using the standalone redshiftCmdLine.exe executable that comes with Cinema 4D 2025.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "tags": [ - "redshift" - ], - "status": "active" - }, - { - "path": "job_bundles/satellite_classification", - "title": "Satellite Imagery Classification", - "description": "Classifies satellite image tiles into land-cover categories (water, vegetation, bare soil, rock, cloud) and stitches the results into a single map.", - "category": "job-bundle", - "tasks": [ - "run-ml-workload", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/simple_job", - "title": "Minimal OpenJD job", - "description": "Run a minimal OpenJD shell command as the smallest starting point for a Deadline Cloud job bundle.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "journeys": [ - "new-application" - ], - "status": "active" - }, - { - "path": "job_bundles/ssh_to_smf", - "title": "SSM Managed Node via Deadline Cloud Job", - "description": "Register a Deadline Cloud worker as an SSM hybrid managed node, enabling SSH access via Session Manager for the duration of the job.", - "category": "job-bundle", - "tasks": [ - "submit-job", - "troubleshoot-workers" - ], - "status": "active" - }, - { - "path": "job_bundles/ssh_to_smf_windows", - "title": "SSM Managed Node via Deadline Cloud Job (Windows)", - "description": "Register a **Windows** Deadline Cloud worker as an SSM hybrid managed node, enabling RDP, SSH, or PowerShell access via Session Manager for the duration of the job.", - "category": "job-bundle", - "tasks": [ - "submit-job", - "troubleshoot-workers" - ], - "status": "active" - }, - { - "path": "job_bundles/task_chunking", - "title": "Task Chunking Job Bundle Samples", - "description": "These samples demonstrate the Task Chunking extension for Open Job Description, which improves resource utilization by grouping multiple frames or tasks into chunks instead of processing them individually.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/tile_render_maya_ffmpeg_for_blogpost", - "title": "Tile Render with Maya/Arnold and Ffmpeg", - "description": "Read the blog post Create a tile rendering job with modifications for AWS Deadline Cloud to learn about how this job was created.", - "category": "job-bundle", - "tasks": [ - "process-media", - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "ffmpeg", - "maya" - ], - "status": "active" - }, - { - "path": "job_bundles/tile_render_with_maya_arnold", - "title": "Tile render with Maya and Arnold", - "description": "Render Maya and Arnold frames as parallel image tiles, then assemble each completed frame.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "arnold", - "maya" - ], - "status": "active" - }, - { - "path": "job_bundles/tile_render_with_maya_vray", - "title": "Tile Render with Maya/V-Ray and OpenImageIO", - "description": "This job bundle will submit a tile rendering job using Maya and V-Ray to create EXRs as output.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "maya", - "vray" - ], - "status": "active" - }, - { - "path": "job_bundles/tile_render_with_vray_linux", - "title": "V-Ray Region Render Sample Job Bundle", - "description": "This job bundle renders a V-Ray scene by dividing the image into configurable regions, rendering each region as a separate task, and then merging them into a final image.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "vray" - ], - "status": "active" - }, - { - "path": "job_bundles/turntable_with_maya_arnold", - "title": "Turntable with Maya/Arnold job bundle", - "description": "This job takes an OBJ geometry file as input, and outputs a video turntable render.", - "category": "job-bundle", - "tasks": [ - "process-media", - "render-content", - "submit-job" - ], - "tags": [ - "arnold", - "maya" - ], - "status": "active" - }, - { - "path": "job_bundles/virtual_screening_vina", - "title": "Virtual Screening with AutoDock VINA", - "description": "Virtual screening is a computational drug discovery technique that searches large libraries of small molecules to find those most likely to bind a protein target (e.g., a viral enzyme or cancer receptor).", - "category": "job-bundle", - "tasks": [ - "run-scientific-workload", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/vllm_lm_eval_leaderboard", - "title": "vLLM LLM Leaderboard (Matrix Evaluation)", - "description": "Evaluate **multiple LLMs \u00d7 multiple benchmarks** in a single Deadline Cloud job.", - "category": "job-bundle", - "tasks": [ - "run-ml-workload", - "submit-job" - ], - "status": "active" - }, - { - "path": "job_bundles/vray_render", - "title": "V-Ray sample job bundle", - "description": "Render a `.vrscene` with V-Ray Standalone on Linux, staging scene dependencies as job attachments and returning the selected image output.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "vray" - ], - "status": "active" - }, - { - "path": "job_bundles/vred_render", - "title": "VRED Renderer Job Bundle", - "description": "Render VRED Core or VRED Pro scenes in headless mode, with optional tiled rendering and tile assembly.", - "category": "job-bundle", - "tasks": [ - "render-content", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "tags": [ - "vred" - ], - "status": "active" - }, - { - "path": "job_bundles/vtk-latest", - "title": "VTK Visualization Job Template", - "description": "This OpenJD job template allows users to run VTK (Visualization Toolkit) Python scripts using AWS Deadline Cloud.", - "category": "job-bundle", - "tasks": [ - "submit-job" - ], - "status": "active" - }, - { - "path": "queue_environments/conda_queue_env_from_console.yaml", - "title": "Default service-managed fleet Conda environment", - "description": "Provide Conda packages with the same Rattler-based session environment created by Deadline Cloud console onboarding.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "queue_environments/conda_queue_env_improved_caching.yaml", - "title": "Cached service-managed fleet Conda environment", - "description": "Reuse hash-keyed Conda environments across service-managed fleet sessions to reduce repeated setup time.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "conda" - ], - "featured": true, - "status": "active" - }, - { - "path": "queue_environments/conda_queue_env_inline.yaml", - "title": "Portable inline Conda environment", - "description": "Create and activate a Conda environment using portable inline shell actions on customer-managed workers.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "queue_environments/conda_queue_env_inline_improved_caching.yaml", - "title": "Portable cached inline Conda environment", - "description": "Create reusable Conda environments with inline actions suitable for customer-managed fleet workers.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "queue_environments/conda_queue_env_pyrattler.yaml", - "title": "Py-rattler queue environment", - "description": "Resolve and activate job-requested Conda packages with the Python bindings for the Rattler library.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "queue_environments/disconnect_ubl_queue_env.yaml", - "title": "Disconnect usage-based licensing environment", - "description": "Remove Deadline Cloud usage-based licensing variables before configuring a queue to use custom license servers.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "status": "active" - }, - { - "path": "queue_environments/pip_queue_env.yaml", - "title": "Pip queue environment", - "description": "Create a session-scoped Python virtual environment and install job-requested packages with pip.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "pip" - ], - "updated": "2026-07-08", - "status": "active" - }, - { - "path": "queue_environments/rez_queue_env.yaml", - "title": "Rez queue environment", - "description": "Resolve job-requested Rez packages from a shared repository and activate them for the worker session.", - "category": "queue-environment", - "tasks": [ - "configure-workers", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "rez" - ], - "status": "active" - }, - { - "path": "skills/3dsmax-host-config", - "title": "3ds Max Host Config", - "description": "This skill helps you generate a PowerShell host configuration script for any version of 3ds Max and supported plugin combinations (V-Ray, Corona, tyFlow, Forest Pack, RailClone, and more) for AWS Deadline Cloud Service Managed Fleet workers.", - "category": "agent-skill", - "tasks": [ - "configure-workers", - "develop-samples" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "3dsmax" - ], - "status": "active" - }, - { - "path": "skills/conda-builder", - "title": "Conda recipe builder agent skill", - "description": "Guide an AI coding agent through creating, building, and testing a Deadline Cloud DCC Conda recipe.", - "category": "agent-skill", - "tasks": [ - "build-software", - "develop-samples", - "provide-software" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "conda" - ], - "status": "active" - }, - { - "path": "skills/deadline-cloud-job", - "title": "Deadline Cloud job authoring agent skill", - "description": "Guide an AI coding agent through creating and validating an OpenJD job bundle for Deadline Cloud.", - "category": "agent-skill", - "tasks": [ - "develop-samples", - "submit-job" - ], - "journeys": [ - "new-application" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "deadline" - ], - "status": "active" - }, - { - "path": "skills/host-config-from-installer", - "title": "Host Config from Installer", - "description": "This skill helps you create a PowerShell host configuration script for any Windows `.exe` software you want to run on AWS Deadline Cloud Service Managed Fleet workers.", - "category": "agent-skill", - "tasks": [ - "configure-workers", - "develop-samples", - "install-plugins", - "provide-software" - ], - "journeys": [ - "new-application", - "custom-plugins" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "installer", - "plugin" - ], - "status": "active" - }, - { - "path": "submission_hooks/license_limits", - "title": "Enforce Fixed License Limits with Submission Hooks", - "description": "This sample demonstrates how to use AWS Deadline Cloud Limits together with a submission hook to enforce a fixed number of concurrent VRay licenses across all job submissions \u2014 without requiring artists to configure anything manually.", - "category": "submission-hook", - "tasks": [ - "customize-submission", - "integrate-pipeline" - ], - "journeys": [ - "studio-integration" - ], - "platforms": [ - "platform-independent" - ], - "featured": true, - "status": "active" - }, - { - "path": "terraform/farm_templates/starter_farm", - "title": "A starter AWS Deadline Cloud farm (Terraform)", - "description": "This Terraform configuration deploys an AWS Deadline Cloud farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways.", - "category": "infrastructure", - "tasks": [ - "deploy-farm", - "manage-fleet" - ], - "platforms": [ - "platform-independent" - ], - "tags": [ - "terraform" - ], - "featured": true, - "status": "active" - }, - { - "path": "utility_scripts/upload_to_job_attachments", - "title": "AWS Deadline Cloud Job Attachments Uploader", - "description": "Upload files and directories from your local workstation to AWS Deadline Cloud job attachments storage.", - "category": "utility", - "tasks": [ - "integrate-pipeline", - "manage-assets" - ], - "journeys": [ - "studio-integration" - ], - "platforms": [ - "platform-independent" - ], - "status": "active" - } - ] -} diff --git a/sample_catalog.schema.json b/sample_catalog.schema.json deleted file mode 100644 index 43a702fe..00000000 --- a/sample_catalog.schema.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/sample_catalog.schema.json", - "title": "AWS Deadline Cloud sample catalog", - "type": "object", - "additionalProperties": false, - "required": ["schema_version", "taxonomy", "inventory", "samples"], - "properties": { - "schema_version": {"type": "integer", "const": 1}, - "taxonomy": { - "type": "object", - "additionalProperties": false, - "required": ["categories", "tasks", "journeys"], - "properties": { - "categories": {"$ref": "#/$defs/taxonomyItems"}, - "tasks": {"$ref": "#/$defs/taxonomyItems"}, - "journeys": {"$ref": "#/$defs/taxonomyItems"} - } - }, - "inventory": { - "type": "object", - "additionalProperties": false, - "required": ["roots", "exclusions"], - "properties": { - "roots": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": ["path", "kind"], - "properties": { - "path": {"$ref": "#/$defs/repositoryPath"}, - "kind": {"enum": ["directory", "file"]}, - "pattern": {"type": "string", "minLength": 1} - } - } - }, - "exclusions": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": ["path", "reason"], - "properties": { - "path": {"$ref": "#/$defs/repositoryPath"}, - "reason": {"type": "string", "minLength": 20} - } - } - } - } - }, - "samples": { - "type": "array", - "minItems": 1, - "items": {"$ref": "#/$defs/sample"} - } - }, - "$defs": { - "repositoryPath": { - "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z0-9._-]+(?:/[A-Za-z0-9._-]+)*$" - }, - "taxonomyItems": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "additionalProperties": false, - "required": ["id", "label", "description"], - "properties": { - "id": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"}, - "label": {"type": "string", "minLength": 2}, - "description": {"type": "string", "minLength": 20} - } - } - }, - "sample": { - "type": "object", - "additionalProperties": false, - "required": ["path", "title", "description", "category", "tasks"], - "properties": { - "path": {"$ref": "#/$defs/repositoryPath"}, - "title": {"type": "string", "minLength": 3, "maxLength": 100}, - "description": {"type": "string", "minLength": 30, "maxLength": 300}, - "category": { - "enum": [ - "infrastructure", "job-bundle", "software-package", "container", - "queue-environment", "host-configuration", "submission-hook", - "utility", "agent-skill" - ] - }, - "tasks": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "deploy-farm", "manage-fleet", "monitor-events", "submit-job", - "render-content", "process-media", "run-simulation", "run-ml-workload", - "run-scientific-workload", "manage-assets", "build-software", - "provide-software", "install-plugins", "configure-workers", - "integrate-pipeline", "customize-submission", "troubleshoot-workers", - "develop-samples" - ] - } - }, - "journeys": { - "type": "array", - "uniqueItems": true, - "items": {"enum": ["new-application", "custom-plugins", "studio-integration"]} - }, - "platforms": { - "type": "array", - "uniqueItems": true, - "items": {"enum": ["linux", "windows", "macos", "platform-independent"]} - }, - "tags": { - "type": "array", - "uniqueItems": true, - "items": {"type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$"} - }, - "status": {"enum": ["active", "reference", "deprecated"]}, - "updated": {"type": "string", "format": "date"}, - "featured": {"type": "boolean"} - } - } - } -} diff --git a/scripts/catalog_lib.py b/scripts/catalog_lib.py deleted file mode 100644 index 60068dae..00000000 --- a/scripts/catalog_lib.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python3 -"""Shared helpers for the sample catalog tools.""" - -from __future__ import annotations - -import json -from pathlib import Path -from typing import Any - -REPOSITORY_ROOT = Path(__file__).resolve().parents[1] -CATALOG_PATH = REPOSITORY_ROOT / "sample_catalog.json" -SCHEMA_PATH = REPOSITORY_ROOT / "sample_catalog.schema.json" -GENERATED_PATH = REPOSITORY_ROOT / "SAMPLES.md" - - -def load_json(path: Path) -> dict[str, Any]: - with path.open(encoding="utf-8") as stream: - value = json.load(stream) - if not isinstance(value, dict): - raise ValueError(f"{path.relative_to(REPOSITORY_ROOT)} must contain a JSON object") - return value - - -def load_catalog() -> dict[str, Any]: - return load_json(CATALOG_PATH) - - -def taxonomy_labels(catalog: dict[str, Any], taxonomy: str) -> dict[str, str]: - return {item["id"]: item["label"] for item in catalog["taxonomy"][taxonomy]} diff --git a/scripts/check_external_links.py b/scripts/check_external_links.py new file mode 100644 index 00000000..5cb275f6 --- /dev/null +++ b/scripts/check_external_links.py @@ -0,0 +1,498 @@ +#!/usr/bin/env python3 +"""Check live external links in every tracked Markdown file. + +The checker intentionally bypasses proxy settings and pins each connection to an IP +address from a validated DNS result. Redirect targets are independently validated. +""" + +from __future__ import annotations + +import argparse +import concurrent.futures +import http.client +import ipaddress +import re +import socket +import ssl +import sys +import time +from collections.abc import Callable +from dataclasses import dataclass +from datetime import date +from pathlib import Path +from urllib.parse import quote, urljoin, urlsplit, urlunsplit + +import check_markdown_links as markdown + +REPOSITORY_ROOT = Path(__file__).resolve().parents[1] +DEFAULT_IGNORE_FILE = REPOSITORY_ROOT / ".github" / "external-link-ignore.txt" +USER_AGENT = "deadline-cloud-samples-link-checker/1.0 (+https://github.com/aws-deadline/deadline-cloud-samples)" +REDIRECT_STATUSES = frozenset({301, 302, 303, 307, 308}) +RETRYABLE_STATUSES = frozenset({408, 425, 429}) +DATED_COMMENT = re.compile(r"^#\s*(\d{4}-\d{2}-\d{2}):\s*(\S.*)$") +DOMAIN = re.compile(r"^[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?$") + + +class UnsafeTarget(ValueError): + """A URL or DNS result is unsafe for requests from CI.""" + + +@dataclass(frozen=True) +class Settings: + timeout: float = 10.0 + retries: int = 2 + backoff: float = 1.0 + max_redirects: int = 5 + + +@dataclass(frozen=True) +class ParsedTarget: + url: str + scheme: str + hostname: str + port: int + host_header: str + request_target: str + + +@dataclass(frozen=True) +class Response: + status: int + location: str | None + + +@dataclass(frozen=True) +class ChainResult: + success: bool + final_url: str + status: int | None = None + error: str | None = None + hard_failure: bool = False + + @property + def retryable(self) -> bool: + return not self.hard_failure and ( + self.error is not None + or self.status in RETRYABLE_STATUSES + or (self.status is not None and self.status >= 500) + ) + + def describe(self) -> str: + if self.error: + return self.error + return f"HTTP {self.status} at {self.final_url}" + + +@dataclass(frozen=True) +class CheckResult: + url: str + success: bool + detail: str + + +def _require_public_unicast(address: ipaddress.IPv4Address | ipaddress.IPv6Address) -> None: + """Reject every address class that CI must not contact, including multicast.""" + if address.is_multicast: + raise UnsafeTarget(f"multicast IP address {address} is not allowed") + if not address.is_global: + raise UnsafeTarget(f"non-public IP address {address} is not allowed") + + +def _ascii_hostname(hostname: str) -> str: + if hostname.endswith("."): + raise UnsafeTarget("hostnames with a trailing dot are not allowed") + try: + address = ipaddress.ip_address(hostname) + except ValueError: + try: + ascii_hostname = hostname.encode("idna").decode("ascii").lower() + except UnicodeError as error: + raise UnsafeTarget(f"invalid internationalized hostname: {error}") from error + if "." not in ascii_hostname: + raise UnsafeTarget("single-label and localhost hostnames are not allowed") + if ascii_hostname == "localhost" or ascii_hostname.endswith(".localhost"): + raise UnsafeTarget("localhost targets are not allowed") + labels = ascii_hostname.split(".") + if any( + not label + or len(label) > 63 + or label.startswith("-") + or label.endswith("-") + or not re.fullmatch(r"[a-z0-9-]+", label) + for label in labels + ): + raise UnsafeTarget("malformed DNS hostname") + if len(ascii_hostname) > 253: + raise UnsafeTarget("DNS hostname is too long") + return ascii_hostname + _require_public_unicast(address) + return address.compressed + + +def parse_target(url: str) -> ParsedTarget: + if any(character.isspace() or ord(character) < 32 or ord(character) == 127 for character in url): + raise UnsafeTarget("URL contains whitespace or control characters") + if "\\" in url: + raise UnsafeTarget("URL contains a backslash") + try: + parsed = urlsplit(url) + port = parsed.port + except ValueError as error: + raise UnsafeTarget(f"malformed URL: {error}") from error + scheme = parsed.scheme.lower() + if scheme not in {"http", "https"}: + raise UnsafeTarget("only http and https URLs are allowed") + if not parsed.netloc or parsed.hostname is None: + raise UnsafeTarget("URL has no hostname") + if parsed.username is not None or parsed.password is not None or "@" in parsed.netloc: + raise UnsafeTarget("URL credentials are not allowed") + expected_port = 80 if scheme == "http" else 443 + if port is not None and port != expected_port: + raise UnsafeTarget(f"non-standard port {port} is not allowed for {scheme}") + + hostname = _ascii_hostname(parsed.hostname) + effective_port = port or expected_port + host_header = f"[{hostname}]" if ":" in hostname else hostname + if port is not None: + host_header = f"{host_header}:{port}" + path = quote(parsed.path or "/", safe="/%:@!$&'()*+,;=-._~") + query = quote(parsed.query, safe="%/?@!$&'()*+,;=:-._~") + request_target = f"{path}?{query}" if query else path + normalized_url = urlunsplit((scheme, parsed.netloc, parsed.path, parsed.query, "")) + return ParsedTarget(normalized_url, scheme, hostname, effective_port, host_header, request_target) + + +def _public_addresses(hostname: str, port: int) -> list[tuple[int, int, int, tuple[object, ...]]]: + try: + records = socket.getaddrinfo(hostname, port, type=socket.SOCK_STREAM) + except socket.gaierror as error: + raise OSError(f"DNS resolution failed for {hostname}: {error}") from error + if not records: + raise OSError(f"DNS resolution returned no addresses for {hostname}") + + addresses: list[tuple[int, int, int, tuple[object, ...]]] = [] + seen: set[tuple[int, tuple[object, ...]]] = set() + for family, socktype, protocol, _, sockaddr in records: + raw_address = str(sockaddr[0]).split("%", 1)[0] + try: + address = ipaddress.ip_address(raw_address) + except ValueError as error: + raise UnsafeTarget(f"DNS returned malformed address {raw_address!r}") from error + try: + _require_public_unicast(address) + except UnsafeTarget as error: + raise UnsafeTarget( + f"DNS for {hostname} returned unsafe address {address}; refusing all addresses: {error}" + ) from error + key = (family, sockaddr) + if key not in seen: + seen.add(key) + addresses.append((family, socktype, protocol, sockaddr)) + return addresses + + +def _connect( + addresses: list[tuple[int, int, int, tuple[object, ...]]], timeout: float +) -> socket.socket: + last_error: OSError | None = None + for family, socktype, protocol, sockaddr in addresses: + sock = socket.socket(family, socktype, protocol) + sock.settimeout(timeout) + try: + sock.connect(sockaddr) + return sock + except OSError as error: + last_error = error + sock.close() + raise OSError(f"could not connect to any validated address: {last_error}") + + +class DirectHTTPConnection(http.client.HTTPConnection): + def __init__( + self, + host: str, + port: int, + timeout: float, + addresses: list[tuple[int, int, int, tuple[object, ...]]], + ) -> None: + super().__init__(host, port, timeout=timeout) + self._addresses = addresses + + def connect(self) -> None: + self.sock = _connect(self._addresses, self.timeout) + + +class DirectHTTPSConnection(http.client.HTTPSConnection): + def __init__( + self, + host: str, + port: int, + timeout: float, + addresses: list[tuple[int, int, int, tuple[object, ...]]], + ) -> None: + super().__init__(host, port, timeout=timeout, context=ssl.create_default_context()) + self._addresses = addresses + + def connect(self) -> None: + raw_socket = _connect(self._addresses, self.timeout) + try: + # The original hostname is retained for TLS SNI and certificate verification. + self.sock = self._context.wrap_socket(raw_socket, server_hostname=self.host) + except BaseException: + raw_socket.close() + raise + + +def _request_once(url: str, method: str, settings: Settings) -> Response: + target = parse_target(url) + addresses = _public_addresses(target.hostname, target.port) + connection_class = DirectHTTPSConnection if target.scheme == "https" else DirectHTTPConnection + connection = connection_class(target.hostname, target.port, settings.timeout, addresses) + headers = { + "Accept": "*/*", + "Accept-Encoding": "identity", + "Connection": "close", + "Host": target.host_header, + "User-Agent": USER_AGENT, + } + if method == "GET": + headers["Range"] = "bytes=0-0" + try: + connection.request(method, target.request_target, headers=headers) + response = connection.getresponse() + return Response(response.status, response.getheader("Location")) + finally: + # Do not consume response bodies. Closing is sufficient for this one-shot connection. + connection.close() + + +def _request_chain(original_url: str, method: str, settings: Settings) -> ChainResult: + current_url = original_url + visited: set[str] = set() + for redirect_count in range(settings.max_redirects + 1): + try: + current_url = parse_target(current_url).url + if current_url in visited: + return ChainResult(False, current_url, error="redirect loop detected", hard_failure=True) + visited.add(current_url) + response = _request_once(current_url, method, settings) + except UnsafeTarget as error: + return ChainResult(False, current_url, error=f"unsafe target: {error}", hard_failure=True) + except (OSError, ssl.SSLError, http.client.HTTPException) as error: + return ChainResult(False, current_url, error=f"{type(error).__name__}: {error}") + + if 200 <= response.status < 300: + return ChainResult(True, current_url, status=response.status) + if response.status not in REDIRECT_STATUSES: + return ChainResult(False, current_url, status=response.status) + if not response.location: + return ChainResult( + False, + current_url, + status=response.status, + error=f"HTTP {response.status} redirect has no Location header", + hard_failure=True, + ) + if redirect_count == settings.max_redirects: + return ChainResult( + False, + current_url, + status=response.status, + error=f"more than {settings.max_redirects} redirects", + hard_failure=True, + ) + try: + current_url = parse_target(urljoin(current_url, response.location)).url + except UnsafeTarget as error: + return ChainResult( + False, + current_url, + error=f"unsafe redirect target {response.location!r}: {error}", + hard_failure=True, + ) + raise AssertionError("unreachable redirect state") + + +def _probe_once(url: str, settings: Settings) -> tuple[bool, str, bool]: + head = _request_chain(url, "HEAD", settings) + if head.success: + return True, f"HEAD {head.status} at {head.final_url}", False + if head.hard_failure: + return False, f"HEAD: {head.describe()}", False + + # Some servers reject or mishandle HEAD. Restart at the original URL with a one-byte GET. + get = _request_chain(url, "GET", settings) + if get.success: + return True, f"GET {get.status} at {get.final_url} (HEAD: {head.describe()})", False + return False, f"HEAD: {head.describe()}; GET: {get.describe()}", get.retryable + + +def check_url( + url: str, settings: Settings, sleep: Callable[[float], None] = time.sleep +) -> CheckResult: + try: + normalized = parse_target(url).url + except UnsafeTarget as error: + return CheckResult(url, False, f"unsafe target: {error}") + + detail = "" + for attempt in range(settings.retries + 1): + success, detail, retryable = _probe_once(normalized, settings) + if success: + return CheckResult(normalized, True, detail) + if not retryable or attempt == settings.retries: + break + delay = settings.backoff * (2**attempt) + sleep(delay) + return CheckResult(normalized, False, detail) + + +def _target_with_line_locations(text: str) -> list[tuple[str, int]]: + return markdown.extract_targets_with_lines(text) + + +def collect_external_links(paths: list[Path] | None = None) -> dict[str, list[str]]: + links: dict[str, set[str]] = {} + for source in paths if paths is not None else markdown.tracked_markdown(): + text = source.read_text(encoding="utf-8") + for raw_target, line in _target_with_line_locations(text): + target = markdown.normalize_target(raw_target) + if not re.match(r"^https?://", target, re.IGNORECASE): + continue + try: + network_url = parse_target(target).url + except UnsafeTarget: + network_url = target.split("#", 1)[0] + location = f"{source.relative_to(REPOSITORY_ROOT)}:{line}" + links.setdefault(network_url, set()).add(location) + return {url: sorted(locations) for url, locations in sorted(links.items())} + + +def load_ignore_file(path: Path) -> dict[str, str]: + rules: dict[str, str] = {} + dated_comment: tuple[str, str] | None = None + for line_number, raw_line in enumerate(path.read_text(encoding="utf-8").splitlines(), 1): + line = raw_line.strip() + if not line: + dated_comment = None + continue + if line.startswith("#"): + match = DATED_COMMENT.match(line) + if match: + try: + date.fromisoformat(match.group(1)) + except ValueError as error: + raise ValueError( + f"{path}:{line_number}: invalid evidence date {match.group(1)!r}" + ) from error + dated_comment = (match.group(1), match.group(2)) + else: + dated_comment = None + continue + domain = line.lower().rstrip(".") + if ( + dated_comment is None + or not DOMAIN.fullmatch(domain) + or "*" in domain + or "/" in domain + or ".." in domain + ): + raise ValueError( + f"{path}:{line_number}: each exact domain needs an immediately preceding " + "'# YYYY-MM-DD: observed reason' comment" + ) + if domain in rules: + raise ValueError(f"{path}:{line_number}: duplicate domain {domain}") + rules[domain] = f"{dated_comment[0]}: {dated_comment[1]}" + dated_comment = None + return rules + + +def matching_ignore(hostname: str, rules: dict[str, str]) -> tuple[str, str] | None: + host = hostname.lower().rstrip(".") + for domain, reason in rules.items(): + if host == domain or host.endswith(f".{domain}"): + return domain, reason + return None + + +def _arguments() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--no-ignore", action="store_true", help="audit every URL, including ignored domains") + parser.add_argument("--ignore-file", type=Path, default=DEFAULT_IGNORE_FILE) + parser.add_argument("--workers", type=int, default=8) + parser.add_argument("--timeout", type=float, default=10.0) + parser.add_argument("--retries", type=int, default=2) + parser.add_argument("--backoff", type=float, default=1.0) + parser.add_argument("--max-redirects", type=int, default=5) + return parser.parse_args() + + +def main() -> int: + arguments = _arguments() + if ( + arguments.workers < 1 + or arguments.timeout <= 0 + or arguments.retries < 0 + or arguments.backoff < 0 + or arguments.max_redirects < 0 + ): + print("invalid checker limits", file=sys.stderr) + return 2 + try: + ignore_rules = load_ignore_file(arguments.ignore_file) + except (OSError, ValueError) as error: + print(f"Cannot load external-link ignore file: {error}", file=sys.stderr) + return 2 + + links = collect_external_links() + ignored: dict[str, tuple[str, str]] = {} + to_check: list[str] = [] + malformed: list[CheckResult] = [] + for url in links: + try: + target = parse_target(url) + except UnsafeTarget as error: + malformed.append(CheckResult(url, False, f"unsafe target: {error}")) + continue + rule = matching_ignore(target.hostname, ignore_rules) + if rule and not arguments.no_ignore: + ignored[url] = rule + else: + to_check.append(url) + + settings = Settings(arguments.timeout, arguments.retries, arguments.backoff, arguments.max_redirects) + results = list(malformed) + if to_check: + with concurrent.futures.ThreadPoolExecutor(max_workers=min(arguments.workers, len(to_check))) as executor: + results.extend(executor.map(lambda url: check_url(url, settings), to_check)) + failures = sorted((result for result in results if not result.success), key=lambda result: result.url) + + if ignored: + ignored_domains = sorted({domain for domain, _ in ignored.values()}) + print( + f"Ignored {len(ignored)} URL(s) on documented bot-blocking domain(s): " + f"{', '.join(ignored_domains)}" + ) + if failures: + print( + f"External Markdown link validation failed: {len(failures)} of {len(results)} checked URL(s)", + file=sys.stderr, + ) + for result in failures: + print(f" {result.url}\n {result.detail}", file=sys.stderr) + for location in links[result.url]: + print(f" linked from {location}", file=sys.stderr) + return 1 + + occurrence_count = sum(len(locations) for locations in links.values()) + print( + "External Markdown links valid " + f"({len(results)} unique URL(s) checked, {len(ignored)} ignored, " + f"{occurrence_count} source location(s))" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/check_markdown_links.py b/scripts/check_markdown_links.py index 8c8ebe06..e9634719 100644 --- a/scripts/check_markdown_links.py +++ b/scripts/check_markdown_links.py @@ -18,7 +18,13 @@ r"\b(?:href|src)\s*=\s*(?:\"([^\"]*)\"|'([^']*)'|([^\s>'\"]+))", re.IGNORECASE, ) -OPENING_FENCE = re.compile(r"^ {0,3}(`{3,}|~{3,})(.*)$") +ANGLE_AUTOLINK = re.compile(r"<((?:https?)://[^<>\s]+)>", re.IGNORECASE) +EXTENDED_URL_AUTOLINK = re.compile( + r"(^|[\s*_~(])(https?://([A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)+)[^\s<]*)", + re.IGNORECASE | re.MULTILINE, +) +AUTOLINK_TRAILING_PUNCTUATION = "?!.,:*_~" +OPENING_FENCE = re.compile(r"^[ \t]*(`{3,}|~{3,})(.*)$") ATX_HEADING = re.compile(r"^ {0,3}#{1,6}(?:[ \t]+|$)(.*)$") SETEXT_HEADING = re.compile(r"^ {0,3}(=+|-+)[ \t]*$") HTML_ANCHOR = re.compile( @@ -33,7 +39,8 @@ def tracked_markdown() -> list[Path]: ["git", "ls-files", "-z", "--cached", "--others", "--exclude-standard"], cwd=REPOSITORY_ROOT, ).decode("utf-8") - return [REPOSITORY_ROOT / path for path in output.split("\0") if path.endswith(".md")] + paths = [REPOSITORY_ROOT / path for path in output.split("\0") if path.endswith(".md")] + return [path for path in paths if path.is_file()] def strip_html_comments(line: str, in_comment: bool) -> tuple[str, bool]: @@ -79,18 +86,21 @@ def strip_inline_code(line: str) -> str: def strip_code(text: str, *, remove_inline_code: bool = True) -> str: - """Remove fenced code and HTML comments while preserving line boundaries.""" + """Remove fenced/indented code and HTML comments while preserving line boundaries.""" visible: list[str] = [] fence: tuple[str, int] | None = None + in_indented_code = False + previous_line_blank = True in_comment = False for original_line in text.splitlines(keepends=True): newline = "\n" if original_line.endswith(("\n", "\r")) else "" line = original_line.rstrip("\r\n") if fence: marker, minimum_length = fence - if re.fullmatch(rf" {{0,3}}{re.escape(marker)}{{{minimum_length},}}[ \t]*", line): + if re.fullmatch(rf"[ \t]*{re.escape(marker)}{{{minimum_length},}}[ \t]*", line): fence = None visible.append(newline) + previous_line_blank = not line.strip() continue line, in_comment = strip_html_comments(line, in_comment) @@ -98,13 +108,30 @@ def strip_code(text: str, *, remove_inline_code: bool = True) -> str: if opening and not (opening.group(1).startswith("`") and "`" in opening.group(2)): fence = (opening.group(1)[0], len(opening.group(1))) visible.append(newline) + previous_line_blank = False continue + + indented = line.startswith("\t") or line.startswith(" ") + if in_indented_code: + if not line.strip() or indented: + visible.append(newline) + previous_line_blank = not line.strip() + continue + in_indented_code = False + if previous_line_blank and line.strip() and indented: + in_indented_code = True + visible.append(newline) + previous_line_blank = False + continue + visible.append((strip_inline_code(line) if remove_inline_code else line) + newline) + previous_line_blank = not line.strip() return "".join(visible) -def inline_targets(text: str) -> list[str]: - targets: list[str] = [] +def inline_target_spans(text: str) -> list[tuple[str, int, int]]: + """Return inline-link targets with each complete link's source span.""" + targets: list[tuple[str, int, int]] = [] position = 0 link_start = re.compile(r"!?\[(?:\\.|[^]])*?\]\(", re.DOTALL) while True: @@ -125,7 +152,7 @@ def inline_targets(text: str) -> list[str]: elif character == ")": depth -= 1 if depth == 0: - targets.append(text[start:index].strip()) + targets.append((text[start:index].strip(), match.start(), index + 1)) position = index + 1 break else: @@ -133,14 +160,72 @@ def inline_targets(text: str) -> list[str]: return targets -def extract_targets(text: str) -> list[str]: - visible = strip_code(text) - targets = inline_targets(visible) - targets.extend(match.group(1) or match.group(2) for match in REFERENCE_DEFINITION.finditer(visible)) - targets.extend(next(group for group in match.groups() if group is not None) for match in HTML_TARGET.finditer(visible)) +def inline_targets_with_positions(text: str) -> list[tuple[str, int]]: + return [(target, start) for target, start, _ in inline_target_spans(text)] + + +def inline_targets(text: str) -> list[str]: + return [target for target, _ in inline_targets_with_positions(text)] + + +def _trim_extended_autolink(candidate: str) -> str: + """Apply GFM extended-autolink path validation to one URL candidate.""" + previous = "" + while candidate != previous: + previous = candidate + candidate = candidate.rstrip(AUTOLINK_TRAILING_PUNCTUATION) + candidate = re.sub(r"&[A-Za-z0-9]+;$", "", candidate) + while ( + candidate.endswith(")") + and candidate.count(")") > candidate.count("(") + ): + candidate = candidate[:-1] + return candidate + + +def bare_url_targets_with_positions(text: str) -> list[tuple[str, int]]: + """Return rendered GFM bare http/https autolinks and their source offsets.""" + targets: list[tuple[str, int]] = [] + for match in EXTENDED_URL_AUTOLINK.finditer(text): + domain_labels = match.group(3).split(".") + if any("_" in label for label in domain_labels[-2:]): + continue + target = _trim_extended_autolink(match.group(2)) + if target: + targets.append((target, match.start(2))) return targets +def extract_targets_with_lines(text: str) -> list[tuple[str, int]]: + """Return visible Markdown targets and their one-based source lines.""" + visible = strip_code(text) + inline_spans = inline_target_spans(visible) + positioned = [(target, start) for target, start, _ in inline_spans] + positioned.extend( + (match.group(1) or match.group(2), match.start()) + for match in REFERENCE_DEFINITION.finditer(visible) + ) + positioned.extend( + (next(group for group in match.groups() if group is not None), match.start()) + for match in HTML_TARGET.finditer(visible) + ) + positioned.extend((match.group(1), match.start()) for match in ANGLE_AUTOLINK.finditer(visible)) + bare_visible = list(visible) + for _, start, end in inline_spans: + bare_visible[start:end] = ( + character if character in "\r\n" else " " for character in bare_visible[start:end] + ) + positioned.extend(bare_url_targets_with_positions("".join(bare_visible))) + targets_with_lines = { + (target, visible.count("\n", 0, position) + 1) for target, position in positioned + } + return sorted(targets_with_lines, key=lambda item: (item[1], item[0])) + + +def extract_targets(text: str) -> list[str]: + return [target for target, _ in extract_targets_with_lines(text)] + + def normalize_target(raw_target: str) -> str: target = html.unescape(raw_target.strip()) if target.startswith("<") and ">" in target: diff --git a/scripts/generate_samples.py b/scripts/generate_samples.py deleted file mode 100644 index 913d7e90..00000000 --- a/scripts/generate_samples.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python3 -"""Generate the human-browsable sample index from sample_catalog.json.""" - -from __future__ import annotations - -import argparse -import sys -from collections import defaultdict -from typing import Any, Iterable - -from catalog_lib import GENERATED_PATH, load_catalog, taxonomy_labels - -HEADER = """# AWS Deadline Cloud sample catalog - -> This file is generated by `python3 scripts/generate_samples.py`. Edit -> [`sample_catalog.json`](sample_catalog.json), not this file, then regenerate it. - -Find a sample by what you want to accomplish. Paths in the catalog are stable sample -identities; samples remain in their existing directories. -""" - - -def sample_line(sample: dict[str, Any]) -> str: - details: list[str] = [] - if sample.get("platforms"): - details.append("platforms: " + ", ".join(sample["platforms"])) - if sample.get("tags"): - details.append("tags: " + ", ".join(sample["tags"])) - suffix = f" _({' · '.join(details)})_" if details else "" - return f"* **[{sample['title']}]({sample['path']})** — {sample['description']}{suffix}" - - -def render_group(title: str, samples: Iterable[dict[str, Any]], empty: str = "No samples.") -> list[str]: - ordered = sorted(samples, key=lambda sample: (sample["title"].casefold(), sample["path"])) - lines = [f"## {title}", ""] - lines.extend(sample_line(sample) for sample in ordered) - if not ordered: - lines.append(empty) - lines.append("") - return lines - - -def render(catalog: dict[str, Any]) -> str: - samples = catalog["samples"] - category_labels = taxonomy_labels(catalog, "categories") - task_labels = taxonomy_labels(catalog, "tasks") - journey_labels = taxonomy_labels(catalog, "journeys") - lines = [HEADER.rstrip(), ""] - - lines.extend(render_group("Featured samples", (sample for sample in samples if sample.get("featured")))) - - recent = sorted( - (sample for sample in samples if sample.get("updated")), - key=lambda sample: (sample["updated"], sample["title"].casefold()), - reverse=True, - )[:12] - lines.extend( - [ - "## Recent highlights", - "", - "This is a curated selection of noteworthy additions and updates, not an exhaustive chronology.", - "", - ] - ) - for sample in recent: - lines.append(f"* **{sample['updated']} — [{sample['title']}]({sample['path']})** — {sample['description']}") - lines.append("") - - by_task: dict[str, list[dict[str, Any]]] = defaultdict(list) - for sample in samples: - for task in sample["tasks"]: - by_task[task].append(sample) - lines.extend(["## Browse by goal", ""]) - lines.append("Each sample can appear under more than one goal.") - lines.append("") - for task in task_labels: - lines.extend(render_group(task_labels[task], by_task[task])) - - by_category: dict[str, list[dict[str, Any]]] = defaultdict(list) - for sample in samples: - by_category[sample["category"]].append(sample) - lines.extend(["# Browse by sample type", ""]) - for category in category_labels: - lines.extend(render_group(category_labels[category], by_category[category])) - - by_journey: dict[str, list[dict[str, Any]]] = defaultdict(list) - for sample in samples: - for journey in sample.get("journeys", []): - by_journey[journey].append(sample) - lines.extend(["# Browse by journey", ""]) - lines.append("See [`docs/sample-navigation.md`](docs/sample-navigation.md) for abbreviated decision guidance.") - lines.append("") - for journey in journey_labels: - lines.extend(render_group(journey_labels[journey], by_journey[journey])) - - return "\n".join(lines).rstrip() + "\n" - - -def main() -> int: - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--check", action="store_true", help="fail if SAMPLES.md is not current") - args = parser.parse_args() - generated = render(load_catalog()) - if args.check: - current = GENERATED_PATH.read_text(encoding="utf-8") if GENERATED_PATH.exists() else "" - if current != generated: - print("SAMPLES.md is out of date; run: python3 scripts/generate_samples.py", file=sys.stderr) - return 1 - print("SAMPLES.md is current") - return 0 - GENERATED_PATH.write_text(generated, encoding="utf-8") - print(f"Wrote {GENERATED_PATH.name}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/scripts/query_samples.py b/scripts/query_samples.py deleted file mode 100644 index 8f901e3a..00000000 --- a/scripts/query_samples.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 -"""Query sample_catalog.json by controlled metadata.""" - -from __future__ import annotations - -import argparse - -from catalog_lib import load_catalog - - -def main() -> int: - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--category") - parser.add_argument("--task") - parser.add_argument("--journey") - parser.add_argument("--platform") - parser.add_argument("--tag") - args = parser.parse_args() - samples = load_catalog()["samples"] - for sample in sorted(samples, key=lambda item: item["path"]): - if args.category and sample["category"] != args.category: - continue - if args.task and args.task not in sample["tasks"]: - continue - if args.journey and args.journey not in sample.get("journeys", []): - continue - if args.platform and args.platform not in sample.get("platforms", []): - continue - if args.tag and args.tag not in sample.get("tags", []): - continue - print(f"{sample['path']}\t{sample['title']}\t{sample['description']}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/scripts/tests/test_check_external_links.py b/scripts/tests/test_check_external_links.py new file mode 100644 index 00000000..153c0467 --- /dev/null +++ b/scripts/tests/test_check_external_links.py @@ -0,0 +1,217 @@ +from __future__ import annotations + +import socket +import sys +import tempfile +import unittest +from pathlib import Path +from unittest import mock + +SCRIPTS_DIR = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(SCRIPTS_DIR)) + +import check_external_links as checker # noqa: E402 +import check_markdown_links as markdown # noqa: E402 + + +class ExternalLinkCheckerTests(unittest.TestCase): + def setUp(self) -> None: + self.temporary_directory = tempfile.TemporaryDirectory() + self.addCleanup(self.temporary_directory.cleanup) + self.root = Path(self.temporary_directory.name) + self.original_external_root = checker.REPOSITORY_ROOT + self.original_markdown_root = markdown.REPOSITORY_ROOT + checker.REPOSITORY_ROOT = self.root + markdown.REPOSITORY_ROOT = self.root + self.addCleanup(setattr, checker, "REPOSITORY_ROOT", self.original_external_root) + self.addCleanup(setattr, markdown, "REPOSITORY_ROOT", self.original_markdown_root) + + def write(self, relative_path: str, content: str) -> Path: + path = self.root / relative_path + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, encoding="utf-8") + return path + + def test_collects_locations_strips_fragments_and_deduplicates(self) -> None: + first = self.write( + "README.md", + "[one](https://example.com/guide#first)\n" + "[two](https://example.com/guide#second)\n" + "`[hidden](https://hidden.example/path)`\n", + ) + second = self.write("docs/guide.md", "\n") + links = checker.collect_external_links([first, second]) + self.assertEqual( + {"https://example.com/guide": ["README.md:1", "README.md:2", "docs/guide.md:1"]}, + links, + ) + + def test_bare_url_locations_aggregate_and_deduplicate_with_other_syntaxes(self) -> None: + url = "https://example.com/guide" + source = self.write( + "README.md", + f"Bare {url}.\n" + f"[Markdown]({url}) and duplicate bare {url}\n" + f"<{url}> and HTML\n" + "```text\nhttps://example.com/not-rendered\n```\n", + ) + self.assertEqual( + {url: ["README.md:1", "README.md:2", "README.md:3"]}, + checker.collect_external_links([source]), + ) + + def test_rejects_unsafe_url_shapes(self) -> None: + unsafe = ( + "ftp://example.com/file", + "https://user:secret@example.com/", + "http://localhost/", + "http://127.0.0.1/", + "http://example.com:8080/", + "https://single-label/", + "https://example.com\\@127.0.0.1/", + ) + for url in unsafe: + with self.subTest(url=url), self.assertRaises(checker.UnsafeTarget): + checker.parse_target(url) + + def test_rejects_multicast_literal_addresses(self) -> None: + for url in ("http://224.0.0.1/", "http://[ff02::1]/"): + with self.subTest(url=url), self.assertRaisesRegex( + checker.UnsafeTarget, "multicast IP address" + ): + checker.parse_target(url) + + def test_rejects_dns_answer_set_containing_private_address(self) -> None: + records = [ + (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("93.184.216.34", 443)), + (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("10.0.0.1", 443)), + ] + with mock.patch.object(checker.socket, "getaddrinfo", return_value=records): + with self.assertRaisesRegex(checker.UnsafeTarget, "non-public IP address"): + checker._public_addresses("example.com", 443) + + def test_rejects_mixed_dns_answer_set_containing_multicast(self) -> None: + records = [ + (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("93.184.216.34", 443)), + (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("224.0.0.1", 443)), + ] + with mock.patch.object(checker.socket, "getaddrinfo", return_value=records): + with self.assertRaisesRegex(checker.UnsafeTarget, "multicast IP address"): + checker._public_addresses("example.com", 443) + + def test_rejects_sole_multicast_dns_answer(self) -> None: + records = [ + (socket.AF_INET6, socket.SOCK_STREAM, 6, "", ("ff02::1", 443, 0, 0)), + ] + with mock.patch.object(checker.socket, "getaddrinfo", return_value=records): + with self.assertRaisesRegex(checker.UnsafeTarget, "multicast IP address"): + checker._public_addresses("example.com", 443) + + def test_unsafe_redirect_is_not_requested_or_retried_as_get(self) -> None: + with mock.patch.object( + checker, + "_request_once", + return_value=checker.Response(302, "http://169.254.169.254/latest/meta-data/"), + ) as request: + result = checker.check_url("https://example.com/start", checker.Settings(retries=2)) + self.assertFalse(result.success) + self.assertIn("unsafe redirect target", result.detail) + request.assert_called_once() + + def test_head_failure_falls_back_to_get_from_original_url(self) -> None: + responses = [checker.Response(405, None), checker.Response(206, None)] + with mock.patch.object(checker, "_request_once", side_effect=responses) as request: + result = checker.check_url("https://example.com/start", checker.Settings(retries=0)) + self.assertTrue(result.success) + self.assertEqual( + [ + mock.call("https://example.com/start", "HEAD", mock.ANY), + mock.call("https://example.com/start", "GET", mock.ANY), + ], + request.call_args_list, + ) + + def test_minimal_get_sets_range_and_identity_headers(self) -> None: + captured: dict[str, object] = {} + + class FakeResponse: + status = 206 + + @staticmethod + def getheader(name: str) -> None: + return None + + class FakeConnection: + def __init__(self, *args: object) -> None: + captured["constructor"] = args + + def request(self, method: str, target: str, headers: dict[str, str]) -> None: + captured.update(method=method, target=target, headers=headers) + + @staticmethod + def getresponse() -> FakeResponse: + return FakeResponse() + + @staticmethod + def close() -> None: + return None + + with ( + mock.patch.object(checker, "_public_addresses", return_value=[]), + mock.patch.object(checker, "DirectHTTPSConnection", FakeConnection), + ): + response = checker._request_once("https://example.com/file", "GET", checker.Settings()) + self.assertEqual(206, response.status) + headers = captured["headers"] + self.assertIsInstance(headers, dict) + self.assertEqual("bytes=0-0", headers["Range"]) # type: ignore[index] + self.assertEqual("identity", headers["Accept-Encoding"]) # type: ignore[index] + self.assertEqual(checker.USER_AGENT, headers["User-Agent"]) # type: ignore[index] + + def test_redirect_limit_is_deterministic(self) -> None: + def redirect(url: str, method: str, settings: checker.Settings) -> checker.Response: + number = int(url.rsplit("/", 1)[-1]) + return checker.Response(302, f"https://example.com/{number + 1}") + + with mock.patch.object(checker, "_request_once", side_effect=redirect): + result = checker.check_url( + "https://example.com/0", checker.Settings(retries=0, max_redirects=2) + ) + self.assertFalse(result.success) + self.assertIn("more than 2 redirects", result.detail) + + def test_retry_uses_exponential_backoff_for_transient_failure(self) -> None: + failures = [checker.Response(503, None), checker.Response(503, None)] + successes = [checker.Response(200, None)] + sleep = mock.Mock() + with mock.patch.object(checker, "_request_once", side_effect=failures + successes): + result = checker.check_url( + "https://example.com/", checker.Settings(retries=1, backoff=0.25), sleep=sleep + ) + self.assertTrue(result.success) + sleep.assert_called_once_with(0.25) + + def test_ignore_file_requires_dated_reason_and_uses_label_boundary(self) -> None: + ignore_file = self.write( + "ignore.txt", + "# 2026-07-14: returned HTTP 403 to both checker methods\nexample.com\n", + ) + rules = checker.load_ignore_file(ignore_file) + self.assertIsNotNone(checker.matching_ignore("example.com", rules)) + self.assertIsNotNone(checker.matching_ignore("docs.example.com", rules)) + self.assertIsNone(checker.matching_ignore("notexample.com", rules)) + + def test_ignore_file_rejects_wildcards_and_undocumented_domains(self) -> None: + for content in ( + "*.example.com\n", + "# explanation only\nexample.com\n", + "# 2026-02-30: impossible date\nexample.com\n", + ): + with self.subTest(content=content): + ignore_file = self.write("ignore.txt", content) + with self.assertRaises(ValueError): + checker.load_ignore_file(ignore_file) + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/tests/test_check_markdown_links.py b/scripts/tests/test_check_markdown_links.py index f5543d1f..ec0618f9 100644 --- a/scripts/tests/test_check_markdown_links.py +++ b/scripts/tests/test_check_markdown_links.py @@ -27,15 +27,79 @@ def write(self, relative_path: str, content: str) -> Path: return path def test_missing_heading_fragment_is_rejected(self) -> None: - self.write("SAMPLES.md", "# Sample catalog\n") + self.write("docs/guide.md", "# Navigation guide\n") self.source.write_text("source\n", encoding="utf-8") - error = checker.check_target(self.source, "SAMPLES.md#definitely-not-a-heading") + error = checker.check_target(self.source, "docs/guide.md#definitely-not-a-heading") self.assertIn("broken local fragment", error or "") def test_existing_heading_fragment_is_accepted(self) -> None: - self.write("SAMPLES.md", "# Sample catalog\n\n## Render content\n") + self.write("docs/guide.md", "# Navigation guide\n\n## Render content\n") self.source.write_text("source\n", encoding="utf-8") - self.assertIsNone(checker.check_target(self.source, "SAMPLES.md#render-content")) + self.assertIsNone(checker.check_target(self.source, "docs/guide.md#render-content")) + + def test_target_line_numbers_are_reported(self) -> None: + targets = checker.extract_targets_with_lines( + "intro\n\n[guide](docs/guide.md)\n\n" + ) + self.assertEqual([("docs/guide.md", 3), ("images/example.png", 4)], targets) + + def test_gfm_bare_http_urls_are_scanned_with_source_lines(self) -> None: + targets = checker.extract_targets_with_lines( + "intro\nhttps://example.com/guide\nSee http://docs.example.com/path?q=one.\n" + ) + self.assertEqual( + [ + ("https://example.com/guide", 2), + ("http://docs.example.com/path?q=one", 3), + ], + targets, + ) + + def test_gfm_bare_url_trailing_punctuation_and_parentheses(self) -> None: + targets = checker.extract_targets( + "See (https://example.com/search?q=Markup+(business))).\n" + "Read https://example.com/a.b, then https://example.com/a?\n" + "Entity https://example.com/search?q=x©\n" + ) + self.assertEqual( + [ + "https://example.com/search?q=Markup+(business)", + "https://example.com/a", + "https://example.com/a.b", + "https://example.com/search?q=x", + ], + targets, + ) + + def test_gfm_bare_urls_in_non_rendered_code_and_comments_are_ignored(self) -> None: + text = ( + "Visible https://visible.example/path\n" + "`https://inline.example/path`\n" + "```text\nhttps://fenced.example/path\n```\n" + "1. Example:\n ```yaml\n url: https://nested-fence.example/path\n ```\n" + "\n" + ) + self.assertEqual(["https://visible.example/path"], checker.extract_targets(text)) + + def test_indented_code_url_is_ignored_but_paragraph_continuation_is_rendered(self) -> None: + text = ( + " https://indented-code.example/path\n" + "\n" + "Paragraph\n" + " https://continuation.example/path\n" + ) + self.assertEqual(["https://continuation.example/path"], checker.extract_targets(text)) + + def test_external_link_syntaxes_deduplicate_on_the_same_line(self) -> None: + url = "https://example.com/guide" + targets = checker.extract_targets_with_lines( + f"[Markdown]({url}) <{url}> HTML {url}\n" + ) + self.assertEqual([(url, 1)], targets) + + def test_explicit_link_destination_is_not_rescanned_as_bare_text(self) -> None: + url = "https://example.com/download" + self.assertEqual([(url, 1)], checker.extract_targets_with_lines(f"[Download]({url})\\\n")) def test_existing_same_document_fragment_is_accepted(self) -> None: self.source.write_text("# Overview\n\n## Render content\n", encoding="utf-8") diff --git a/scripts/tests/test_validate_catalog.py b/scripts/tests/test_validate_catalog.py deleted file mode 100644 index 5445f864..00000000 --- a/scripts/tests/test_validate_catalog.py +++ /dev/null @@ -1,58 +0,0 @@ -from __future__ import annotations - -import sys -import unittest -from pathlib import Path - -SCRIPTS_DIR = Path(__file__).resolve().parents[1] -sys.path.insert(0, str(SCRIPTS_DIR)) - -from validate_catalog import ( # noqa: E402 - ValidationFailure, - validate_schema, - validate_title_uniqueness, -) - - -class ValidateSchemaTests(unittest.TestCase): - def test_boolean_does_not_equal_integer_const(self) -> None: - with self.assertRaises(ValidationFailure): - validate_schema(True, {"const": 1}, {}) - - def test_boolean_does_not_equal_integer_enum_value(self) -> None: - with self.assertRaises(ValidationFailure): - validate_schema(True, {"enum": [1]}, {}) - - def test_date_rejects_compact_iso_form(self) -> None: - with self.assertRaises(ValidationFailure): - validate_schema("20260714", {"type": "string", "format": "date"}, {}) - - def test_date_rejects_iso_week_date(self) -> None: - with self.assertRaises(ValidationFailure): - validate_schema("2026-W29-2", {"type": "string", "format": "date"}, {}) - - def test_date_accepts_rfc3339_full_date(self) -> None: - validate_schema("2026-07-14", {"type": "string", "format": "date"}, {}) - - def test_date_rejects_invalid_calendar_date(self) -> None: - with self.assertRaises(ValidationFailure): - validate_schema("2026-02-30", {"type": "string", "format": "date"}, {}) - - def test_semantically_duplicate_titles_are_rejected(self) -> None: - samples = [ - {"path": "samples/one", "title": "Redshift for Maya: Conda Recipe"}, - {"path": "samples/two", "title": "redshift-for-maya conda recipe"}, - ] - with self.assertRaisesRegex(ValidationFailure, "semantically duplicate titles"): - validate_title_uniqueness(samples) - - def test_version_distinguished_titles_are_accepted(self) -> None: - samples = [ - {"path": "samples/2025", "title": "Redshift 2025 for Maya Conda Recipe"}, - {"path": "samples/2026", "title": "Redshift 2026 for Maya Conda Recipe"}, - ] - validate_title_uniqueness(samples) - - -if __name__ == "__main__": - unittest.main() diff --git a/scripts/validate_catalog.py b/scripts/validate_catalog.py deleted file mode 100644 index 9811b0bc..00000000 --- a/scripts/validate_catalog.py +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env python3 -"""Validate sample metadata, tracked inventory coverage, and generated output.""" - -from __future__ import annotations - -import fnmatch -import re -import subprocess -import sys -from datetime import date -from pathlib import Path -from typing import Any - -from catalog_lib import CATALOG_PATH, GENERATED_PATH, REPOSITORY_ROOT, SCHEMA_PATH, load_catalog, load_json -from generate_samples import render - - -class ValidationFailure(Exception): - pass - - -def fail(message: str) -> None: - raise ValidationFailure(message) - - -def resolve_reference(root_schema: dict[str, Any], reference: str) -> dict[str, Any]: - if not reference.startswith("#/"): - fail(f"unsupported schema reference: {reference}") - value: Any = root_schema - for component in reference[2:].split("/"): - value = value[component.replace("~1", "/").replace("~0", "~")] - return value - - -def json_equal(left: Any, right: Any) -> bool: - """Compare JSON values without treating booleans as numbers.""" - if type(left) is not type(right): - return False - if isinstance(left, dict): - return left.keys() == right.keys() and all(json_equal(left[key], right[key]) for key in left) - if isinstance(left, list): - return len(left) == len(right) and all(json_equal(a, b) for a, b in zip(left, right)) - return left == right - - -def validate_schema(value: Any, rule: dict[str, Any], root_schema: dict[str, Any], location: str = "$") -> None: - if "$ref" in rule: - validate_schema(value, resolve_reference(root_schema, rule["$ref"]), root_schema, location) - return - if "const" in rule and not json_equal(value, rule["const"]): - fail(f"{location}: expected {rule['const']!r}") - if "enum" in rule and not any(json_equal(value, option) for option in rule["enum"]): - fail(f"{location}: {value!r} is not one of {rule['enum']!r}") - - expected_type = rule.get("type") - type_matches = { - "object": lambda item: isinstance(item, dict), - "array": lambda item: isinstance(item, list), - "string": lambda item: isinstance(item, str), - "boolean": lambda item: isinstance(item, bool), - "integer": lambda item: isinstance(item, int) and not isinstance(item, bool), - } - if expected_type and not type_matches[expected_type](value): - fail(f"{location}: expected {expected_type}, got {type(value).__name__}") - - if isinstance(value, dict): - for required in rule.get("required", []): - if required not in value: - fail(f"{location}: missing required property {required!r}") - properties = rule.get("properties", {}) - if rule.get("additionalProperties") is False: - unexpected = sorted(set(value) - set(properties)) - if unexpected: - fail(f"{location}: unexpected properties {unexpected!r}") - for key, child in value.items(): - if key in properties: - validate_schema(child, properties[key], root_schema, f"{location}.{key}") - - if isinstance(value, list): - if len(value) < rule.get("minItems", 0): - fail(f"{location}: expected at least {rule['minItems']} items") - if rule.get("uniqueItems"): - for index, item in enumerate(value): - if any(json_equal(item, earlier) for earlier in value[:index]): - fail(f"{location}: array values must be unique") - if "items" in rule: - for index, child in enumerate(value): - validate_schema(child, rule["items"], root_schema, f"{location}[{index}]") - - if isinstance(value, str): - if len(value) < rule.get("minLength", 0): - fail(f"{location}: string is shorter than {rule['minLength']} characters") - if "maxLength" in rule and len(value) > rule["maxLength"]: - fail(f"{location}: string is longer than {rule['maxLength']} characters") - if "pattern" in rule and not re.fullmatch(rule["pattern"], value): - fail(f"{location}: {value!r} does not match {rule['pattern']!r}") - if rule.get("format") == "date": - if not re.fullmatch(r"\d{4}-\d{2}-\d{2}", value): - fail(f"{location}: {value!r} is not an RFC 3339 full-date") - try: - date.fromisoformat(value) - except ValueError: - fail(f"{location}: {value!r} is not an RFC 3339 full-date") - - -def tracked_paths() -> list[str]: - output = subprocess.check_output(["git", "ls-files", "-z"], cwd=REPOSITORY_ROOT).decode("utf-8") - return [path for path in output.split("\0") if path] - - -def discover_inventory(catalog: dict[str, Any], tracked: list[str]) -> set[str]: - discovered: set[str] = set() - for root in catalog["inventory"]["roots"]: - prefix = root["path"].rstrip("/") + "/" - pattern = root.get("pattern", "*") - if root["kind"] == "directory": - children = { - remainder.split("/", 1)[0] - for path in tracked - if path.startswith(prefix) - for remainder in [path[len(prefix) :]] - if "/" in remainder - } - else: - children = { - remainder - for path in tracked - if path.startswith(prefix) - for remainder in [path[len(prefix) :]] - if "/" not in remainder and fnmatch.fnmatchcase(remainder, pattern) - } - discovered.update(prefix + child for child in children) - return discovered - - -def semantic_title(title: str) -> str: - """Normalize title presentation differences that should not create distinct samples.""" - return re.sub(r"[\W_]+", " ", title.casefold(), flags=re.UNICODE).strip() - - -def validate_title_uniqueness(samples: list[dict[str, Any]]) -> None: - paths_by_title: dict[str, list[str]] = {} - for sample in samples: - paths_by_title.setdefault(semantic_title(sample["title"]), []).append(sample["path"]) - duplicates = {title: paths for title, paths in paths_by_title.items() if len(paths) > 1} - if duplicates: - details = "; ".join(f"{title!r}: {paths}" for title, paths in sorted(duplicates.items())) - fail(f"samples: semantically duplicate titles: {details}") - - -def validate_semantics(catalog: dict[str, Any]) -> None: - for taxonomy_name in ("categories", "tasks", "journeys"): - identifiers = [item["id"] for item in catalog["taxonomy"][taxonomy_name]] - if len(identifiers) != len(set(identifiers)): - fail(f"taxonomy.{taxonomy_name}: duplicate IDs") - - category_ids = {item["id"] for item in catalog["taxonomy"]["categories"]} - task_ids = {item["id"] for item in catalog["taxonomy"]["tasks"]} - journey_ids = {item["id"] for item in catalog["taxonomy"]["journeys"]} - sample_paths = [sample["path"] for sample in catalog["samples"]] - if len(sample_paths) != len(set(sample_paths)): - fail("samples: duplicate paths") - validate_title_uniqueness(catalog["samples"]) - - for sample in catalog["samples"]: - path = sample["path"] - if not (REPOSITORY_ROOT / path).exists(): - fail(f"samples: path does not exist: {path}") - if sample["category"] not in category_ids: - fail(f"{path}: undefined category {sample['category']}") - undefined_tasks = set(sample["tasks"]) - task_ids - undefined_journeys = set(sample.get("journeys", [])) - journey_ids - if undefined_tasks: - fail(f"{path}: undefined tasks {sorted(undefined_tasks)}") - if undefined_journeys: - fail(f"{path}: undefined journeys {sorted(undefined_journeys)}") - if sample["description"].rstrip()[-1] not in ".!?": - fail(f"{path}: description must end with punctuation") - - tracked = tracked_paths() - discovered = discover_inventory(catalog, tracked) - exclusions = catalog["inventory"]["exclusions"] - exclusion_paths = [item["path"] for item in exclusions] - if len(exclusion_paths) != len(set(exclusion_paths)): - fail("inventory.exclusions: duplicate paths") - invalid_exclusions = set(exclusion_paths) - discovered - if invalid_exclusions: - fail(f"inventory.exclusions: paths are not discoverable: {sorted(invalid_exclusions)}") - - expected_samples = discovered - set(exclusion_paths) - actual_samples = set(sample_paths) - missing = expected_samples - actual_samples - unexpected = actual_samples - expected_samples - if missing or unexpected: - details = [] - if missing: - details.append(f"missing catalog entries: {sorted(missing)}") - if unexpected: - details.append(f"entries outside tracked inventory: {sorted(unexpected)}") - fail("; ".join(details)) - - generated = render(catalog) - current = GENERATED_PATH.read_text(encoding="utf-8") if GENERATED_PATH.exists() else "" - if current != generated: - fail("SAMPLES.md drifted; run: python3 scripts/generate_samples.py") - - -def main() -> int: - try: - catalog = load_catalog() - schema = load_json(SCHEMA_PATH) - validate_schema(catalog, schema, schema) - validate_semantics(catalog) - except (OSError, ValueError, ValidationFailure) as error: - print(f"Catalog validation failed: {error}", file=sys.stderr) - return 1 - print(f"Catalog valid ({len(catalog['samples'])} samples; exact tracked inventory coverage)") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/scripts/validate_repository.py b/scripts/validate_repository.py index 3c6d4a1f..ee3ec3a0 100644 --- a/scripts/validate_repository.py +++ b/scripts/validate_repository.py @@ -20,13 +20,6 @@ "-p", "test_*.py", ), - ("sample catalog", sys.executable, str(REPOSITORY_ROOT / "scripts" / "validate_catalog.py")), - ( - "generated sample index", - sys.executable, - str(REPOSITORY_ROOT / "scripts" / "generate_samples.py"), - "--check", - ), ("Markdown links", sys.executable, str(REPOSITORY_ROOT / "scripts" / "check_markdown_links.py")), ) From 50b3ae0c51be4e892f26ff3498dbb67e6d25a2da Mon Sep 17 00:00:00 2001 From: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> Date: Wed, 15 Jul 2026 08:52:03 -0700 Subject: [PATCH 3/6] docs: streamline sample navigation Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- AGENTS.md | 39 +-- CONTRIBUTING.md | 38 +-- README.md | 70 ++--- cloudformation/README.md | 61 +---- cloudformation/farm_templates/README.md | 18 ++ .../farm_templates/starter_farm/README.md | 14 +- .../notification_templates/README.md | 31 ++- conda_recipes/README.md | 78 +++++- containers/README.md | 20 +- docs/SAMPLE_README_TEMPLATE.md | 46 ++-- docs/sample-navigation.md | 86 ------ host_configuration_scripts/3dsmax/README.md | 75 +++--- host_configuration_scripts/README.md | 55 ++-- job_bundles/README.md | 200 ++++++-------- job_bundles/flux2_klein_lora/README.md | 11 +- job_bundles/job_dev_progression/README.md | 70 +++-- job_bundles/task_chunking/README.md | 48 ++-- queue_environments/README.md | 251 +++++------------- submission_hooks/README.md | 13 + terraform/README.md | 27 +- utility_scripts/README.md | 44 +-- 21 files changed, 558 insertions(+), 737 deletions(-) create mode 100644 cloudformation/farm_templates/README.md delete mode 100644 docs/sample-navigation.md create mode 100644 submission_hooks/README.md diff --git a/AGENTS.md b/AGENTS.md index aa412ebc..7d8e7b0f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -25,12 +25,10 @@ broken links must be fixed rather than ignored. ## Find samples -The filesystem is the exhaustive sample inventory. Browse the top-level area directories directly and -search their paths or contents (for example, with `find` and `git grep`) when looking for a specific -application, renderer, workflow, or platform. Start with the task table and repository map in -[`README.md`](README.md) when you want recommendations. Folder READMEs and -[`docs/sample-navigation.md`](docs/sample-navigation.md) are curated introductions; they may -intentionally highlight only recommended canonical examples and are not complete inventories. +Start with the task paths and repository map in [`README.md`](README.md), then use the nearest area or +collection README. Its index table is complete for the scope it declares. Search tracked paths or +contents directly when you need implementation or support files that are intentionally excluded from +user-selectable sample tables. ## Where things live @@ -46,28 +44,15 @@ deadline-cloud-samples/ ├── submission_hooks/ Pre-submission Deadline Cloud CLI hooks ├── utility_scripts/ Standalone workflow helpers ├── skills/ Task-specific guides for coding agents -├── docs/ Curated navigation and contributor contracts +├── docs/ Contributor guidance and documentation starting points └── scripts/ Standard-library repository validation ``` Read the relevant sample `README.md` before modifying its files. Use -[`docs/sample-navigation.md`](docs/sample-navigation.md) to choose an application, plugin, or studio -integration path, and [`docs/SAMPLE_README_TEMPLATE.md`](docs/SAMPLE_README_TEMPLATE.md) when adding -a nontrivial sample. +[`docs/SAMPLE_README_TEMPLATE.md`](docs/SAMPLE_README_TEMPLATE.md) as an adaptable starting point when +adding a nontrivial sample. -## Skills — task-specific instructions - -Before starting sample implementation, check [`skills/`](skills/) for a matching guide and read it. -Each skill has YAML frontmatter followed by instructions, references, and examples. - -| Skill | Use when | -|---|---| -| [`skills/deadline-cloud-job/`](skills/deadline-cloud-job/SKILL.md) | Creating or updating an OpenJD job bundle under `job_bundles/` | -| [`skills/conda-builder/`](skills/conda-builder/SKILL.md) | Creating or updating a DCC Conda recipe under `conda_recipes/` | -| [`skills/3dsmax-host-config/`](skills/3dsmax-host-config/SKILL.md) | Creating or updating a 3ds Max host configuration script | -| [`skills/host-config-from-installer/`](skills/host-config-from-installer/SKILL.md) | Creating a Windows host configuration script from a vendor installer | - -Skills are auto-discovered through `.claude/skills` and `.kiro/skills` symlinks. +Before implementing a sample, inspect [`skills/`](skills/) for a matching `SKILL.md` guide. ## Repository conventions @@ -80,8 +65,9 @@ Skills are auto-discovered through `.claude/skills` and `.kiro/skills` symlinks. `deadline-cloud.yaml`. * For OpenJD templates, run `openjd check` and `openjd run --tasks ` to verify a representative task locally before submitting the full parameter range when possible. -* Keep the filesystem as the inventory; update curated folder, root, or journey guidance only when - recommended starting points change. +* Add, rename, move, or delete a sample in the nearest category table. Change root navigation only + when a recommended path changes. +* Keep indexes in Markdown; do not add catalog or metadata-generation machinery. * Do not add third-party runtime dependencies to repository validation. ## Pre-PR checklist @@ -90,7 +76,8 @@ Skills are auto-discovered through `.claude/skills` and `.kiro/skills` symlinks. * [ ] Run `python3 scripts/check_external_links.py` successfully when Markdown links change. * [ ] Run the affected sample's own relevant tests or static checks. * [ ] Update the sample README when behavior, prerequisites, parameters, outputs, or risks change. -* [ ] Update curated folder or journey guidance only when recommended starting points change. +* [ ] Update the nearest category table when a sample is added, renamed, moved, or deleted. +* [ ] Update root task paths only when a recommended starting point changes. * [ ] Use a [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) title. * [ ] Sign off every commit under the [Developer Certificate of Origin](https://developercertificate.org/). * [ ] Check changed content for inclusive language. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c7d6b36a..227c7605 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,8 +35,7 @@ informative; this is the model that we follow. ### Finding contributions to work on If you are not sure what you would like to contribute, then looking at the existing issues is a great way to find -something to contribute on. Looking at -[issues that have the "help wanted" or "good first issue" labels](https://github.com/aws-deadline/deadline-cloud-samples/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22%2C%22help+wanted%22) +something to contribute on. [Issues that have the "help wanted" or "good first issue" labels](https://github.com/aws-deadline/deadline-cloud-samples/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22%2C%22help+wanted%22) are a good place to start, but please dive into any issue that interests you whether it has those labels or not. ### Talk with us first @@ -71,19 +70,20 @@ GitHub provides additional documentation on [forking a repository](https://help. ### Adding or updating a sample -The filesystem under each top-level sample area is the exhaustive inventory. Folder READMEs, the root -README, and [`docs/sample-navigation.md`](docs/sample-navigation.md) are curated introductions and may -intentionally highlight only recommended or canonical samples. Do not maintain a second exhaustive -list. When you add, rename, or remove a sample: +Each sample area and nested collection declares its tracked scope in a category README. Its table is +the complete index of user-selectable samples in that scope; implementation files and support +infrastructure can be documented in nearby prose instead. Do not add a generated catalog, metadata +schema, or other parallel inventory. When you add, rename, move, or delete a sample: 1. Put it in the appropriate top-level area and give a nontrivial sample its own README. -2. Update a folder README, the root README, or the journey guide only when the sample should become a - recommended starting point or changes existing curated guidance. -3. For a nontrivial sample, include the sections documented in - [`docs/SAMPLE_README_TEMPLATE.md`](docs/SAMPLE_README_TEMPLATE.md): purpose, demonstrated - capabilities, prerequisites, operation, setup, run instructions, parameters and outputs, - security/cost/cleanup, troubleshooting, and related resources. -4. Run the complete local unit and static validation from the repository root: +2. Update the nearest category table so its relative link and task-oriented description remain + accurate. If a move crosses category boundaries, update both affected tables. +3. Change the root README navigation only when a recommended path or starting point changes; do not + duplicate the category's exhaustive index at the root. +4. Use [`docs/SAMPLE_README_TEMPLATE.md`](docs/SAMPLE_README_TEMPLATE.md) as a suggested starting point + for a nontrivial sample. Adapt it freely: remove irrelevant prompts, rename/reorder/combine + sections, and add material that helps users choose, run, and clean up the sample. +5. Run the complete local unit and static validation from the repository root: ```console python3 scripts/validate_repository.py @@ -121,7 +121,7 @@ links, including HTTP 404 responses, instead of ignoring them. ### Conventional commits The commits in this repository are all required to use [conventional commit syntax](https://www.conventionalcommits.org/en/v1.0.0/) -in their title to help us identify the kind of change that is being made, automatically generate the changelog, and +in their title to help us identify the kind of change that is being made, automatically generate the changelog, and automatically identify next release version number. Only the first commit that deviates from mainline in your pull request must adhere to this requirement. @@ -132,16 +132,16 @@ We ask that you use these commit types in your commit titles: * `test` - When the pull request is only implementing an addition or change to tests or the testing infrastructure; * `docs` - When the pull request is primarily implementing an addition or change to the package's documentation; * `refactor` - When the pull request is implementing only a refactor of existing code; -* `ci` - When the pull request is implementing a change to the CI infrastructure of the packge; +* `ci` - When the pull request is implementing a change to the CI infrastructure of the package; * `chore` - When the pull request is a generic maintenance task. -We also require that the type in your conventional commit title end in an exclaimation point (e.g. `feat!` or `fix!`) +We also require that the type in your conventional commit title end in an exclamation point (e.g. `feat!` or `fix!`) if the pull request should be considered to be a breaking change in some way. Please also include a "BREAKING CHANGE" footer in the description of your commit in this case ([example](https://www.conventionalcommits.org/en/v1.0.0/#commit-message-with-both--and-breaking-change-footer)). -Examples of breaking changes include any that implements a backwards-imcompatible change to a public Python interface, -the command-line interface, or the like. +Examples of breaking changes include any change that implements a backwards-incompatible change to a public Python interface, +the command-line interface, or the like. -If you need change a commit message, then please see the +If you need to change a commit message, then please see the [GitHub documentation on the topic](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message) to guide you. diff --git a/README.md b/README.md index 0686910f..283b75b0 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,39 @@ Start with the task you want to complete; each sample stays self-contained in it | Deploy a farm | [CloudFormation starter farm](cloudformation/farm_templates/starter_farm/) or [Terraform starter farm](terraform/farm_templates/starter_farm/) | | Learn how a job is structured | [Job development progression](job_bundles/job_dev_progression/) or the [minimal job](job_bundles/simple_job/) | | Render with a DCC | [Blender render](job_bundles/blender_render/), [Maya CLI render](job_bundles/maya_cli_render/), or browse the [job bundles](job_bundles/) | -| Provide applications to workers | [Conda recipes](conda_recipes/), [queue environments](queue_environments/), or [worker containers](containers/) | -| Install software or plugins | [Custom-plugin journey](docs/sample-navigation.md#install-custom-plugins) and [host configuration scripts](host_configuration_scripts/) | -| Connect studio systems | [Studio-integration journey](docs/sample-navigation.md#integrate-studio-tools-into-the-job-lifecycle) | -| Find a specific example | Use the [repository map](#repository-map), then browse that area's folder README | -| Create a sample with an AI agent | Use the task-specific guides in [skills](skills/) | +| Run a new DCC or application | Follow the [application delivery path](#run-a-new-dcc-or-application), then browse jobs, packages, host scripts, or containers | +| Deliver custom plugins | Follow the [plugin delivery path](#deliver-custom-plugins), then compare package, Plugin Sync, and host-install examples | +| Connect studio systems | Follow the [job lifecycle path](#integrate-studio-tools-into-the-job-lifecycle) for submission, session, task, and event integrations | +| Find a specific example | Use the [repository map](#repository-map), then browse that area's complete category table | +| Create a sample with an AI agent | Inspect [skills](skills/) for a matching task guide | + +### Run a new DCC or application + +Read the developer guide on [deploying custom software on workers](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html) +and [building jobs](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/building-jobs.html), then choose the narrowest delivery boundary: +use [Conda recipes](conda_recipes/) and [queue environments](queue_environments/) for versioned user-space software, +[host configuration scripts](host_configuration_scripts/) for privileged installation, or [containers](containers/) for container-first workloads. +Model the work with [job development progression](job_bundles/job_dev_progression/) or start from a DCC example in the +[job bundle table](job_bundles/README.md#job-bundle-index). + +### Deliver custom plugins + +Start with the developer guide for [Plugin Sync](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/plugin-sync.html) +and [custom software delivery](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html). +Use Plugin Sync for frequently changing supported-DCC files, a [Conda recipe](conda_recipes/) for versioned plugins that install without +administrator access, or a [host configuration script](host_configuration_scripts/) for machine-wide vendor installers. +Compare the [Blender plugin bundle](conda_recipes/blender-plugin-bundle/), [Houdini 21 with Plugin Sync](conda_recipes/houdini-21.0/), +and [3ds Max plugin combinations](host_configuration_scripts/3dsmax/). + +### Integrate studio tools into the job lifecycle + +Use the canonical guides for [submitting from an application](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/from-within-applications.html), +[configuring jobs with environments](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/configure-jobs.html), and +[Deadline Cloud EventBridge events](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/eventbridge-integration.html). +Choose [submission hooks](submission_hooks/) or a [custom submitter](job_bundles/custom_submitters/) before submission; +[queue environments](queue_environments/) or job environments for session setup; OpenJD steps for task and publishing actions, as in +[Blender turntable to Flow](job_bundles/blender_turntable_to_flow/); and [notification templates](cloudformation/notification_templates/) +for service-event integrations. ## Quick start @@ -46,30 +74,6 @@ or run licensed software; review parameters, IAM permissions, licensing, and cle * **[License-limit submission hook](submission_hooks/license_limits/)** injects host requirements before submission. * **[After Effects and Red Giant host configuration](host_configuration_scripts/aftereffects/aftereffects_redgiant/)** installs software that needs administrative privileges. -## Recent highlights - -This is a curated selection of noteworthy additions and updates, not an exhaustive chronology. - -* **2026-07-14 — [After Effects and Red Giant host configuration](host_configuration_scripts/aftereffects/aftereffects_redgiant/):** consolidated application and plugin installation. -* **2026-07-10 — [Job event Slack notifications](cloudformation/notification_templates/job_events_slack_lambda/):** connects Deadline Cloud events to Lambda through EventBridge. -* **2026-07-08 — [Pip package delivery](job_bundles/pip_package_job/):** pairs a job with the new [pip queue environment](queue_environments/pip_queue_env.yaml); a [self-contained variant](job_bundles/pip_self_contained_job/) is included too. -* **2026-07-07 — [Houdini 21.0 recipe](conda_recipes/houdini-21.0/):** adds Plugin Sync support. -* **2026-06-25 — [Blender turntable to Flow Production Tracking](job_bundles/blender_turntable_to_flow/):** demonstrates render-to-review publishing. - -Browse the repository map below, then inspect the filesystem directly for the exhaustive inventory. -Folder READMEs are curated introductions and may intentionally highlight only recommended samples. - -## Choose a path for a larger journey - -The [sample navigation guide](docs/sample-navigation.md) gives short decision paths—not full architecture walkthroughs—for: - -* [running a new DCC or application](docs/sample-navigation.md#run-a-new-dcc-or-application); -* [installing custom plugins](docs/sample-navigation.md#install-custom-plugins); and -* [integrating studio tools into the job lifecycle](docs/sample-navigation.md#integrate-studio-tools-into-the-job-lifecycle). - -Each path links to the canonical Deadline Cloud developer guide for design details and then routes back -to the strongest implementations in this repository. - ## Repository map | Area | Use it for | @@ -84,10 +88,12 @@ to the strongest implementations in this repository. | [Submission hooks](submission_hooks/) | Inspect or modify job bundles immediately before submission. | | [Utility scripts](utility_scripts/) | Automate supporting tasks such as uploading job attachments. | | [Agent skills](skills/) | Give coding agents repeatable instructions for authoring jobs, packages, and host configs. | +| [Contributor documentation](docs/) | Use the adaptable sample README starting point. | +| [Repository validation](scripts/) | Run unit, local-link, and live external-link checks. | -The filesystem in each area is the exhaustive inventory. Area READMEs, the task table, featured -examples, and [journey guide](docs/sample-navigation.md) are curated introductions that may intentionally -highlight only recommended samples. +Each sample area README declares its tracked scope and provides a complete local index. Nested collection +READMEs provide their own complete tables, while the root routes users to recommended paths rather than +duplicating every sample. ## Documentation diff --git a/cloudformation/README.md b/cloudformation/README.md index 67d39059..8d98ef87 100644 --- a/cloudformation/README.md +++ b/cloudformation/README.md @@ -1,53 +1,20 @@ # AWS Deadline Cloud sample CloudFormation templates -With [AWS CloudFormation](https://aws.amazon.com/cloudformation/), you can use infrastructure as code to deploy infrastructure -such as a Deadline Cloud farm to your AWS account. Use the samples provided here directly or as a starting point -to create your own custom templates. +With [AWS CloudFormation](https://aws.amazon.com/cloudformation/), you can deploy Deadline Cloud infrastructure as code. Use these samples directly or as starting points for custom templates. -## Starter farm +## Sample index -The [starter_farm](farm_templates/starter_farm/) sample CloudFormation template deploys a Deadline Cloud farm you can use to run jobs that render images, -reconstruct 3D scenes, or transform your data in custom ways. Sample jobs to submit are available in the deadline-cloud-samples on GitHub, Deadline Cloud -provides many integrated submitter plugins for applications, and you can build your own jobs. The deployed farm includes the ability to -[build custom conda packages](../conda_recipes/README.md) for providing additional application support. +This table covers all deployable leaf samples below `cloudformation/`. The two subcategory READMEs provide the same samples grouped by purpose. -## Service-managed fleet with VPC resource endpoint +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Starter farm](farm_templates/starter_farm/) | A farm, queue, service-managed fleets, and package-build support | You need a general-purpose Deadline Cloud starting environment | +| [CUDA farm](farm_templates/cuda_farm/) | A farm with a CUDA-capable fleet and package-build queue | You need GPU compute for CUDA jobs | +| [SMF with VPC and FSx](farm_templates/smf_vpc_fsx/) | VPC resource endpoints and FSx for OpenZFS shared storage | Service-managed workers need private VPC resources | +| [SMF capacity manager](farm_templates/smf_capacity_manager/) | Balancing Wait and Save and Spot capacity with Lambda and EventBridge Scheduler | A hybrid fleet should maintain target capacity cost-effectively | +| [Fleet standby scheduling](farm_templates/fleet_standby_scheduling/) | Time-based changes to a fleet's warm standby worker count | You want faster business-hours starts without full-time idle capacity | +| [CMF fleet health check](farm_templates/cmf_templates/) | Lambda, EventBridge, CloudWatch alarms, and optional SNS for fleet health | A customer-managed autoscaling fleet needs continuous monitoring | +| [Budget event notifications](notification_templates/budget_events_notification/) | Deadline budget events delivered through SNS and AWS Chatbot | You need email or Slack alerts when budget thresholds are reached | +| [Job event Slack notifications](notification_templates/job_events_slack_lambda/) | EventBridge invoking Lambda to post completion and failure messages | Studio automation should react to Deadline Cloud job state changes | -The [smf_vpc_fsx](farm_templates/smf_vpc_fsx/) sample CloudFormation template demonstrates how to connect -a service-managed fleet to private VPC resources using VPC Lattice. It deploys an FSx for OpenZFS file system -and configures workers to mount it via a VPC resource endpoint. This pattern is useful for accessing shared -storage, license servers, or other private resources from Deadline Cloud workers. - -## Service-managed fleet capacity manager - -The [smf_capacity_manager](farm_templates/smf_capacity_manager/) sample CloudFormation template implements automated -capacity management for hybrid fleet setups that combine Wait and Save and Spot fleets. It uses AWS Lambda and -Amazon EventBridge Scheduler to dynamically balance fleet sizes while maintaining constant total capacity, -optimizing for cost-effective Wait and Save capacity while ensuring any deficit is covered by Spot instances. - -## Budget events notification - -The [budget_events_notification](notification_templates/budget_events_notification/) CloudFormation template sets up an integration -to receive notifications via email and Slack when a budget threshold is reached in the aws.deadline service. It creates an SNS topic, -an EventBridge rule, and a Chatbot configuration to send the notifications. - -## Job event Slack notifications with Lambda - -The [job_events_slack_lambda](notification_templates/job_events_slack_lambda/) CloudFormation template demonstrates -how to connect an AWS Lambda function to Deadline Cloud job events through Amazon EventBridge. It creates an -EventBridge rule that matches job completion and failure events and invokes a Lambda function that posts a -notification to a Slack channel via an incoming webhook. Use it as a starting point for reacting to job events -in your own automation. - -## Scheduled standby workers - -The [fleet_standby_scheduling](farm_templates/fleet_standby_scheduling/) sample CloudFormation template schedules -standby worker count changes on a Deadline Cloud fleet based on a time schedule. It sets a warm standby pool -during business hours and resets it outside business hours to save cost. Works with any existing fleet created -via the console, CLI, or CloudFormation. - -## Customer-managed fleet health checks - -The [cmf_templates](farm_templates/cmf_templates/) collection includes a fleet health check CloudFormation template that sets up -continuous health check monitoring for a single Deadline Cloud customer-managed fleet with autoscaling. It creates a Lambda function, -an EventBridge rule, and a CloudWatch alarm that can be configured with an SNS topic. +Browse the [farm templates](farm_templates/) or [notification templates](notification_templates/) category for a focused index and setup context. diff --git a/cloudformation/farm_templates/README.md b/cloudformation/farm_templates/README.md new file mode 100644 index 00000000..641f2e63 --- /dev/null +++ b/cloudformation/farm_templates/README.md @@ -0,0 +1,18 @@ +# AWS Deadline Cloud farm CloudFormation templates + +These deployable CloudFormation samples create farms or add fleet infrastructure and automation to an existing Deadline Cloud deployment. + +## Sample index + +This table covers every immediate deployable sample directory in `farm_templates/`. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Starter farm](starter_farm/) | A general-purpose farm, queue, service-managed fleets, and package-build support | You need a complete first farm | +| [CUDA farm](cuda_farm/) | A farm with a CUDA-capable fleet and package-build queue | You need GPU workers for CUDA workloads | +| [SMF with VPC and FSx](smf_vpc_fsx/) | Private VPC resource access and FSx for OpenZFS storage | Service-managed workers need shared storage or private services | +| [SMF capacity manager](smf_capacity_manager/) | Automated balancing of Wait and Save and Spot fleet capacity | You operate hybrid service-managed fleets | +| [Fleet standby scheduling](fleet_standby_scheduling/) | Scheduled warm standby worker counts | Worker startup latency matters during predictable hours | +| [CMF fleet health check](cmf_templates/) | Continuous health monitoring for an autoscaling customer-managed fleet | You need alarms for fleet capacity or health problems | + +[`apply-conda-queue-env.py`](apply-conda-queue-env.py) is support tooling used to apply a queue environment; it is not a separately deployable sample and is intentionally excluded from the table. diff --git a/cloudformation/farm_templates/starter_farm/README.md b/cloudformation/farm_templates/starter_farm/README.md index 92f9166d..f6bd3370 100644 --- a/cloudformation/farm_templates/starter_farm/README.md +++ b/cloudformation/farm_templates/starter_farm/README.md @@ -5,7 +5,7 @@ This CloudFormation template deploys an [AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/) farm you can use to run jobs that render images, reconstruct 3D scenes, or transform your data in custom ways. Sample jobs to submit are available in the -[deadline-cloud-samples on GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles#readme), +[deadline-cloud-samples on GitHub](../../../job_bundles/), Deadline Cloud provides many [integrated submitter plugins for applications](https://github.com/aws-deadline/#integrations), and you can [build your own jobs](https://docs.aws.amazon.com/en_us/deadline-cloud/latest/developerguide/building-jobs.html). @@ -53,7 +53,7 @@ your AWS Account. The AWS region should be the same as the one you use to deploy prerequisites, and any parameter customizations: 1. If you want to use the [conda-forge channel](https://conda-forge.org/), change the parameter value for ProdCondaChannels to "deadline-cloud conda-forge". The sample job bundle - [Turntable with Maya/Arnold](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/turntable_with_maya_arnold) + [Turntable with Maya/Arnold](../../../job_bundles/turntable_with_maya_arnold/) shows how you can use the FFmpeg provided by conda-forge to encode a video. 2. Edit the fleet configuration parameters if you need a higher vCPU count, more RAM, more EBS bandwidth, etc. 5. Follow the CloudFormation console steps to complete stack creation. @@ -99,10 +99,10 @@ added `conda-forge` to the ProdCondaChannels parameter to the CloudFormation tem [download it as a ZIP](https://github.com/aws-deadline/deadline-cloud-samples/archive/refs/heads/mainline.zip). 2. From the `conda_recipes` directory of `deadline-cloud-samples`, run the following command. If you deployed different fleets than the default, you may need to adjust the conda platforms expression. See - [the conda recipe samples README](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes#readme) + [the conda recipe samples README](../../../conda_recipes/) to learn more about this command. ``` - $ ./submit-package-build deadline -p "linux-64*" + $ ./submit-package-job deadline -p "linux-64*" ``` 3. From Deadline Cloud monitor, navigate to the package build queue to watch the job you submitted. When it is running, right click on the task and select "View logs". It may take several minutes as Deadline Cloud @@ -222,10 +222,10 @@ such as [bioconda](https://bioconda.github.io/). The CloudFormation template includes a queue environment that creates conda virtual environments for jobs to use. By default, this is the sample queue environment -[conda_queue_env_improved_caching.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_improved_caching.yaml). You can run the provided Python script +[conda_queue_env_improved_caching.yaml](../../../queue_environments/conda_queue_env_improved_caching.yaml). You can run the provided Python script [apply-conda-queue-env.py](../apply-conda-queue-env.py) to substitute a different queue environment. For example, the following command would switch it to the sample -[conda_queue_env_from_console.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_from_console.yaml): +[conda_queue_env_from_console.yaml](../../../queue_environments/conda_queue_env_from_console.yaml): ``` $ python ../apply-conda-queue-env.py \ @@ -250,4 +250,4 @@ to dive deeper into this topic. When you strike out on your own from the starter farm sample, you may find it helpful to first delete the `Metadata` section that controls the user interface, and remove the `Conditions` along with where they are used. These sections make a single template more flexible, but when you're using the code to define one particular -farm, they add unnecessary complexity. \ No newline at end of file +farm, they add unnecessary complexity. diff --git a/cloudformation/notification_templates/README.md b/cloudformation/notification_templates/README.md index 180273ab..c20baf7b 100644 --- a/cloudformation/notification_templates/README.md +++ b/cloudformation/notification_templates/README.md @@ -1,14 +1,23 @@ -# AWS Deadline Cloud Event Notification Templates +# AWS Deadline Cloud event notification templates -## Introduction -AWS Deadline Cloud sends events to customer's default event bus https://docs.aws.amazon.com/deadline-cloud/latest/userguide/monitoring-eventbridge.html -This directory holds sample Cloud Formation Templates customers can use to setup notifications based on events received from Deadline Cloud -through mechanisms like email or slack. +AWS Deadline Cloud sends events to the account's default EventBridge event bus. See +[Monitoring Deadline Cloud events with EventBridge](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/monitoring-eventbridge.html) +for service behavior. These CloudFormation templates route selected events to email or Slack integrations. -## Setup Instructions -Each Cloud Formation Template will have its own instructions on how to set up integrations, but in general they follow the below scheme: +## Sample index -1. Download the specified YAML file -2. On the AWS console, go to CloudFormation, Create Stack, and add the downloaded template. -3. Follow the specific instructions for that file, as you may need to enter specific parameters. -4. After this is set up, Deadline cloud events will reach through your setup mechanism. +This table covers every immediate deployable sample directory in `notification_templates/`. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Budget event notifications](budget_events_notification/) | Sending Deadline Cloud budget threshold events through SNS and AWS Chatbot | You need email or Slack budget alerts | +| [Job event Slack notifications](job_events_slack_lambda/) | Matching job events in EventBridge and invoking a Slack-posting Lambda | You need an example service-event integration for job completion or failure | + +## Setup + +Each sample README documents its parameters and integration-specific setup. In general: + +1. Download the sample YAML template. +2. In the AWS CloudFormation console, choose **Create stack** and upload the template. +3. Supply the parameters required by that sample, such as notification destinations or credentials. +4. Confirm that matching Deadline Cloud events reach the configured destination. diff --git a/conda_recipes/README.md b/conda_recipes/README.md index 4a00112d..462813bd 100644 --- a/conda_recipes/README.md +++ b/conda_recipes/README.md @@ -15,6 +15,71 @@ building new packages for either Linux or Windows into it on AWS Deadline Cloud. * Supports [rattler-build](https://prefix-dev.github.io/rattler-build/), and (as deprecated) [conda-build](https://docs.conda.io/projects/conda-build/). +## Recipe index + +This table covers all 49 immediate user-selectable recipe directories in `conda_recipes/`. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [After Effects 25.1](aftereffects-25.1/) | Packaging Adobe After Effects for Windows workers | You need the base After Effects 25 application | +| [After Effects plugin bundle](aftereffects-plugin-bundle/) | Bundling multiple supplied After Effects plugins | You want one versioned package for a studio plugin set | +| [After Effects Saber](aftereffects-saber/) | Installing the Saber plugin into an After Effects package | You need a small single-plugin recipe example | +| [AutoDock Vina 1.2.5](autodock-vina-1.2.5/) | Building the AutoDock Vina molecular docking application | You run virtual-screening or docking jobs | +| [AYON Launcher](ayon-launcher/) | Packaging the AYON pipeline runtime for headless publishing | Deadline Cloud workers must participate in an AYON pipeline | +| [Blender 4.2](blender-4.2/) | Packaging Blender 4.2 for Linux and Windows | Your jobs require Blender 4.2 | +| [Blender 4.3](blender-4.3/) | Packaging Blender 4.3 for Linux and Windows | Your jobs require Blender 4.3 | +| [Blender 4.4](blender-4.4/) | Packaging Blender 4.4 for Linux and Windows | Your jobs require Blender 4.4 | +| [Blender 4.5](blender-4.5/) | Packaging Blender 4.5 for Deadline Cloud | Your jobs require Blender 4.5 | +| [Blender 5.0](blender-5.0/) | Packaging Blender 5.0 with plugin-sync support | Your jobs require Blender 5.0 | +| [Blender 5.1](blender-5.1/) | Packaging Blender 5.1 with tested plugin-sync scripts | Your jobs require Blender 5.1 | +| [Blender FLIP Fluids](blender-flipfluids/) | Installing the FLIP Fluids add-on into Blender | You need a Blender simulation add-on recipe | +| [Blender plugin bundle](blender-plugin-bundle/) | Packaging multiple Blender add-on ZIP files together | You deliver a changing studio collection of Blender plugins | +| [Cinema 4D 2024](cinema4d-2024/) | Packaging Cinema 4D 2024 for Windows | Your jobs require Cinema 4D 2024 | +| [Cinema 4D 2025](cinema4d-2025/) | Packaging Cinema 4D 2025 for Windows | Your jobs require Cinema 4D 2025 | +| [Arnold for Cinema 4D 2025](cinema4d-c4dtoa-2025/) | Packaging the C4DtoA renderer plugin | Cinema 4D 2025 jobs render with Arnold | +| [INSYDIUM for Cinema 4D 2025](cinema4d-insydium-2025/) | Packaging supplied INSYDIUM plugin files | Cinema 4D jobs use X-Particles or related plugins | +| [Cinema 4D OpenJD adaptor](cinema4d-openjd/) | Packaging the Cinema 4D integration adaptor | Cinema 4D jobs need OpenJD session integration | +| [V-Ray for Cinema 4D 2025](cinema4d-vray-2025/) | Packaging the V-Ray plugin for Cinema 4D | Cinema 4D 2025 jobs render with V-Ray | +| [Deadline Cloud CLI](deadline/) | Building the `deadline` Python package and command line tools | Another package or worker environment needs the Deadline client | +| [Houdini 20.5](houdini-20.5/) | Packaging Houdini 20.5 with plugin activation support | Your jobs require Houdini 20.5 | +| [Houdini 21.0](houdini-21.0/) | Packaging Houdini 21.0 with Plugin Sync activation | Your jobs require Houdini 21 or frequently updated plugins | +| [Redshift for Houdini 2025](houdini-redshift-2025/) | Packaging Redshift for Houdini 2025 | Houdini 20.5 jobs render with Redshift | +| [Redshift for Houdini 2026](houdini-redshift-2026/) | Packaging Redshift for Houdini 2026 | Houdini 21 jobs render with Redshift | +| [V-Ray 7 for Houdini](houdini-vray-7/) | Packaging V-Ray for Houdini | Houdini jobs render with V-Ray 7 | +| [Infinigen 1.19.0](infinigen-1.19.0/) | Packaging the procedural scene generator and dependencies | You generate synthetic indoor or outdoor scenes | +| [KeyShot 2025](keyshot-2025/) | Packaging KeyShot 2025.2 for Windows | Your jobs render with KeyShot | +| [Maya 2025](maya-2025/) | Packaging Maya and configuring module/plugin search paths | Your jobs require Maya 2025 | +| [Maya 2026](maya-2026/) | Packaging Maya with Plugin Sync activation | Your jobs require Maya 2026 or frequently updated plugins | +| [Bifrost for Maya 2026](maya-bifrost-2026/) | Packaging Autodesk Bifrost for Maya | Maya 2026 jobs use Bifrost graphs or simulations | +| [Arnold for Maya 2025](maya-mtoa-2025/) | Packaging MtoA against the Maya 2025 package | Maya 2025 jobs render with Arnold | +| [Arnold for Maya 2026](maya-mtoa-2026/) | Packaging MtoA against the Maya 2026 package | Maya 2026 jobs render with Arnold | +| [Maya OpenJD adaptor](maya-openjd/) | Packaging the Maya integration adaptor | Maya jobs need OpenJD session integration | +| [Redshift for Maya 2025](maya-redshift-2025/) | Packaging Redshift 2025 for supported Maya versions | Maya jobs use Redshift 2025 | +| [Redshift for Maya 2026](maya-redshift-2026/) | Packaging Redshift 2026 for supported Maya versions | Maya jobs use Redshift 2026 | +| [V-Ray for Maya 2025](maya-vray-2025/) | Packaging V-Ray for Maya 2025 | Maya 2025 jobs render with V-Ray | +| [V-Ray for Maya 2026](maya-vray-2026/) | Packaging V-Ray for Maya 2026 | Maya 2026 jobs render with V-Ray | +| [V-Ray 7.2 for Maya 2025](maya-vray-7.2-2025/) | Pinning V-Ray 7.20.02 to Maya 2025 | You need the exact V-Ray 7.2/Maya 2025 combination | +| [V-Ray 7.2 for Maya 2026](maya-vray-7.2-2026/) | Pinning V-Ray 7.20.02 to Maya 2026 | You need the exact V-Ray 7.2/Maya 2026 combination | +| [Nerfstudio](nerfstudio/) | Packaging Nerfstudio and Gaussian Splatting extras | You train NeRF or Gaussian Splatting models | +| [Nuke 16.0](nuke-16.0/) | Packaging Nuke 16 with plugin activation support | Your compositing jobs require Nuke 16 | +| [Nuke 17.0](nuke-17.0/) | Packaging Nuke 17 with Plugin Sync activation | Your compositing jobs require Nuke 17 or changing plugins | +| [Nuke DENoise](nuke-denoise/) | Packaging the DENoise plugin for Nuke | Nuke jobs need the DENoise node on workers | +| [OpenJD adaptor runtime](openjd-adaptor-runtime/) | Packaging the shared runtime used by DCC adaptors | You are building Maya, Cinema 4D, or other adaptor packages | +| [Unreal Engine](unreal-engine/) | Packaging Unreal Engine, including custom source builds | Unreal workloads need an engine package on workers | +| [Unreal Engine OpenJD adaptor](unreal-engine-openjd/) | Packaging the Unreal integration adaptor | Unreal jobs need OpenJD session integration | +| [V-Ray standalone](vray/) | Packaging the standalone V-Ray renderer | Jobs render `.vrscene` files without a DCC | +| [VRED Core 2025](vredcore-2025/) | Packaging Autodesk VRED Core 2025 for Linux | Automotive visualization jobs require VRED 2025 | +| [VRED Core 2026](vredcore-2026/) | Packaging Autodesk VRED Core 2026 for Linux | Automotive visualization jobs require VRED 2026 | + +## Build and archive support + +[`conda_build_linux_package/`](conda_build_linux_package/) is the reusable OpenJD package-build job, +not a package recipe, so it is intentionally excluded from the recipe table. The top-level +`submit-package-job`, `submit-package-job.bat`, `submit-package-job-script.py`, and +`conda_platform_host_requirements.yaml` files are its submission and platform-support tooling. +[`archive_files/`](archive_files/) stores source or generated package archives and is also excluded; +it is not a user-selectable recipe. + ## Infrastructure setup prerequisites See the Deadline Cloud developer guide documentation @@ -22,7 +87,7 @@ See the Deadline Cloud developer guide documentation for instructions on how to set up a Deadline Cloud farm for building packages into an Amazon S3 conda channel. Name your package build queue "Package Build Queue" for the job submission command to select it by default. -To make this process faster and simpler, you can use our provided starter farm CloudFormation template [here](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/starter_farm) to deploy your Deadline infrastructure along with +To make this process faster and simpler, you can use our provided [starter farm CloudFormation template](../cloudformation/farm_templates/starter_farm/) to deploy your Deadline infrastructure along with a configured package build queue as documented in the Deadline Cloud developer guide linked above. To submit package build jobs, you will need the @@ -34,8 +99,7 @@ the CLI using the standalone submitter installer. ## Submitting package build jobs -The command `submit-package-job` is a CLI command for submitting package job provided in this `conda_recipes` -directory. It runs the script [submit-package-job-script.py](submit-package-job-script.py) using the Python +The `submit-package-job` command submits package-build jobs from this `conda_recipes` directory. It runs the script [submit-package-job-script.py](submit-package-job-script.py) using the Python for the Deadline Cloud CLI so it can rely on the `deadline` library dependency being available without additional setup. By default it will submit the job to a queue whose name starts with "Package", and will @@ -190,9 +254,9 @@ This allows you to customize the build process with any supported conda-build or The build arguments are parsed as space-separated values and added to the build command. Use quotes to group arguments that contain spaces. -## Recipe directory structure for `submit-package-build` +## Recipe directory structure for `submit-package-job` -The `submit-package-build` command expects rattler-build recipes in a specific directory structure. It's inspired by the +The `submit-package-job` command expects rattler-build recipes in a specific directory structure. It's inspired by the [conda-forge feedstock repository structure](https://conda-forge.org/docs/maintainer/adding_pkgs/#feedstock-repository-structure). **recipe** @@ -201,7 +265,7 @@ This folder contains the rattler-build recipe, including `recipe.yaml` and packa **deadline-cloud.yaml** -This file is used by the `submit-package-build` command to configure how it submits package build jobs +This file is used by the `submit-package-job` command to configure how it submits package build jobs to Deadline Cloud. **other files** @@ -294,7 +358,7 @@ condaPlatforms: #### The jobParameters list -This list lets the recipe provide parameter values to the job bundle that the `submit-package-job` comamnd uses. +This list lets the recipe provide parameter values to the job bundle that the `submit-package-job` command uses. The format is the same as the [parameter_values.yaml](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/build-job-bundle-parameters.html) file of a job bundle. diff --git a/containers/README.md b/containers/README.md index f8bdc8d5..9051b375 100644 --- a/containers/README.md +++ b/containers/README.md @@ -1,18 +1,14 @@ # AWS Deadline Cloud container samples -The container samples in this directory provide Dockerfiles and related resources -for building container images compatible with -[AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/) worker environments. +These samples provide Dockerfiles and related resources for building container images compatible with [AWS Deadline Cloud](https://aws.amazon.com/deadline-cloud/) worker environments. -Use these to build and test software locally with the same system libraries, -toolchains, and runtime environment as Deadline Cloud workers. +## Sample index -## Samples +This table covers both user-selectable container samples below `containers/`; supporting scripts and image assets remain with their sample. -### AL2023 worker-equivalent image +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [AL2023 worker-equivalent image](al2023-deadline/) | Reproducing a point-in-time service-managed fleet package set on Amazon Linux 2023 | You need to test packages or software against worker-compatible system libraries | +| [Blender application container](blender/blender-aswf-ci-base/) | Packaging Blender, the Deadline Cloud adaptor, and GPU support in an application image | You want to render Blender workloads from a purpose-built container | -The [al2023-deadline](al2023-deadline/) sample provides a Dockerfile that -replicates the package set of the Deadline Cloud service-managed fleet (SMF) -worker AMI on top of the base Amazon Linux 2023 image. Use it to build and test -[conda packages](../conda_recipes/) or other software that must be compatible -with the worker runtime. +The worker-equivalent image is useful for local compatibility work and package builds. The Blender image is an application-container example and includes its own deployment resources and instructions. diff --git a/docs/SAMPLE_README_TEMPLATE.md b/docs/SAMPLE_README_TEMPLATE.md index 161222da..b1e86399 100644 --- a/docs/SAMPLE_README_TEMPLATE.md +++ b/docs/SAMPLE_README_TEMPLATE.md @@ -1,41 +1,42 @@ # Sample title One or two sentences explaining what the sample accomplishes and when a user should choose it. ## What this sample demonstrates -* Deadline Cloud capability or OpenJD pattern. -* Important delivery, lifecycle, or integration choice. -* Expected result. +Describe the Deadline Cloud capability or OpenJD pattern, the important delivery or lifecycle choice, +and the expected result. Omit or combine this section if the introduction already makes that clear. ## Prerequisites -* Required AWS resources and permissions. -* Required local tools and versions. -* Required application, plugin, and license access. +Document required AWS resources and permissions, local tools and versions, and any application, +plugin, or license access users must provide. ## How it works -Describe the important components and data flow. Keep detailed architecture in canonical documentation -or a focused design document; make this section sufficient to operate the sample safely. +Explain the components and data flow needed to operate the sample safely. Link detailed architecture +to canonical documentation or a focused design document rather than repeating it here. ## Setup -Provide deterministic setup instructions, including configuration values users must replace. +Provide deterministic setup instructions and identify configuration values users must replace. ## Run or submit -Show the shortest working command first, then document meaningful variants. +Show the shortest working command first, followed by meaningful variants when useful. ```console # command @@ -43,12 +44,13 @@ Show the shortest working command first, then document meaningful variants. ## Parameters and outputs -Document inputs, defaults, output locations, and any artifacts or resources the sample creates. +Describe important inputs, defaults, output locations, and artifacts or resources the sample creates. +A compact table is often useful, but use whichever format fits the sample. ## Security, cost, and cleanup -State the permission boundary, secret-handling expectations, network exposure, billable resources, -and exact cleanup steps. Do not embed credentials or private data. +Call out permission boundaries, secret handling, network exposure, billable resources, licensing, +and cleanup steps that apply. Do not embed credentials or private data. ## Troubleshooting @@ -56,5 +58,5 @@ List likely, diagnosable failures and where users can find relevant worker, job, ## Related resources -* Link to the canonical AWS Deadline Cloud developer guide topic. -* Link to closely related samples in this repository. +Link canonical AWS Deadline Cloud documentation and closely related samples when those links help the +reader choose a next step. diff --git a/docs/sample-navigation.md b/docs/sample-navigation.md deleted file mode 100644 index 91fc2dd5..00000000 --- a/docs/sample-navigation.md +++ /dev/null @@ -1,86 +0,0 @@ -# Choose samples for your Deadline Cloud journey - -This page is a routing guide. It helps you choose a delivery and integration boundary, then points -to working samples. For architecture, security, and implementation details, follow the linked -[AWS Deadline Cloud developer guide](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/index.html) topics. - -## Run a new DCC or application - -Start with the canonical guidance for -[deploying custom software on workers](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html) -and [building jobs](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/building-jobs.html). -Choose the least privileged delivery method that fits the application: - -* **Already available on the worker:** request the existing package from a queue environment and - focus on the OpenJD job. Compare [Blender render](../job_bundles/blender_render/) with the - [default Conda queue environment](../queue_environments/conda_queue_env_from_console.yaml). -* **Versioned application or runtime, no administrator install required:** build a Conda package, - publish it to a channel, and activate it with a queue environment. Start with the - [Conda recipes guide](../conda_recipes/), [package build job](../conda_recipes/conda_build_linux_package/), - and [portable inline Conda environment](../queue_environments/conda_queue_env_inline.yaml). -* **Administrator install or machine-level configuration required:** use a - [host configuration script](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/smf-admin.html) - on service-managed fleets. Start with [3ds Max](../host_configuration_scripts/3dsmax/) or use the - [installer-to-host-config agent skill](../skills/host-config-from-installer/). -* **Container-first application:** use the [Blender container](../containers/blender/blender-aswf-ci-base/) - as the application-image example and the [AL2023 worker-equivalent image](../containers/al2023-deadline/) - for local compatibility work. For fully controlled hosts and images, evaluate customer-managed fleets. - -Then model the work: use [job development progression](../job_bundles/job_dev_progression/) to choose -parameters, steps, dependencies, and scripts; use [Maya CLI render](../job_bundles/maya_cli_render/) -for a small DCC command-line example. If the application needs a persistent integration process rather -than a simple CLI, review the OpenJD adaptor pattern in the developer guide before designing it. - -## Install custom plugins - -Read the canonical [Plugin Sync](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/plugin-sync.html) -and [custom software delivery](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html) -guidance first. Choose based on change rate, installation behavior, and privilege: - -* **Plugin Sync:** use it for supported DCC packages when plugin files can be staged in the job - attachments S3 bucket and copied into DCC-specific locations as the software environment activates. - It avoids rebuilding an application package for frequent plugin-file changes. See the implementations - in [Houdini 21.0](../conda_recipes/houdini-21.0/), [Blender 5.1](../conda_recipes/blender-5.1/), - [Maya 2026](../conda_recipes/maya-2026/), and [Nuke 17](../conda_recipes/nuke-17.0/). -* **Conda package:** use it when a plugin can install without administrator access and should be - versioned, resolved, cached, and activated with the DCC. Start with the - [Blender plugin bundle](../conda_recipes/blender-plugin-bundle/), - [After Effects plugin bundle](../conda_recipes/aftereffects-plugin-bundle/), or a renderer recipe - such as [V-Ray for Maya](../conda_recipes/maya-vray-2026/). -* **Host configuration:** use it when the vendor installer needs administrator privileges, writes - machine-wide state, installs services or drivers, or cannot be safely repackaged. Start with - [After Effects and Red Giant](../host_configuration_scripts/aftereffects/aftereffects_redgiant/), - [Cinema 4D and Red Giant](../host_configuration_scripts/cinema4d/cinema4d_redgiant/), or the - [3ds Max plugin combinations](../host_configuration_scripts/3dsmax/). - -Keep licensing separate from file delivery. The [license-limit submission hook](../submission_hooks/license_limits/) -shows one way to attach schedulable license requirements; the developer guide covers supported licensing models. - -## Integrate studio tools into the job lifecycle - -Use the canonical guides for [submitting from an application](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/from-within-applications.html), -[configuring jobs with environments](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/configure-jobs.html), -and [Deadline Cloud EventBridge events](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/eventbridge-integration.html). -Pick the narrowest lifecycle boundary that owns the behavior: - -* **Pre-submission:** validate policy, discover assets, or enrich the job before it reaches Deadline - Cloud. Use [submission hooks](../submission_hooks/) for cross-job policy such as - [license limits](../submission_hooks/license_limits/); use a custom in-application submitter when - artist context and DCC state are required, as in the [FuzzyPixel Maya submitter](../job_bundles/custom_submitters/fuzzypixel_maya/). -* **Session enter/exit:** initialize a costly runtime once for one or more tasks and tear it down at - session end. Queue environments apply to all compatible jobs; job environments travel with one - bundle. Compare the [queue environments](../queue_environments/) with the - [daemon-process](../job_bundles/job_env_daemon_process/), - [environment-variable](../job_bundles/job_env_vars/), and - [command-injection](../job_bundles/job_env_with_new_command/) examples. -* **Step and task actions:** put deterministic workload and publishing commands in OpenJD steps; - express ordering with step dependencies and parallelism with task parameter spaces. See - [Maya export then Arnold render](../job_bundles/maya_arnold_ass_export_render/) and - [Blender render, encode, and publish to Flow](../job_bundles/blender_turntable_to_flow/). -* **Service events:** react outside the worker after jobs or other resources change state. Route - EventBridge events to a durable integration target; start with - [job event Slack notifications](../cloudformation/notification_templates/job_events_slack_lambda/). - -Use [FFmpeg movie from job output](../job_bundles/ffmpeg_movie_from_job_output/) when post-processing -should be an explicitly submitted downstream job, and [the job attachments uploader](../utility_scripts/upload_to_job_attachments/) -when an external tool needs to stage assets before submission. diff --git a/host_configuration_scripts/3dsmax/README.md b/host_configuration_scripts/3dsmax/README.md index b305ba5e..5f5adc50 100644 --- a/host_configuration_scripts/3dsmax/README.md +++ b/host_configuration_scripts/3dsmax/README.md @@ -1,47 +1,60 @@ -# Sample Host Configuration scripts to install 3ds Max to Service Managed Fleets for AWS Deadline Cloud +# 3ds Max host configuration scripts for AWS Deadline Cloud -This folder contains sample host configuration scripts you can use to configure your AWS Deadline Cloud Windows Service Managed Fleets to install and run 3ds Max jobs on your workers. -Please see the README.md in each sample script for more steps on how to set it up. +These Windows host configuration scripts install 3ds Max and selected renderers or plugins on AWS Deadline Cloud service-managed fleet workers. 3ds Max requires administrative installation, so host configuration is the recommended delivery boundary. -## 3ds Max -3ds Max is a popular Digital Content Creation tool provided by Autodesk. 3ds Max runs on Windows, and requires administrative access to install onto a host. Because of the administrative requirement, Deadline Cloud recommends installing 3ds Max on to the worker host using Host Configuration Scripts. +## Sample index -- Note: While the example installs 3ds Max 2024 and 2025, Deadline Cloud's submitter supports 3ds Max 2026 and 2027 as well. The installation script should work equivalently for 3ds Max 2026 and 2027. +This table covers every immediate sample directory in `host_configuration_scripts/3dsmax/`. -## Generating a script for your version using Kiro +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [3ds Max 2024](3dsmax-2024/) | Installing the base 2024 application | You need 3ds Max 2024 without bundled render plugins | +| [3ds Max 2025 and Corona 13](3dsmax-2025-and-corona-13/) | Installing 3ds Max with Corona Renderer | Your 2025 scenes render with Corona 13 | +| [3ds Max 2025 and V-Ray](3dsmax-2025-and-vray/) | Installing 3ds Max and V-Ray together | Your 2025 scenes use V-Ray | +| [3ds Max 2025, V-Ray, and AEC plugins](3dsmax-2025-vray-and-aec-plugins/) | Adding Forest Pack, RailClone, and architectural visualization plugins | A 2025 V-Ray workload uses common AEC plugins | +| [3ds Max 2025, V-Ray, and tyFlow](3dsmax-2025-vray-and-tyflow/) | Installing V-Ray and tyFlow with 3ds Max | A 2025 workload combines rendering and particle simulation | +| [3ds Max 2027](3dsmax-2027/) | Installing the base 2027 application | You need 3ds Max 2027 without bundled render plugins | +| [3ds Max 2027 and Corona 14](3dsmax-2027-and-corona-14/) | Installing the first Corona version supporting 3ds Max 2027 | Your 2027 scenes render with Corona 14 | +| [3ds Max 2027 and V-Ray](3dsmax-2027-and-vray/) | Installing 3ds Max 2027 and V-Ray | Your 2027 scenes use V-Ray | +| [3ds Max 2027, V-Ray, and tyFlow](3dsmax-2027-and-vray-and-tyflow/) | Installing V-Ray and tyFlow with 3ds Max 2027 | A 2027 workload combines rendering and particle simulation | +| [3ds Max 2027, V-Ray, and AEC plugins](3dsmax-2027-vray-and-aec-plugins/) | Adding Forest Pack, RailClone, FloorGenerator, and MultiTexture | A 2027 V-Ray workload uses architectural visualization plugins | -The sample scripts in this folder cover specific version combinations. If you need a script for a different version of 3ds Max, a different renderer, or a different plugin combination, you can use [Kiro](https://kiro.dev) to generate one for you. +The samples currently cover 3ds Max 2024, 2025, and 2027. The Deadline Cloud submitter also supports 3ds Max 2026; adapt the nearest script for that installer and verify all product-specific silent-install options. + +## Generate a script for another version with Kiro + +The samples cover specific combinations. To create a script for another 3ds Max version, renderer, or plugin combination, you can use [Kiro](https://kiro.dev) with this repository. ### Prerequisites -- [Kiro](https://kiro.dev) installed -- This repository cloned and opened as a workspace in Kiro +* Install [Kiro](https://kiro.dev). +* Clone this repository and open it as the Kiro workspace. ### Steps -1. In the Kiro chat, type a request like: - - `"Create a host configuration script for 3ds Max 2026"` - - `"Create a host configuration script for 3ds Max 2026 and V-Ray 8"` - - `"Create a host configuration script for 3ds Max 2027 and Corona 14"` - - `"Add a host configuration script for 3ds Max 2026 with Forest Pack 10"` -2. Kiro will read the skill in `skills/3dsmax-host-config/SKILL.md` and generate the correct script and README for your version combination. -3. Review the generated script, fill in the `TODO` variables at the top (your S3 bucket name, installer file names), and configure your fleet. +1. Ask for the combination you need, for example: + * `Create a host configuration script for 3ds Max 2026` + * `Create a host configuration script for 3ds Max 2026 and V-Ray 8` + * `Create a host configuration script for 3ds Max 2027 and Corona 14` + * `Add a host configuration script for 3ds Max 2026 with Forest Pack 10` +2. Kiro reads [`skills/3dsmax-host-config/SKILL.md`](../../skills/3dsmax-host-config/SKILL.md) and generates a script and README for the requested combination. +3. Review and test the generated script, replace its `TODO` values with your S3 bucket and installer names, and then configure the fleet. -## Common Prerequisites -- Each sample requires you to have the 3ds Max installer in an S3 bucket in your AWS account. You can download the 3ds Max installer directly from Autodesk. See the next section for instructions on how to properly package the installer files. -- The host configuration scripts will download the installers from your S3 bucket, so your Fleet roles will need to be granted s3:GetObject permissions for the installers in S3. +## Common prerequisites -## Creating a 3ds Max installer archive in .zip format -Autodesk provides 3ds Max as a .7z archive which cannot be easily extracted from the command line without 3rd party software like [7-zip](https://www.7-zip.org/). To get around this problem, the examples in this folder expect a .zip archive instead. You can create a .zip archive with the following steps: +* Download each licensed installer from its vendor and place it in an S3 bucket in your account. +* Grant the fleet role `s3:GetObject` for the installer objects. +* Review installer versions, checksums where available, silent flags, licensing, and restart requirements before using a script. -1. Navigate to the [Products and Services page on the Autodesk Website](https://manage.autodesk.com/products), sign into your Autodesk account, and click View details under 3ds Max. -image - -2. Select your version and then click the dropdown icon next to the **Download** button and choose **Direct Download**. Note that this dropdown has different options than the one on the previous page. This will download a .7z and a .exe file. -image +## Creating a 3ds Max installer archive in .zip format -3. With both the .7z and .exe file in the same folder, double-click the .exe file and wait for it to extract the .7z for you. When the extraction is done, choose **Open in folder**. -image +Autodesk distributes 3ds Max as a `.7z` archive plus an extraction executable. The samples expect a ZIP so Windows can extract it without third-party software such as [7-Zip](https://www.7-zip.org/). -4. Finally, select all files in the resulting folder and right-click them to bring up the context menu. Choose **Send to > Compressed (zipped) folder**. -image +1. Open the [Autodesk Products and Services page](https://manage.autodesk.com/products), sign in, and choose **View details** for 3ds Max. + Autodesk product details page +2. Select the version, open the menu beside **Download**, and choose **Direct Download**. Keep the downloaded `.7z` and `.exe` in the same folder. + Autodesk direct download menu +3. Run the `.exe`, wait for extraction, and choose **Open in folder**. + Autodesk extraction completion dialog +4. Select all extracted files and choose **Send to > Compressed (zipped) folder**. + Windows compressed folder menu diff --git a/host_configuration_scripts/README.md b/host_configuration_scripts/README.md index b7a61def..08fda840 100644 --- a/host_configuration_scripts/README.md +++ b/host_configuration_scripts/README.md @@ -1,45 +1,46 @@ -# Sample Host Configuration Scripts for AWS Deadline Cloud Service Managed Fleets +# Sample host configuration scripts for AWS Deadline Cloud service-managed fleets -## Summary +Host configuration scripts run with elevated privileges on service-managed fleet workers. Use them for administrative tasks such as software installation, system tuning, GPU container setup, and worker restart behavior. -This directory contains sample scripts for configuring Service Managed Fleets on Windows and Linux. +## Sample index -Host Configuration Scripts allow you to perform administrative tasks, such as software installation, on your service-managed fleet workers. These scripts run with elevated privileges, giving you the flexibility to configure your workers for your system. +This table covers every immediate user-selectable group or leaf directory in `host_configuration_scripts/`. The application groups link to their own installer examples; implementation scripts remain inside each sample. -## Examples +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [3ds Max](3dsmax/) | Windows installation for multiple 3ds Max, renderer, and plugin combinations | You need 3ds Max on service-managed workers | +| [After Effects and Red Giant](aftereffects/) | Installing After Effects with optional Red Giant plugins | You need Adobe and Maxon software installed as administrator | +| [Cinema 4D and Red Giant](cinema4d/) | Installing Cinema 4D with Red Giant plugins | You need Cinema 4D and Maxon plugins on Windows workers | +| [Docker and NVIDIA Container Toolkit](docker_nvidia_container_toolkit/) | Installing Docker and the NVIDIA runtime on Linux GPU workers | Jobs run GPU-accelerated containers | +| [Linux font installation](linux_font_installation/) | Downloading fonts from S3 and registering them system-wide | Render applications need studio fonts | +| [Memory overcommit override](overcommit_override_for_smf/) | Changing `vm.overcommit_memory` on Linux workers | Large attachments or allocations fail despite free memory | +| [Passwordless sudo for job user](sudo_for_job_user/) | Granting `job-user` unrestricted sudo | A trusted workload requires root commands during tasks | +| [Swap for SMF](swap_for_smf/) | Creating and enabling a Linux swap file | A workload can temporarily exceed physical memory | +| [Worker configuration](worker_configuration/) | Windows system configuration such as page-file sizing | Workers need OS-level tuning before jobs start | +| [Worker reboot](worker_reboot/) | Rebooting Linux or Windows after host setup | Drivers, domain joins, or other changes require restart | -| Example | Platform | Description | -|---------|----------|-------------| -| [3dsmax](3dsmax/) | Windows | Install and configure Autodesk 3ds Max with various renderer plugins (V-Ray, Corona, tyFlow, AEC) | -| [aftereffects](aftereffects/) | Windows | Install After Effects with Red Giant plugins | -| [cinema4d](cinema4d/) | Windows | Install Cinema 4D with Red Giant plugins | -| [docker_nvidia_container_toolkit](docker_nvidia_container_toolkit/) | Linux | Install Docker and NVIDIA Container Toolkit for GPU-accelerated container workloads | -| [linux_font_installation](linux_font_installation/) | Linux | Install custom fonts from S3 for rendering applications | -| [sudo_for_job_user](sudo_for_job_user/) | Linux | Grant passwordless sudo to `job-user` for workloads that require root access | -| [swap_for_smf](swap_for_smf/) | Linux | Enable swap for memory-intensive workloads like ComfyUI and large diffusion models | -| [worker_configuration](worker_configuration/) | Windows | Configure Windows page file settings | -| [worker_reboot](worker_reboot/) | Linux / Windows | Reboot the worker after host configuration (e.g. after driver installs or domain joins) | +## Common uses -## Common Uses -- Installing software that requires administrator access -- Installing Docker containers -- Configuring GPU runtimes for containerized workloads -- Enabling swap for memory-intensive jobs +* Install software that requires administrator access. +* Install and configure container runtimes. +* Configure GPU support for containerized workloads. +* Tune memory, swap, fonts, or other host-wide settings. ## Setup -Copy and paste the sample scripts into the AWS Deadline Cloud console or use the AWS Deadline Cloud CLI to update your fleet. Follow [Run scripts as an administrator to configure workers](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/smf-admin.html) or reference the [AWS Deadline Cloud update-fleet CLI](https://docs.aws.amazon.com/cli/latest/reference/deadline/update-fleet.html) for more details. +Copy the selected script into the Deadline Cloud console or use the Deadline Cloud CLI to update the fleet. Follow [Run scripts as an administrator to configure workers](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/smf-admin.html) and the [`update-fleet` CLI reference](https://docs.aws.amazon.com/cli/latest/reference/deadline/update-fleet.html). Review every script and replace its configuration values before deployment because it runs with administrator privileges. ## Debugging -### CloudWatch Logs -Fleet Host Configuration logs are streamed to the Fleet’s log group, and specifically to a worker’s log stream. For example, `/aws/deadline/farm-12345/fleet-09876` is the log group for farm-12345, fleet-09876. Each worker will provision a dedicated log stream, for example worker-13579. Notice in the logs the log banner “Running Host Configuration Script” and “Finished running Host Configuration Script, exit code: 0”. The exit code of the script is included in the finished banner, and can be queried using CloudWatch tools. +### CloudWatch Logs -### CloudWatch Log Insights +Host configuration logs are streamed to the fleet log group and a stream dedicated to each worker. For example, `/aws/deadline/farm-12345/fleet-09876` can contain a `worker-13579` stream. Look for the “Running Host Configuration Script” and “Finished running Host Configuration Script, exit code: 0” banners. -CloudWatch Log Insights offers advanced capabilities to datamine the log information. For example, the following log insight query parses for the host configuration exit code, sorted by time. +### CloudWatch Logs Insights -``` +This query extracts host configuration exit codes in reverse chronological order: + +```text fields @timestamp, @message, @logStream, @log | filter @message like /Finished running Host Configuration Script/ | parse @message /exit code: (?\d+)/ diff --git a/job_bundles/README.md b/job_bundles/README.md index b70e9d1d..4613a46e 100644 --- a/job_bundles/README.md +++ b/job_bundles/README.md @@ -2,133 +2,83 @@ Job bundles are the easiest way to define your jobs for AWS Deadline Cloud. They encapsulate an [Open Job Description job template](https://github.com/OpenJobDescription/openjd-specifications/wiki) into a directory -with additional information such the files and directories that your Jobs need. Read more about +with additional information such as the files and directories that your jobs need. Read more about how to [build a job bundle](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/build-job-bundle.html) in the Deadline Cloud developer guide. See the [example Blender job submission](#example-blender-job-submission) below for more about submitting these jobs to your farm. ## Job bundle index -This list highlights just a few of the available job bundles. Browse the directory directly to discover the rest! - -### Jobs for the Deadline Cloud developer guide - -The [simple_job](simple_job/template.yaml) job bundle supplements the Deadline Cloud developer guide -[set up a developer farm section](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/getting-started-dev.html). -You can step through its instructions to get a developer-focused overview, using the AWS and Deadline Cloud CLIs to create a farm, queue, -and fleets, submit jobs, and see the details of how job attachments work. - -The job bundles [job_env_vars](job_env_vars/template.yaml), [job_env_with_new_command](job_env_with_new_command/template.yaml), and -[job_env_daemon_process](job_env_daemon_process/template.yaml) supplement the developer guide -[control the job environment section](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/control-the-job-environment.html). -These jobs show how to use [Open Job Description environments](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment). -Look at the [queue environment samples](../queue_environments) for more ideas. - -The job bundles [job_attachments_devguide](job_attachments_devguide) and [job_attachments_devguide_output](job_attachments_devguide_output) -supplement the developer guide [job attachments section](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/build-job-attachments.html). -Learn how data flow metadata on path job parameters and the job bundle `asset_references.yaml` file work together to describe the files -a job needs as input, and produce as output. When job bundles specify this metadata, they can work with either job attachments or shared file systems. - -### CLI job - -The [cli_job](cli_job/template.yaml) job bundle is a way to submit a multi-line bash script to Deadline Cloud. The script job parameter uses a multi-line -edit control, and a data directory job parameter lets you select a directory of data for the script to read from and write to. - -### GUI control showcase - -The [gui_control_showcase](gui_control_showcase/template.yaml) job bundle shows every GUI control that user interface metadata -on [Open Job Description job parameters](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#2-jobparameterdefinition) -support. - -### Job development progression - -Developing a job bundle can start small and simple, then grow complex as you add more job parameters, steps, and scripts. -The [job_dev_progression](job_dev_progression) directory contains a sequence of four job bundle development stages to help -manage that growing complexity. Read through the code and run these jobs on your Deadline Cloud farm to get a feel for it. - -### Digital content creation (DCC) render jobs - -The [blender_render](blender_render/template.yaml) job bundle shows how to support a CLI application in about 100 lines of YAML. A majority of -the template is metadata for the job parameters, defining the parameter names, types, defaults, and user interface metadata. -The step definition includes a parameter space to define a task for each frame for a range expression in the Frames job parameter, -and a short script that substitutes job parameters and the Frame task parameter into a script command for each task. - -* [3dsmax_vray_denoiser](3dsmax_vray_denoiser) - 3ds Max V-Ray rendering with smart frame chunking and VRIMG to EXR conversion -* [arnold_standalone_render](arnold_standalone_render) - Arnold standalone rendering of .ass files using `kick` -* [blender_render](blender_render/template.yaml) -* [keyshot_standalone](keyshot_standalone) -* [afterfx_render_one_task](afterfx_render_one_task) -* [maya_arnold_ass_export_render](maya_arnold_ass_export_render) - Export .ass from Maya and render with Arnold `kick` -* [maya_cli_render](maya_cli_render) -* [houdini_husk_usd_render](houdini_husk_usd_render) -* [nuke_render](nuke_render) -* [vray_render](vray_render/template.yaml) - -If you've created a similar job for your favorite DCC, see [CONTRIBUTING.md](../CONTRIBUTING.md) for how to add it here. - -### 3D Gaussian Splatting pipeline - -The [gsplat_pipeline](gsplat_pipeline/README.md) job bundle can take a video file as input and train a 3D Gaussian Splatting point cloud. -This example shows Deadline Cloud running a 3D reconstruction workload that uses CUDA GPUs for acceleration. - -### LLM evaluation with vLLM and lm-evaluation-harness - -The [vllm_lm_eval_leaderboard](vllm_lm_eval_leaderboard/README.md) job bundle evaluates multiple LLMs on a set of benchmarks in a single Deadline Cloud job using -[vLLM](https://github.com/vllm-project/vllm) for inference and [EleutherAI's lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness) for scoring. -Models are a STRING parameter sweep — each task starts vLLM for one model, runs every benchmark against it, then stops vLLM. A final aggregation step -produces a ranked leaderboard (CSV + Markdown). - -### Arnold standalone render - -The [arnold_standalone_render](arnold_standalone_render) job bundle renders Arnold `.ass` (Arnold Scene Source) files -using the `kick` command-line renderer from MtoA. This is useful for batch rendering pre-exported Arnold scenes without -requiring a full Maya session. It includes a sample Cornell box `.ass` file for testing. You can also download sample -scenes from the [Autodesk Arnold learning scenes page](https://help.autodesk.com/view/MAYAUL/2024/ENU/?guid=arnold_for_maya_tutorials_am_Learning_Scenes_html). - -### Maya Arnold export and render - -The [maya_arnold_ass_export_render](maya_arnold_ass_export_render) job bundle is a two-step pipeline that exports -`.ass` files from a Maya scene and renders them with Arnold `kick`. The export step opens the Maya scene once and -exports all frames, then the render step distributes per-frame `kick` tasks across workers. This is useful when you -want to render Arnold scenes directly from Maya files without pre-exporting. - -### Turntable job with Maya/Arnold - -The [turntable_with_maya_arnold](turntable_with_maya_arnold) job bundle is an example pipeline utility job for taking a 3D model -stored as an OBJ file, and creating a turntable render video. It demonstrates how someone comfortable with YAML -and scripting in a digital content creation (DCC) application can create utility jobs that are easy to submit from a GUI. - -### Tile render job with Maya/Arnold and FFmpeg - -The [tile_render_with_maya_arnold](tile_render_with_maya_arnold) job bundle demonstrates a two-step job that first renders -all the frames in tiles using a 3-dimensional task parameter space (Frame * TileNumberX * TileNumberY), and then assembles -all the tiles for each frame using FFmpeg. It includes a simple scene and default parameters to make it simple to try out. - -The [tile_render_maya_ffmpeg_for_blogpost](tile_render_maya_ffmpeg_for_blogpost) job bundle goes with the blog post -[Create a tile rendering job with modifications for AWS Deadline Cloud](https://aws.amazon.com/blogs/media/create-a-tile-rendering-job-with-modifications-for-aws-deadline-cloud/) -that walks through customizing one of the Deadline Cloud adaptors and writing a tile rendering job template. - -### Copy S3 prefix to job attachments - -The [copy_s3_prefix_to_job_attachments](copy_s3_prefix_to_job_attachments) job bundle can help you pre-populate a queue's -job attachment S3 bucket with data files by copying them from where they are already stored on S3. It scans the source -S3 prefix, then distributes the hashing and data copies across a number of workers you specify. Because job attachments -uses content-addressed storage for data files, users that later submit jobs with these files attached will not have to -upload them. - -### FFmpeg movie from job output - -The [ffmpeg_movie_from_job_output](ffmpeg_movie_from_job_output) job bundle downloads the rendered output of another -completed job in the same queue and uses FFmpeg to encode the image sequence into an MP4 video. This is useful as a -post-processing utility — after a render job completes, submit this job with the source Job ID to automatically -assemble the frames into a movie with configurable frame rate, quality, and resolution settings. - -### SSH via SSM Managed Node - -The [ssh_to_smf](ssh_to_smf/README.md) job bundle registers a Deadline Cloud worker as an -AWS Systems Manager hybrid managed node, enabling interactive SSH access via Session Manager for the duration of the job. -A submit script handles creating the SSM hybrid activation and passing the credentials as job parameters. Requires -one-time account setup (IAM role + advanced-instances tier). See the bundle's README for full setup instructions. +This table covers every immediate user-selectable sample directory or collection in `job_bundles/`. +Nested collections provide their own complete indexes where applicable. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [3ds Max V-Ray denoiser](3dsmax_vray_denoiser/) | V-Ray rendering, frame chunking, and VRIMG-to-EXR conversion with denoising data | You render 3ds Max scenes with V-Ray and need denoised EXR output | +| [After Effects one-task render](afterfx_render_one_task/) | Running an entire `aerender` frame range as one task | A composition must stay on one worker for the full render | +| [Arnold standalone render](arnold_standalone_render/) | Rendering Arnold `.ass` files with `kick` | Your scenes are already exported and do not need Maya at render time | +| [CARLA autonomous-driving simulation](autonomous_driving_carla/) | GPU container simulation, parameter sweeps, and multi-sensor capture | You want to distribute autonomous-driving scenarios | +| [Blender render](blender_render/) | A compact frame-parallel DCC render job with application packages | You need a minimal Blender or general CLI-render starting point | +| [Blender turntable to Flow](blender_turntable_to_flow/) | Rendering, encoding, thumbnail extraction, and publishing to Flow Production Tracking | You are building a render-to-review studio workflow | +| [Bash CLI job](cli_job/) | Submitting a multi-line shell script with an attached data directory | You want to run an ad hoc command-line workload | +| [Copy S3 prefix to job attachments](copy_s3_prefix_to_job_attachments/) | Distributed hashing and copying into content-addressable job attachment storage | Existing S3 datasets should be staged without workstation uploads | +| [Custom submitters](custom_submitters/) | A collection of in-application submission interfaces, including Maya | Artist context and DCC state require a custom submission UI | +| [ESMFold prediction](esmfold_predict/) | Parallel protein structure prediction, validation, and rendering | You need a GPU bioinformatics pipeline from FASTA to PDB outputs | +| [FFmpeg encode video](ffmpeg_encode_video/) | Encoding a numbered image sequence into MP4 | You need a standalone render-output encoding utility | +| [FFmpeg movie from job output](ffmpeg_movie_from_job_output/) | Downloading another job's output and encoding it downstream | Post-processing should be a separately submitted follow-up job | +| [FLUX.2 Klein LoRA](flux2_klein_lora/) | A collection for LoRA training and image generation on GPUs | You want to fine-tune FLUX.2 Klein and generate images | +| [GROMACS molecular dynamics](gromacs_md/) | Molecular-dynamics stages and scientific result visualization | You want to distribute protein simulation work | +| [Gaussian Splatting pipeline](gsplat_pipeline/) | Video-frame extraction, structure from motion, GPU training, and point-cloud output | You need a multi-step 3D reconstruction workflow | +| [GUI control showcase](gui_control_showcase/) | Every OpenJD job-parameter GUI control and UI metadata option | You are designing a bundle submission interface | +| [Houdini Husk USD render](houdini_husk_usd_render/) | USD dependency discovery and rendering with Husk/Karma | You need a concise USD render job with asset introspection | +| [Infinigen scene generation](infinigen_scene_gen/) | Procedural indoor and outdoor scene generation on GPU workers | You need synthetic photorealistic datasets | +| [Job attachments input guide](job_attachments_devguide/) | Input path metadata and attached script files | You are learning how job attachment inputs are materialized | +| [Job attachments output guide](job_attachments_devguide_output/) | Collecting declared job output files | You are learning how job attachment outputs are returned | +| [Job development progression](job_dev_progression/) | Four stages from inline commands to a tested bundled Python package | You want to grow a maintainable job without starting complex | +| [Daemon-process environment](job_env_daemon_process/) | Starting a background process once and sharing it across tasks | Application startup should be amortized within a session | +| [Environment variables](job_env_vars/) | Setting variables at job and step scope with OpenJD environments | Tasks need consistent runtime configuration | +| [Environment-provided command](job_env_with_new_command/) | Creating a command and adding it to `PATH` for job steps | Setup should expose reusable tooling to every step | +| [KeyShot standalone](keyshot_standalone/) | Frame-parallel KeyShot rendering on Windows | You render KeyShot scenes with the standalone interface | +| [List available Conda packages](list_available_conda_packages/) | Querying a Conda channel from a Deadline Cloud job | You need to inspect packages visible to workers | +| [Maya Arnold export and render](maya_arnold_ass_export_render/) | Exporting `.ass` once, then rendering frames with Arnold `kick` | You want separate DCC export and renderer-only steps | +| [Maya CLI render](maya_cli_render/) | Rendering a Maya scene with the CLI `Render` command | You need a small Maya command-line example | +| [Monte Carlo simulation](monte_carlo_simulation/) | Parallel financial simulation followed by result aggregation | You want a non-rendering fan-out/fan-in workload | +| [MuJoCo sim-to-policy](mujoco_sim_to_policy/) | Simulation data generation, policy training, and rendered evaluation | You need a multi-step robotics ML workflow | +| [Nuke render](nuke_render/) | Frame-parallel headless compositing with `nuke -x` | You need to render Nuke scripts on workers | +| [Pip package job](pip_package_job/) | Declaring Python dependencies for a pip queue environment | A shared queue environment should provide job packages | +| [Pip self-contained job](pip_self_contained_job/) | Creating and activating a pip environment inside one bundle | You cannot or do not want to configure the queue | +| [POV-Ray 3.7](povray-3.7/) | Raytracing with a Conda-provided command-line renderer | You want a portable, lightweight render example | +| [Redshift 2025](redshift-2025/) | Rendering Cinema 4D Redshift scenes with `redshiftCmdLine` | You need direct Windows Redshift command-line rendering | +| [Satellite classification](satellite_classification/) | Per-tile image classification followed by mosaic assembly | Independent input files should fan out and merge | +| [Simple job](simple_job/) | The smallest developer-guide OpenJD job bundle | You are submitting your first custom job | +| [SSH to SMF](ssh_to_smf/) | Temporary Linux SSH access through an SSM hybrid managed node | You need interactive debugging on a service-managed worker | +| [SSH to SMF on Windows](ssh_to_smf_windows/) | Temporary RDP, SSH, or PowerShell access through SSM | You need interactive debugging on a Windows worker | +| [Task chunking](task_chunking/) | A collection of contiguous and non-contiguous chunking patterns | Per-task startup overhead should be shared across frames | +| [Maya tile render blog sample](tile_render_maya_ffmpeg_for_blogpost/) | The adaptor customization and tiled-render workflow from the AWS blog | You are following the tile-rendering walkthrough | +| [Maya Arnold tiled render](tile_render_with_maya_arnold/) | A three-dimensional task space and FFmpeg tile assembly | Arnold images should render as distributed tiles | +| [Maya V-Ray tiled render](tile_render_with_maya_vray/) | V-Ray tile rendering followed by OpenImageIO assembly | You need tiled EXR output from Maya and V-Ray | +| [V-Ray Linux region render](tile_render_with_vray_linux/) | Region rendering, asset discovery, path mapping, and image merge | You render `.vrscene` files in parallel regions on Linux | +| [Maya Arnold turntable](turntable_with_maya_arnold/) | Building a scene around an OBJ, rendering frames, and encoding video | You need an easy-to-submit 3D asset review utility | +| [AutoDock Vina virtual screening](virtual_screening_vina/) | Parallel molecular docking and ranked result aggregation | You want to screen many ligands against a protein target | +| [vLLM evaluation leaderboard](vllm_lm_eval_leaderboard/) | Parallel model evaluation and final CSV/Markdown aggregation | You need to compare multiple LLMs across benchmarks | +| [V-Ray standalone render](vray_render/) | Rendering with a Conda-provided V-Ray executable | You need a basic standalone V-Ray bundle | +| [VRED render](vred_render/) | Headless VRED rendering, tiling, and Python API control | You render VRED scenes with VRED Core or Pro | +| [VTK visualization](vtk-latest/) | Running a VTK Python visualization script | You need a portable scientific visualization job | + +### Developer guide companion samples + +Several compact bundles are intended to be read alongside reference documentation. The [simple job](simple_job/template.yaml) +accompanies the developer guide's [developer farm walkthrough](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/getting-started-dev.html). +The [environment variables](job_env_vars/template.yaml), [environment-provided command](job_env_with_new_command/template.yaml), and +[daemon-process environment](job_env_daemon_process/template.yaml) bundles accompany [Control the job environment](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/control-the-job-environment.html) +and demonstrate [OpenJD environments](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment); +see the [queue environment samples](../queue_environments/) for session-wide alternatives. + +The [job attachments input](job_attachments_devguide/) and [output](job_attachments_devguide_output/) bundles accompany the developer guide's +[job attachments walkthrough](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/build-job-attachments.html). They show how OpenJD +`PATH` parameter data-flow metadata and `asset_references.yaml` jointly describe inputs and outputs, allowing the same bundle patterns to work with +job attachments or shared filesystems. The [GUI control showcase](gui_control_showcase/template.yaml) is the compact reference for every control +supported by [OpenJD job-parameter UI metadata](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#2-jobparameterdefinition). ## Example Blender job submission @@ -148,9 +98,7 @@ or use the `deadline.client.api.create_job_from_job_bundle` function in the [`de If you do not want to use the `deadline` Python package's support for features like job attachments, you can also submit the job template by calling the [deadline:CreateJob API](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateJob.html) directly. +## Example Husk USD render with asset introspection -## Example Husk USD Render with Asset Introspection - -The [houdini_husk_usd_render](houdini_husk_usd_render) sample shows how to use the Houdini Husk CLI USD renderer using a short job template and service-provided Conda packages. -Additionally, this sample shows how to write a custom asset introspection tool for job attachments, ensuring that only the required data is uploaded when using job attachments -while removing manual steps of the artists having to attach the required files. +The [Houdini Husk USD render](houdini_husk_usd_render/) sample shows how to use the Houdini Husk CLI USD renderer using a short job template and service-provided Conda packages. +It also shows how to write a custom asset introspection tool for job attachments, ensuring that only the required data is uploaded while removing manual steps for artists. diff --git a/job_bundles/flux2_klein_lora/README.md b/job_bundles/flux2_klein_lora/README.md index dff7bcee..a7deba98 100644 --- a/job_bundles/flux2_klein_lora/README.md +++ b/job_bundles/flux2_klein_lora/README.md @@ -17,7 +17,16 @@ These AWS Deadline Cloud job bundles use [diffusers](https://github.com/huggingf - AWS Deadline Cloud farm with a GPU-enabled queue (Linux fleet with NVIDIA GPU) - [Deadline Cloud CLI](https://github.com/aws-deadline/deadline-cloud) installed -## Job bundles +## Job bundle index + +This table covers every immediate job bundle in `flux2_klein_lora/`. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [LoRA training](lora_training/) | Fine-tuning FLUX.2 Klein from an image-and-caption dataset | You need to create a reusable adapter for a subject or style | +| [Image generation](image_generation/) | Parallel inference with a trained LoRA adapter | You have LoRA weights and want to generate a set of images | + +## Bundle details ### 1. lora_training diff --git a/job_bundles/job_dev_progression/README.md b/job_bundles/job_dev_progression/README.md index 4db9e683..da65a027 100644 --- a/job_bundles/job_dev_progression/README.md +++ b/job_bundles/job_dev_progression/README.md @@ -1,31 +1,33 @@ # Job Development Progression -When you're developing a job bundle to run on AWS Deadline Cloud, you will -likely start with something simple. As you add more options and split the workload -into smaller pieces that run in parallel, the complexity of your job -will grow. +When you're developing a job bundle to run on AWS Deadline Cloud, you will likely start with something simple. As you add more options and split the workload into smaller pieces that run in parallel, the complexity of your job will grow. -This directory documents four stages you can take your job bundle through as -you develop it. It starts with a single self-contained job template, and -ends at a Python package bundled with all the trappings like script entrypoints -and unit tests. +This directory documents four stages you can take your job bundle through as you develop it. It starts with a single self-contained job template and ends at a Python package bundled with script entry points and unit tests. -While this example is built around Python, the ideas are not Python-specific. -Feel free to adapt them to your language toolchain of choice. +While this example is built around Python, the ideas are not Python-specific. Adapt them to your language toolchain of choice. + +## Stage index + +This table covers every immediate sample directory in `job_dev_progression/`. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Stage 1: self-contained template](stage_1_self_contained_template/) | Keeping parameters and Python commands in one OpenJD template | You are prototyping a small job with minimal files | +| [Stage 2: bundled scripts](stage_2_bundled_scripts/) | Moving executable logic into scripts carried with the bundle | Inline commands are becoming hard to read or reuse | +| [Stage 3: shared script library](stage_3_bundled_scripts_shared_lib/) | Sharing common code across multiple bundled entry points | Several steps need the same helper logic | +| [Stage 4: bundled Python package](stage_4_bundled_python_package/) | Packaging modules, entry points, and unit tests together | The workload needs maintainable, testable application structure | ## Running jobs on Deadline Cloud To run these jobs on Deadline Cloud, you need a farm in your AWS account. The [quickstart in the Deadline Cloud console](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/getting-started.html) -or the [starter_farm sample CloudFormation template](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/starter_farm#readme) -are two ways to deploy one. In both cases, the farm will include a queue environment that can -provide a conda virtual environment for the jobs. +or the [starter farm CloudFormation sample](../../cloudformation/farm_templates/starter_farm/) are two ways to deploy one. +In both cases, the farm includes a queue environment that can provide a Conda virtual environment for the jobs. -With the Deadline Cloud CLI installed locally, e.g. from `pip install deadline`, -the following command will submit the first stage to your farm: +With the Deadline Cloud CLI installed locally, for example with `pip install deadline`, the following command submits the first stage to your farm: -```bash -$ deadline bundle submit stage_1_self_contained_template +```console +deadline bundle submit stage_1_self_contained_template ``` You can view your job and its log output from [Deadline Cloud monitor](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/working-with-deadline-monitor.html). @@ -33,36 +35,24 @@ You can view your job and its log output from [Deadline Cloud monitor](https://d ## Running jobs locally You can run jobs locally for development or as a way to use one code base locally and on your farm. -Use the [Open Job Description CLI](https://github.com/OpenJobDescription/openjd-cli#readme), -available to install from `pip install openjd-cli`. +Use the [Open Job Description CLI](https://github.com/OpenJobDescription/openjd-cli#readme), available from `pip install openjd-cli`. -In each job template, you'll find two parameters defined that specify the software -environment it expects to run in. You can either provide the necessary applications by -installing them yourself, or you can use an environment template to provide the conda packages. -See the [sample environment templates](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments#readme), -and note that you will need conda installed in order for them to work. +Each job template defines two parameters that specify the software environment it expects. You can install the applications yourself or use an environment template to provide the Conda packages. See the [sample queue environments](../../queue_environments/) and note that you need Conda installed for the inline Conda environments. -If you have set up all the required software in the `PATH` environment variable, you can run -the job directly. If `polars` is not installed, the job will fail with an error in the log -like `ModuleNotFoundError: No module named 'polars'`. +If the required software is already in `PATH`, run the job directly. If `polars` is unavailable, the log reports an error such as `ModuleNotFoundError: No module named 'polars'`. -```bash -$ openjd run stage_1_self_contained_template/template.yaml +```console +openjd run stage_1_self_contained_template/template.yaml ``` -If you run the jobs with the [console-equivalent Conda queue environment](../../queue_environments/conda_queue_env_from_console.yaml) -sample, it will create a conda virtual environment within the job's session directory. -This creates a fresh conda environment every time you run the job. +The [console-equivalent Conda queue environment](../../queue_environments/conda_queue_env_from_console.yaml) creates a fresh virtual environment in the job session directory: -```bash -$ openjd run --environment ../../queue_environments/conda_queue_env_from_console.yaml stage_1_self_contained_template/template.yaml +```console +openjd run --environment ../../queue_environments/conda_queue_env_from_console.yaml stage_1_self_contained_template/template.yaml ``` -If you run the jobs with the [conda_queue_env_improved_caching](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_improved_caching.yaml) -sample, it will take the hash of requested channels and packages, and use a named channel based on that hash. When -the named channel already exists, it will reuse it directly. After a configurable delay, it will refresh the packages, -and after a longer delay, it will remove the environment. +The [improved-caching Conda queue environment](../../queue_environments/conda_queue_env_improved_caching.yaml) names environments from a hash of channels and packages, reuses them, refreshes them after a configurable delay, and eventually removes stale environments: -```bash -$ openjd run --environment ../../queue_environments/conda_queue_env_improved_caching.yaml stage_1_self_contained_template/template.yaml +```console +openjd run --environment ../../queue_environments/conda_queue_env_improved_caching.yaml stage_1_self_contained_template/template.yaml ``` diff --git a/job_bundles/task_chunking/README.md b/job_bundles/task_chunking/README.md index 8cfa92cc..57e1857b 100644 --- a/job_bundles/task_chunking/README.md +++ b/job_bundles/task_chunking/README.md @@ -2,34 +2,26 @@ These samples demonstrate the [Task Chunking](https://github.com/OpenJobDescription/openjd-specifications/blob/mainline/rfcs/0001-task-chunking.md) extension for Open Job Description, which improves resource utilization by grouping multiple frames or tasks into chunks instead of processing them individually. -## Why Use Task Chunking? +## Why use task chunking? Render jobs often spend significant time loading applications and scene files before rendering each frame. Chunking amortizes this overhead by processing multiple frames or tasks per chunk, reducing total job runtime. -## Samples +## Sample index -### 1. Basic Contiguous Chunks (`basic_contiguous_chunks/`) +This table covers every immediate sample directory in `task_chunking/`. -A minimal example using `rangeConstraint: CONTIGUOUS`. Each chunk expands to a range like `"1-10"` or `"11-20"`. The script parses and prints the start and end frame numbers. +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Basic contiguous chunks](basic_contiguous_chunks/) | `CHUNK[INT]` with `rangeConstraint: CONTIGUOUS` and start/end parsing | Your command accepts consecutive frame ranges | +| [Basic non-contiguous chunks](basic_non_contiguous_chunks/) | `CHUNK[INT]` with arbitrary sparse frame sets | Your command accepts lists such as `1-3,5,7-20:2` | +| [Blender contiguous chunks](blender_render_with_contiguous_chunks/) | Applying contiguous task chunks to a frame render | Blender should load once for several consecutive frames | +| [Blender non-contiguous chunks](blender_render_with_non_contiguous_chunks/) | Applying scheduler-selected non-contiguous chunks to a frame render | Blender can render arbitrary frame lists per task | -### 2. Basic Non-Contiguous Chunks (`basic_non_contiguous_chunks/`) +The Blender variants add the `TASK_CHUNKING` extension and a `ChunkSize` parameter to the base +[Blender render](../blender_render/) sample. They change the frame task parameter from `INT` to +`CHUNK[INT]` and set a target runtime so the scheduler can adjust chunk size. -A minimal example using `rangeConstraint: NONCONTIGUOUS`. Chunks can be arbitrary frame sets like `"1-3,5,7-20:2"`. The script prints the frames assigned by the scheduler. - -### 3. Blender Render with Contiguous Chunks (`blender_render_with_contiguous_chunks/`) - -A real-world example converted from the existing [blender_render](../blender_render/template.yaml) job bundle to render job with contiguous chunks. - -### 4. Blender Render with Non-Contiguous Chunks (`blender_render_with_non_contiguous_chunks/`) - -A real-world example converted from the existing [blender_render](../blender_render/template.yaml) job bundle to render job with non-contiguous chunks. - -Changes from the original: -1. Added `extensions: [TASK_CHUNKING]` -2. Added `ChunkSize` parameter (default: 5) -3. Changed `Frame` from `type: INT` to `type: CHUNK[INT]` with `rangeConstraint: CONTIGUOUS` and `targetRuntimeSeconds: 600` - -## Template Structure +## Template structure ```yaml specificationVersion: 'jobtemplate-2023-09' @@ -45,18 +37,18 @@ steps: range: "{{Param.Frames}}" chunks: defaultTaskCount: 10 # Default frames per chunk - targetRuntimeSeconds: 600 # Optional: allows the scheduler to adjust the task count for chunks to match this runtime + targetRuntimeSeconds: 600 # Optional target used to adjust chunk size rangeConstraint: CONTIGUOUS # or NONCONTIGUOUS ``` -## Range Constraints +## Range constraints | Constraint | `{{Task.Param.Frame}}` expands to | Use when | -|------------|-----------------------------------|----------| -| `CONTIGUOUS` | `"1-10"`, `"11-20"` | App supports start/end frame arguments | -| `NONCONTIGUOUS` | `"1-3,5,7-10"` | App supports arbitrary frame lists | +|---|---|---| +| `CONTIGUOUS` | `"1-10"`, `"11-20"` | The application supports start/end frame arguments | +| `NONCONTIGUOUS` | `"1-3,5,7-10"` | The application supports arbitrary frame lists | ## References -- [RFC 0001: Task Chunking](https://github.com/OpenJobDescription/openjd-specifications/blob/mainline/rfcs/0001-task-chunking.md) -- [Open Job Description Specification](https://github.com/OpenJobDescription/openjd-specifications) +* [RFC 0001: Task Chunking](https://github.com/OpenJobDescription/openjd-specifications/blob/mainline/rfcs/0001-task-chunking.md) +* [Open Job Description specification](https://github.com/OpenJobDescription/openjd-specifications) diff --git a/queue_environments/README.md b/queue_environments/README.md index d4234ce7..5e2fb9e6 100644 --- a/queue_environments/README.md +++ b/queue_environments/README.md @@ -1,246 +1,139 @@ # AWS Deadline Cloud queue environments -## Introduction +Queue environments follow the [Open Job Description environment template specification](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas) and prepare software or licensing once per worker session. Jobs select packages through parameters such as `CondaPackages`, `RezPackages`, or `PipPackages`. -This directory holds sample queue environments you can use with Deadline Cloud. Queue environments -follow the environment template specification from -[Open Job Description](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas). +## Sample index -The Conda and Rez queue environments let you provide software applications to jobs in your -Deadline Cloud queue, so each job only needs a parameter value for `CondaPackages` or `RezPackages` -to tell it the list of packages to use. The pip queue environment does the same for Python -packages, so a job only needs to provide a value for `PipPackages`. +This table covers every queue environment YAML file in `queue_environments/`. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Console Conda environment](conda_queue_env_from_console.yaml) | Service-managed fleet `conda-queue-env` commands backed by Rattler | You want the environment created by console onboarding | +| [Inline Conda environment](conda_queue_env_inline.yaml) | Creating and deleting a Conda environment with portable bash | A customer-managed fleet has Conda but not service-provided helper commands | +| [Py-rattler Conda environment](conda_queue_env_pyrattler.yaml) | Solving and activating packages with the `py-rattler` library | You want faster solving and can accept its compatibility differences | +| [Cached Conda environment](conda_queue_env_improved_caching.yaml) | Reusing hash-named environments with service-managed fleet commands | Repeated package sets should avoid relinking on every job | +| [Cached inline Conda environment](conda_queue_env_inline_improved_caching.yaml) | Portable named-environment reuse and expiration logic | Customer-managed fleets need reusable Conda environments | +| [Rez environment](rez_queue_env.yaml) | Resolving packages from a shared Rez repository | Your studio already distributes software with Rez | +| [Pip environment](pip_queue_env.yaml) | Creating a Python `venv` and installing job-selected pip packages | Jobs need Python packages without Conda or Rez | +| [Disconnect UBL](disconnect_ubl_queue_env.yaml) | Removing Deadline Cloud Usage Based License environment variables | A queue must use only a custom license server | ## Create a queue environment for your queue -Here are steps to set up one of the sample queue environments. - -1. For the queue environment sample you wish to use, modify the default value for the parameter `CondaChannels` - or `RezRepositories` to be the source of your packages. Both Conda and Rez support shared file system - paths for this, while Conda also supports channels hosted on [Anaconda.org](https://anaconda.org), - web servers, and S3 buckets. -2. In Deadline Cloud, create a queue environment for your queue using the template you have modified. Read the topic - [create a queue environment](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) - in the user guide to learn how to create or update them in your queue. You can also create a queue environment with a - CLI command similar to: - ``` - $ aws deadline create-queue-environment \ - --farm-id FARM_ID \ - --queue-id QUEUE_ID \ - --priority 1 \ - --template-type YAML \ - --template file://conda_queue_env_improved_caching.yaml - ``` - -## Install git bash on Windows worker hosts - -The sample queue environments are written using bash script code that is portable to Windows. -You can use them with Windows customer-managed fleets by installing [Git for Windows](https://gitforwindows.org/) -on the worker hosts. Make sure that the git binary is in the PATH. +1. In the selected sample, change `CondaChannels`, `RezRepositories`, or package-index defaults to your package source. Conda and Rez support shared file-system paths; Conda also supports Anaconda.org, web, and S3 channels. +2. Follow [Create a queue environment](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) to add or update it. A CLI invocation looks like: + + ```console + aws deadline create-queue-environment \ + --farm-id FARM_ID \ + --queue-id QUEUE_ID \ + --priority 1 \ + --template-type YAML \ + --template file://conda_queue_env_improved_caching.yaml + ``` + +## Install Git Bash on Windows worker hosts + +These samples use bash that is portable to Windows. On Windows customer-managed fleets, install [Git for Windows](https://gitforwindows.org/) and put its Git binary on `PATH`. ## Install Conda and Rez on worker hosts -To use the queue environment samples from customer-managed fleets, you need to -provide [Conda](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) -or [Rez](https://rez.readthedocs.io/en/stable/installation.html) on worker hosts, -for example by installing them on your Amazon machine image (AMI). +Customer-managed fleets must provide [Conda](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) or [Rez](https://rez.readthedocs.io/en/stable/installation.html), for example in the AMI. -For Conda you must also apply the following setup steps so that `conda activate` and `conda deactivate` -are available within non-interactive bash shells. The scripts assume an `/opt/conda` install location -on Linux and `C:\Programs\Conda` install location on Windows. +For Conda, also make `conda activate` and `conda deactivate` available in non-interactive bash. The samples assume `/opt/conda` on Linux and `C:\Programs\Conda` on Windows. -Here is an example bash script that does this for Amazon Linux 2023: +Amazon Linux 2023: ```bash -# Turn on pam_env so that `/etc/environment` is used in non-interactive scripts +# Use /etc/environment in non-interactive scripts. echo 'auth required pam_env.so' >> /etc/pam.d/su -# Enable `conda activate ` in non-interactive scripts, echo 'BASH_ENV=/etc/bash_env' >> /etc/environment echo 'source /opt/conda/etc/profile.d/conda.sh' > /etc/bash_env ``` -Here is an example bash script that does this for Ubuntu: +Ubuntu: ```bash -# Enable `conda activate ` in non-interactive scripts, echo 'source /opt/conda/etc/profile.d/conda.sh' >> /usr/share/modules/init/bash ``` -Here is an example PowerShell script that does this for Windows: +Windows PowerShell: -```bash -# Set BASH_ENV so that it sources the conda command +```powershell [Environment]::SetEnvironmentVariable("BASH_ENV", "/etc/bash_env", "Machine") $Env:BASH_ENV = [Environment]::GetEnvironmentVariable("BASH_ENV", "Machine") echo @' echo 'source "/c/Programs/Conda/etc/profile.d/conda.sh"' > /etc/bash_env '@ | & "C:\Programs\Git\bin\bash" - ``` -## Submit Jobs - -One of the cool parts of queue environments and the Deadline Cloud submitters, such as -[deadline-cloud-for-blender](https://github.com/aws-deadline/deadline-cloud-for-blender), is that the submitters -will automatically add parameters in the queue environment for selecting the right Conda or Rez packages. +## Submit jobs -When you write your own job bundles, you can get the same result by including parameter definitions -for `CondaPackages` and/or `RezPackages` with a default value of the needed packages. -The [blender_render](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/job_bundles/blender_render/template.yaml) -job bundle sample illustrates this by providing them both with a default value `blender`. +Deadline Cloud submitters can add the package-selection parameters defined by a queue environment automatically. Custom bundles can get the same behavior by defining `CondaPackages`, `RezPackages`, or `PipPackages` with suitable defaults. The [Blender render template](../job_bundles/blender_render/template.yaml) demonstrates both Conda and Rez package parameters. -When your jobs run, these parameter values get passed to the queue environment, which creates -and activates a Conda or Rez virtual environment containing the requested packages and their dependencies. -The script commands for the job should run application binaries like `blender` without specifying -absolute paths. Entering the environment updates the `PATH` environment variable to provide -the correct binaries. +The queue environment creates and activates the selected virtual environment, so task commands should invoke applications such as `blender` from `PATH` instead of using absolute paths. -## The sample queue environments +## Environment behavior details -### Console Conda queue environment +### Console Conda environment -The file [conda_queue_env_from_console.yaml](conda_queue_env_from_console.yaml) is a copy of the queue environment -added by Deadline Cloud console onboarding flows. Its onEnter and onExit actions run the commands -`conda-queue-env-enter` and `conda-queue-env-exit` respectively. These commands are provided on -the workers of Deadline Cloud service-managed fleets. They are written using [Rattler](https://github.com/conda/rattler), which -generally runs faster than equivalent operations with Conda. +The console environment runs `conda-queue-env-enter` and `conda-queue-env-exit`, which are available on service-managed fleet workers and implemented with [Rattler](https://github.com/conda/rattler). Their relevant options are: -Here are the CLI options the enter and exit commands provide: -``` +```text Usage: conda-queue-env-enter [OPTIONS] [ENV_DIR] Arguments: [ENV_DIR] The location of the environment to be created Options: - -p, --packages - Space-separated list of Conda packages to install - -c, --channels - Space-separated list of Conda channels - --channel-priority - Channel priority: "strict" or "disabled" [default: strict] - --persist-envs-hashed - Persist environments in hash-named subdirectories under this root dir. Enables environment reuse across jobs - --update-after-minutes - Minutes before updating a persisted environment (default: 600 = 10 hours) [default: 600] - -v, --verbose... - Increase logging verbosity (-v for debug, -vv for trace) - --windows-activation-shell - Shell to use for conda activation on Windows: "bash" (default) or "cmd" [default: bash] - --print-env0 - Print all environment variables as null-delimited KEY=VALUE pairs and exit. Used internally by bash activation to capture native OS paths + -p, --packages Space-separated packages + -c, --channels Space-separated channels + --channel-priority "strict" or "disabled" + --persist-envs-hashed Reuse hash-named environments + --update-after-minutes Refresh age; default 600 + -v, --verbose... Increase logging verbosity + --windows-activation-shell "bash" or "cmd" + --print-env0 Print null-delimited environment values -h, --help - Print help -``` ``` + +```text Usage: conda-queue-env-exit [OPTIONS] Options: - --persist-envs-hashed - Root directory containing hash-named persisted environments - --cleanup-after-hours - Remove persisted environments not updated within this many hours (default: 96) [default: 96] - -v, --verbose... - Increase logging verbosity (-v for debug, -vv for trace) + --persist-envs-hashed Root containing persistent environments + --cleanup-after-hours Stale cleanup age; default 96 + -v, --verbose... Increase logging verbosity -h, --help - Print help ``` -The `conda-queue-env` commands on service-managed fleets support creating persistent environments that can be reused across -multiple jobs, but this functionality is not enabled by default on the console queue environment. See the `conda_queue_env_improved_caching.yaml` -queue environment for a sample that enables this functionality. +Persistent reuse is not enabled in the console template by default. The cached Conda sample enables it. -To get similar functionality as the `conda_queue_env_from_console.yaml` environment on customer-managed fleets, -see the next sample `conda_queue_env_inline.yaml`. +### Inline Conda environment -### Conda queue environment using Conda written inline +The inline sample directly runs Conda and works on customer-managed fleets. It creates one environment per OpenJD session and deletes it afterward. Conda still caches downloaded and expanded packages, but each session pays the cost of linking a new environment. Unlike the console environment's strict channel priority, it uses Conda's flexible priority for multiple channels. -The file [conda_queue_env_inline.yaml](conda_queue_env_inline.yaml) has nearly the same behavior -as the console Conda queue environment, but it does not use Rattler and directly runs Conda to create the virtual environment. -There is a small difference in functionality when using multiple conda channels; the console queue environment uses `strict` channel priority, -whereas this queue environment, as well as other queue environments not using Rattler, use `flexible` channel priority. +### Py-rattler Conda environment -The behavior of this queue environment is to create a new Conda virtual environment for every Open Job -Description session that runs on a worker host, and then delete the environment when it is done. -Conda keeps a cache of the downloaded packages, and the expanded form of those packages, so it will not -repeatedly re-download the same applications, but each session will have the overhead of linking all -packages into the virtual environment. Look at the samples `conda_queue_env_improved_caching.yaml` and -`conda_queue_env_inline_improved_caching.yaml` for queue environments that can reuse virtual -environments across multiple jobs. +The py-rattler sample provides similar behavior through [py-rattler](https://conda.github.io/rattler/py-rattler/). It generally solves faster, but `pip` is not automatically included with `python`, it rejects some syntax accepted by Conda (for example `colmap=*=gpu*`), and solver errors can include less diagnostic detail. -### Conda queue environment using the py-rattler library +### Conda queue environment with improved caching -The file [conda_queue_env_pyrattler.yaml](conda_queue_env_pyrattler.yaml) provides the same functionality as -the above Conda queue environments, but uses the [py-rattler library](https://conda.github.io/rattler/py-rattler/). -Rattler is a library that provides common functionality used within the conda ecosystem. It's written -in Rust and tries to provide a clean API to its functionalities. The environments it creates are almost the same, -but we found that py-rattler does not include 'pip' alongside 'python' by default, so if you need pip you must -add it explicitly. It also raises an error for a subset of syntax that conda accepts, such as 'colmap=*=gpu*'. +The service-managed cached sample stores reusable environments under `~/.persistent_envs` by default. Change both enter and exit actions if you choose another path. -Testing has shown that this queue environment generally runs faster than the above when on the same instance types, -but the error messages it produces when failing to solve for a virtual environment do not include as -much detail to help diagnose what happened. +### Conda queue environment with improved caching using Conda written inline -### Rez queue environment +The cached inline sample implements the same idea with named Conda environments on customer-managed fleets. Its default name hashes channels and packages; jobs can also specify a name. Separate settings control how long an environment is reused before package refresh and when stale environments are deleted. -The file [rez_queue_env.yaml](rez_queue_env.yaml) provides the same functionality as -the above Conda queue environments, but for the Rez package manager. The queue environment will work in a -farm using customer-managed fleets that have a shared file system for the Rez package repository. +### Rez environment -### Conda queue environment with improved caching +The Rez sample resolves software from a shared package repository. Use it with customer-managed fleets that can access that repository. -The file [conda_queue_env_improved_caching.yaml](conda_queue_env_improved_caching.yaml) enables -the same virtual environments to be reused across multiple jobs via additional command line arguments to the `conda-queue-env-enter`, -and `conda-queue-env-exit` commands provided on service-managed fleets. This can give significant performance improvements when -running many jobs with the same package requirements. +### Pip environment -The queue environment is configured to store persistent environments under `~/.persistent_envs`. To store persistent environments -under a different directory, the `onEnter` and `onExit` actions can be modified to reference a different path. +The pip sample uses Python's standard-library `venv` module, installs `PipPackages`, and activates the environment for subsequent steps. If `PipPackages` is empty it does nothing, allowing mixed queues. `PipIndexUrl` and `PipExtraIndexUrls` support private indexes such as [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/). -To get environment reuse functionality on customer-managed fleets, you can use the following sample. +Workers need `python3` or `python` on `PATH`; service-managed fleets provide one. Compare the [pip package job](../job_bundles/pip_package_job/) with the [self-contained pip job](../job_bundles/pip_self_contained_job/) when deciding whether configuration belongs on the queue or in one bundle. -### Conda queue environment with improved caching using Conda written inline +### Disconnect UBL -The file [conda_queue_env_inline_improved_caching.yaml](conda_queue_env_inline_improved_caching.yaml) extends the -capabilities of the Conda queue environment with a mechanism to reuse Conda virtual environments -across multiple jobs. This additional cache management is more complex, but the performance benefits -from environment reuse can be significant when running many jobs with the same package requirements. - -The core enhancement of this queue environment is to use named Conda environments that can be shared across -jobs. The default environment name uses the hash of the Conda channels and packages, or you can explicitly -set the name in the job. It also includes a parameter for how long to use an environment without running a package -update, so that most of the time it will take seconds to activate an environment that's being reused. - -### Pip queue environment - -The file [pip_queue_env.yaml](pip_queue_env.yaml) lets you provide Python packages to jobs using -[pip](https://pip.pypa.io/) and the standard library [venv](https://docs.python.org/3/library/venv.html) -module, rather than a package manager like Conda or Rez. When a job provides a `PipPackages` parameter -value, the queue environment creates a Python virtual environment in the session working directory, -installs the requested packages into it with pip, and activates it so subsequent steps run with those -packages available. If `PipPackages` is empty, the queue environment does nothing, so it is safe to add -to a queue that also runs jobs which do not use it. - -The `PipIndexUrl` and `PipExtraIndexUrls` parameters let jobs install from a private package index, such -as an [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/) repository, instead of the default -[PyPI](https://pypi.org/) index. - -Unlike Conda and Rez, pip and venv are included with Python itself, so worker hosts only need a `python3` -(or `python`) interpreter on the `PATH`. Deadline Cloud service-managed fleets provide one. The -[pip_package_job](../job_bundles/pip_package_job) job bundle shows how to submit a job that uses this -queue environment, and [pip_self_contained_job](../job_bundles/pip_self_contained_job) shows the same -pip environment defined inline in a job bundle when you do not want to configure a queue environment. - -### Disconnect UBL queue environment - -The file [disconnect_ubl_queue_env.yaml](disconnect_ubl_queue_env.yaml) unsets Deadline Cloud Usage Based -License (UBL) environment variables. Use this queue environment if you want to turn off all connections to -Deadline Cloud UBL for your queue and force the use of a custom license server (see the -[Bring Your Own License documentation](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/smf-byol.html)). - -This queue environment should be run before any other queue environments (for example, by setting the priority to 0) -so that connections to your custom floating licenses (such as RLM) in other queue environments are not -accidentally removed. - -Please note that this is a sample, additional UBL environment variables may be -added in the future. +The disconnect environment unsets Deadline Cloud Usage Based License variables so jobs use a custom license server. Give it a higher-precedence position than other environments, for example priority `0`, so later licensing setup is not removed. Review [Bring Your Own License](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/smf-byol.html). Additional UBL variables can be introduced over time, so review the template against current service behavior before deployment. diff --git a/submission_hooks/README.md b/submission_hooks/README.md new file mode 100644 index 00000000..40681739 --- /dev/null +++ b/submission_hooks/README.md @@ -0,0 +1,13 @@ +# AWS Deadline Cloud submission hooks + +Submission hooks inspect or modify job bundles immediately before the Deadline Cloud CLI submits them. Use them for workstation-side policy that should apply consistently across jobs. + +## Sample index + +This table covers every immediate sample directory in `submission_hooks/`. + +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [License limits](license_limits/) | Injecting fixed-license host requirements into every step before submission | Artists should receive centrally enforced license scheduling without editing job templates | + +Read the sample README for workstation deployment, security implications, Deadline Cloud Limit setup, and testing instructions. diff --git a/terraform/README.md b/terraform/README.md index 505db7e3..edfa94d2 100644 --- a/terraform/README.md +++ b/terraform/README.md @@ -1,28 +1,23 @@ # AWS Deadline Cloud sample Terraform configurations -With [Terraform](https://www.terraform.io/), you can use infrastructure as code to deploy infrastructure -such as a Deadline Cloud farm to your AWS account. Use the samples provided here directly or as a starting point -to create your own custom configurations. +With [Terraform](https://www.terraform.io/), you can deploy Deadline Cloud infrastructure as code. These configurations use the [AWS Cloud Control (AWSCC) provider](https://registry.terraform.io/providers/hashicorp/awscc/latest), which supports AWS Deadline Cloud resource types. -These Terraform configurations use the [AWS Cloud Control (AWSCC) provider](https://registry.terraform.io/providers/hashicorp/awscc/latest) -for Deadline Cloud resources, which offers full support for AWS Deadline Cloud resource types. +## Sample index -## Starter farm +This table covers every immediate sample directory below `terraform/farm_templates/`. -The [starter_farm](farm_templates/starter_farm/) sample Terraform configuration deploys a Deadline Cloud farm you can use to run jobs that render images, -reconstruct 3D scenes, or transform your data in custom ways. This is the Terraform equivalent of the -[CloudFormation starter_farm template](../cloudformation/farm_templates/starter_farm/). -Sample jobs to submit are available in the [deadline-cloud-samples on GitHub](https://github.com/aws-deadline/deadline-cloud-samples). -Deadline Cloud provides many integrated submitter plugins for applications, and you can build your own jobs. The deployed farm includes the ability to -[build custom conda packages](../conda_recipes/README.md) for providing additional application support. +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Starter farm](farm_templates/starter_farm/) | A farm, queue, service-managed fleets, and package-build support using AWSCC resources | Your team manages infrastructure with Terraform | + +The starter farm can run rendering, reconstruction, and data-transformation jobs from the [job bundle index](../job_bundles/). It is the Terraform equivalent of the [CloudFormation starter farm](../cloudformation/farm_templates/starter_farm/) and includes support for [building custom Conda packages](../conda_recipes/). ## CloudFormation vs Terraform -Both CloudFormation and Terraform configurations in this repository create equivalent infrastructure. -Choose based on your team's preferences and existing tooling: +Both starter configurations create equivalent infrastructure. Choose based on your team's existing tooling and state-management practices. | Aspect | CloudFormation | Terraform | -|--------|---------------|-----------| -| Provider | AWS native | HashiCorp | +|---|---|---| +| Provider | AWS native | HashiCorp AWSCC | | Deadline resources | `AWS::Deadline::*` | `awscc_deadline_*` | | State | Managed by AWS | Local or remote backend | diff --git a/utility_scripts/README.md b/utility_scripts/README.md index b7c17605..03826157 100644 --- a/utility_scripts/README.md +++ b/utility_scripts/README.md @@ -1,40 +1,44 @@ # AWS Deadline Cloud utility scripts -This directory contains sample utility scripts to help you work with AWS Deadline Cloud. These scripts provide -command-line tools for common tasks like managing job attachments, working with queues, and automating workflows. +These standalone command-line tools support common Deadline Cloud workflows outside a job bundle. ## Script index -### Upload to Job Attachments +This table covers every immediate user-selectable sample directory in `utility_scripts/`. -The [upload_to_job_attachments](upload_to_job_attachments) script uploads files and directories from your local -workstation or server to AWS Deadline Cloud job attachments storage. It uploads files to the job attachments S3 bucket in -content-addressable storage format, allowing subsequent Deadline Cloud jobs to use the data without re-uploading. This is useful -for pre-populating job attachments with large datasets that multiple jobs will use. +| Sample | What it demonstrates | Start here when | +|---|---|---| +| [Upload to job attachments](upload_to_job_attachments/) | Uploading files into content-addressable job attachment storage with deduplication | Large or reused datasets should be staged before job submission | + +## Upload to job attachments + +The uploader accepts files and directories from a workstation or server and places them in a queue's job attachments S3 bucket. Subsequent jobs can use the data without uploading unchanged content again. Key features: -- Upload individual files or entire directories recursively -- Multi-threaded uploads for better performance -- Automatic deduplication (skips files already in S3) -- Generates JSON manifest of uploaded files -- Two configuration modes: direct S3 specification or queue lookup - -Example usage: -```bash -# Upload using direct S3 specification -python upload_to_job_attachments.py \ + +* Upload individual files or directories recursively. +* Use multiple upload threads. +* Skip content that is already present in S3. +* Generate a JSON manifest. +* Configure storage directly or discover it from a farm and queue. + +```console +# Upload using an explicit S3 location +python upload_to_job_attachments/upload_to_job_attachments.py \ --s3-bucket my-bucket \ --s3-prefix job-attachments \ --paths /path/to/files /path/to/directory -# Upload using queue lookup -python upload_to_job_attachments.py \ +# Discover storage from a queue +python upload_to_job_attachments/upload_to_job_attachments.py \ --farm-id farm-1234567890abcdef \ --queue-id queue-1234567890abcdef \ --paths /path/to/files /path/to/directory ``` -## Additional Resources +See the [sample README](upload_to_job_attachments/) for installation, permissions, options, and manifest details. + +## Additional resources * [AWS Deadline Cloud user guide](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/index.html) * [AWS Deadline Cloud developer guide](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/index.html) From b32d0752d3711f151a862277e399650ffe03d7fe Mon Sep 17 00:00:00 2001 From: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> Date: Wed, 15 Jul 2026 09:00:10 -0700 Subject: [PATCH 4/6] docs: simplify root navigation Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- README.md | 43 +++---------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 283b75b0..b58ff3c2 100644 --- a/README.md +++ b/README.md @@ -10,40 +10,12 @@ Start with the task you want to complete; each sample stays self-contained in it | Deploy a farm | [CloudFormation starter farm](cloudformation/farm_templates/starter_farm/) or [Terraform starter farm](terraform/farm_templates/starter_farm/) | | Learn how a job is structured | [Job development progression](job_bundles/job_dev_progression/) or the [minimal job](job_bundles/simple_job/) | | Render with a DCC | [Blender render](job_bundles/blender_render/), [Maya CLI render](job_bundles/maya_cli_render/), or browse the [job bundles](job_bundles/) | -| Run a new DCC or application | Follow the [application delivery path](#run-a-new-dcc-or-application), then browse jobs, packages, host scripts, or containers | -| Deliver custom plugins | Follow the [plugin delivery path](#deliver-custom-plugins), then compare package, Plugin Sync, and host-install examples | -| Connect studio systems | Follow the [job lifecycle path](#integrate-studio-tools-into-the-job-lifecycle) for submission, session, task, and event integrations | +| Run a new DCC or application | Read about [custom software delivery](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html), then browse [Conda recipes](conda_recipes/), [host configuration scripts](host_configuration_scripts/), [containers](containers/), and [job bundles](job_bundles/) | +| Deliver custom plugins | Read about [Plugin Sync](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/plugin-sync.html), then compare [plugin packages](conda_recipes/), [host installations](host_configuration_scripts/), and [queue environments](queue_environments/) | +| Connect studio systems | Browse [submission hooks](submission_hooks/), [custom submitters](job_bundles/custom_submitters/), [queue environments](queue_environments/), and [event notifications](cloudformation/notification_templates/) | | Find a specific example | Use the [repository map](#repository-map), then browse that area's complete category table | | Create a sample with an AI agent | Inspect [skills](skills/) for a matching task guide | -### Run a new DCC or application - -Read the developer guide on [deploying custom software on workers](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html) -and [building jobs](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/building-jobs.html), then choose the narrowest delivery boundary: -use [Conda recipes](conda_recipes/) and [queue environments](queue_environments/) for versioned user-space software, -[host configuration scripts](host_configuration_scripts/) for privileged installation, or [containers](containers/) for container-first workloads. -Model the work with [job development progression](job_bundles/job_dev_progression/) or start from a DCC example in the -[job bundle table](job_bundles/README.md#job-bundle-index). - -### Deliver custom plugins - -Start with the developer guide for [Plugin Sync](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/plugin-sync.html) -and [custom software delivery](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/deploy-custom-software.html). -Use Plugin Sync for frequently changing supported-DCC files, a [Conda recipe](conda_recipes/) for versioned plugins that install without -administrator access, or a [host configuration script](host_configuration_scripts/) for machine-wide vendor installers. -Compare the [Blender plugin bundle](conda_recipes/blender-plugin-bundle/), [Houdini 21 with Plugin Sync](conda_recipes/houdini-21.0/), -and [3ds Max plugin combinations](host_configuration_scripts/3dsmax/). - -### Integrate studio tools into the job lifecycle - -Use the canonical guides for [submitting from an application](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/from-within-applications.html), -[configuring jobs with environments](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/configure-jobs.html), and -[Deadline Cloud EventBridge events](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/eventbridge-integration.html). -Choose [submission hooks](submission_hooks/) or a [custom submitter](job_bundles/custom_submitters/) before submission; -[queue environments](queue_environments/) or job environments for session setup; OpenJD steps for task and publishing actions, as in -[Blender turntable to Flow](job_bundles/blender_turntable_to_flow/); and [notification templates](cloudformation/notification_templates/) -for service-event integrations. - ## Quick start 1. Configure a Deadline Cloud farm and install the @@ -65,15 +37,6 @@ for service-event integrations. Read each sample's README before deployment or submission. Samples can create billable AWS resources or run licensed software; review parameters, IAM permissions, licensing, and cleanup instructions first. -## Featured examples - -* **[Job development progression](job_bundles/job_dev_progression/)** grows one OpenJD job through four maintainable stages. -* **[Blender turntable to Flow Production Tracking](job_bundles/blender_turntable_to_flow/)** renders, encodes, and publishes review media as a multi-step studio workflow. -* **[Plugin bundle for Blender](conda_recipes/blender-plugin-bundle/)** packages a collection of add-ons for repeatable delivery. -* **[Cached Conda queue environment](queue_environments/conda_queue_env_improved_caching.yaml)** reuses software environments across sessions. -* **[License-limit submission hook](submission_hooks/license_limits/)** injects host requirements before submission. -* **[After Effects and Red Giant host configuration](host_configuration_scripts/aftereffects/aftereffects_redgiant/)** installs software that needs administrative privileges. - ## Repository map | Area | Use it for | From dbc597f67e69afd1e8b70436dce5cbf491c32e89 Mon Sep 17 00:00:00 2001 From: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> Date: Wed, 15 Jul 2026 09:32:39 -0700 Subject: [PATCH 5/6] ci: scope PR link checks to changed files, sweep weekly On pull requests, only the Markdown files the PR changed have their live external links checked, keeping the required signal fast and resilient to unrelated third-party outages. The full repository is swept on the weekly schedule and on manual dispatch; a scheduled failure opens or updates a link-rot tracking issue instead of failing silently. check_external_links.py now accepts explicit Markdown paths and ignores any that are not tracked Markdown files. Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- .github/workflows/static_validation.yml | 78 ++++++++++++++++++++-- scripts/check_external_links.py | 27 +++++++- scripts/check_markdown_links.py | 2 + scripts/tests/test_check_external_links.py | 16 +++++ 4 files changed, 118 insertions(+), 5 deletions(-) diff --git a/.github/workflows/static_validation.yml b/.github/workflows/static_validation.yml index ddd1d133..a53770d9 100644 --- a/.github/workflows/static_validation.yml +++ b/.github/workflows/static_validation.yml @@ -30,8 +30,12 @@ jobs: - name: Run repository validation run: python3 scripts/validate_repository.py - external-links: - name: Live external Markdown links + # On pull requests, only the Markdown files the PR changed have their live external + # links checked. This keeps the required PR signal fast and resilient to unrelated + # third-party outages. The whole repository is swept on the weekly schedule below. + changed-external-links: + name: Live external links (changed files) + if: github.event_name == 'pull_request' runs-on: ubuntu-latest timeout-minutes: 30 permissions: @@ -40,6 +44,72 @@ jobs: - name: Check out repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: + fetch-depth: 0 persist-credentials: false - - name: Check live external links - run: python3 scripts/check_external_links.py + - name: Check changed Markdown external links + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + run: | + set -euo pipefail + # NUL-delimited to stay correct for renamed or unusually named files. + changed=() + while IFS= read -r -d '' file; do + changed+=("$file") + done < <(git diff -z --name-only --diff-filter=ACMRT "$BASE_SHA" "$HEAD_SHA" -- '*.md') + if [ ${#changed[@]} -eq 0 ]; then + echo "No Markdown files changed; nothing to check." + exit 0 + fi + echo "Checking changed Markdown files:" + printf ' %s\n' "${changed[@]}" + python3 scripts/check_external_links.py "${changed[@]}" + + # On the weekly schedule and manual runs, every tracked Markdown file is checked. + # A failure opens (or updates) a tracking issue so link rot gets triaged instead of + # silently failing a scheduled run nobody is watching. + all-external-links: + name: Live external links (full sweep) + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest + timeout-minutes: 30 + permissions: + contents: read + issues: write + steps: + - name: Check out repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + - name: Check all external Markdown links + id: check + run: | + set +e + python3 scripts/check_external_links.py 2>&1 | tee link-report.txt + echo "exit_code=${PIPESTATUS[0]}" >> "$GITHUB_OUTPUT" + - name: Open or update link-rot issue on failure + if: steps.check.outputs.exit_code != '0' + env: + GH_TOKEN: ${{ github.token }} + RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + run: | + label="link-rot" + title="Broken external documentation links detected" + # The label is required for de-duplication; ignore the error if it exists. + gh label create "$label" --color B60205 --description "Automated documentation link-rot tracking" 2>/dev/null || true + # Cap the embedded report so the issue body stays well under GitHub's limit. + report="$(head -c 50000 link-report.txt)" + body="$(printf 'The scheduled documentation link check failed.\n\nWorkflow run: %s\n\n```\n%s\n```\n' "$RUN_URL" "$report")" + existing="$(gh issue list --state open --label "$label" --json number --jq '.[0].number')" + if [ -n "$existing" ]; then + echo "Updating existing issue #$existing" + gh issue comment "$existing" --body "$body" + else + echo "Opening new tracking issue" + gh issue create --title "$title" --label "$label" --body "$body" + fi + - name: Fail if links are broken + if: steps.check.outputs.exit_code != '0' + run: | + echo "External link check failed; see the tracking issue." >&2 + exit 1 diff --git a/scripts/check_external_links.py b/scripts/check_external_links.py index 5cb275f6..aa4f8ea6 100644 --- a/scripts/check_external_links.py +++ b/scripts/check_external_links.py @@ -425,9 +425,27 @@ def _arguments() -> argparse.Namespace: parser.add_argument("--retries", type=int, default=2) parser.add_argument("--backoff", type=float, default=1.0) parser.add_argument("--max-redirects", type=int, default=5) + parser.add_argument( + "paths", + nargs="*", + type=Path, + help="Markdown files to check; defaults to every tracked Markdown file when omitted", + ) return parser.parse_args() +def _selected_markdown(paths: list[Path]) -> list[Path]: + """Resolve requested Markdown paths, ignoring non-Markdown or untracked entries.""" + tracked = {path.resolve(): path for path in markdown.tracked_markdown()} + selected: list[Path] = [] + for path in paths: + resolved = (path if path.is_absolute() else (REPOSITORY_ROOT / path)).resolve() + tracked_path = tracked.get(resolved) + if tracked_path is not None and tracked_path not in selected: + selected.append(tracked_path) + return selected + + def main() -> int: arguments = _arguments() if ( @@ -445,7 +463,14 @@ def main() -> int: print(f"Cannot load external-link ignore file: {error}", file=sys.stderr) return 2 - links = collect_external_links() + if arguments.paths: + selected = _selected_markdown(arguments.paths) + if not selected: + print("No tracked Markdown files selected; nothing to check") + return 0 + links = collect_external_links(selected) + else: + links = collect_external_links() ignored: dict[str, tuple[str, str]] = {} to_check: list[str] = [] malformed: list[CheckResult] = [] diff --git a/scripts/check_markdown_links.py b/scripts/check_markdown_links.py index e9634719..acd69da6 100644 --- a/scripts/check_markdown_links.py +++ b/scripts/check_markdown_links.py @@ -298,6 +298,8 @@ def check_target(source: Path, raw_target: str, heading_cache: dict[Path, set[st path_part = unquote(parsed.path) source_name = source.relative_to(REPOSITORY_ROOT) if path_part: + # A leading "/" is resolved against the repository root, matching how GitHub + # rewrites root-relative links when rendering Markdown in this repository. resolved = ( (REPOSITORY_ROOT / path_part.lstrip("/")) if path_part.startswith("/") diff --git a/scripts/tests/test_check_external_links.py b/scripts/tests/test_check_external_links.py index 153c0467..f81d23cd 100644 --- a/scripts/tests/test_check_external_links.py +++ b/scripts/tests/test_check_external_links.py @@ -212,6 +212,22 @@ def test_ignore_file_rejects_wildcards_and_undocumented_domains(self) -> None: with self.assertRaises(ValueError): checker.load_ignore_file(ignore_file) + def test_selected_markdown_keeps_only_tracked_markdown(self) -> None: + tracked = self.write("docs/guide.md", "# Guide\n") + self.write("docs/untracked.md", "# Untracked\n") + self.write("docs/notes.txt", "notes\n") + with mock.patch.object(markdown, "tracked_markdown", return_value=[tracked]): + selected = checker._selected_markdown( + [ + Path("docs/guide.md"), # tracked, relative + tracked, # tracked, duplicate absolute -> deduplicated + Path("docs/untracked.md"), # not tracked -> dropped + Path("docs/notes.txt"), # not Markdown -> dropped + Path("docs/missing.md"), # nonexistent -> dropped + ] + ) + self.assertEqual([tracked], selected) + if __name__ == "__main__": unittest.main() From ffe91f1ee859ec313d1f3947c1ea424b2f193e8f Mon Sep 17 00:00:00 2001 From: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> Date: Wed, 15 Jul 2026 09:35:22 -0700 Subject: [PATCH 6/6] docs: ignore bot-blocking www.keyshot.com in link checker www.keyshot.com returns HTTP 403 to both the checker's HEAD and minimal GET while loading normally in a browser (verified 200 with a browser user agent), matching the documented bot-rejection ignore criteria. Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- .github/external-link-ignore.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/external-link-ignore.txt b/.github/external-link-ignore.txt index ef73383e..75c87563 100644 --- a/.github/external-link-ignore.txt +++ b/.github/external-link-ignore.txt @@ -16,3 +16,5 @@ rez.readthedocs.io www.autodesk.com # 2026-07-14: HEAD and minimal Range GET both returned a self-referential HTTP 302 without a browser session. manage.autodesk.com +# 2026-07-15: HEAD and minimal Range GET both returned HTTP 403 for public product pages that load in a browser. +www.keyshot.com