AWS Deadline Cloud: A Story About How an After Effects Plugin Distributed via Conda Failed to Work Only on Workers
This page has been translated by machine translation. View original
Introduction
I'd like to share a problem I encountered when setting up an After Effects (hereafter AE) render farm using AWS Deadline Cloud's CMF (Customer-Managed Fleet), with a configuration that delivers AE itself to Workers as a conda package.
A third-party plugin that worked fine in local AE produced no effect when rendering the same scene on a Worker. The cause was that some plugins were installed not in the AE-specific folder, but in a folder shared across all Adobe products. Since conda delivery doesn't reach the latter folder on Workers, the result was a situation where the plugin worked locally but not on Workers.
What is AWS Deadline Cloud
AWS Deadline Cloud is a managed service that allows you to build a render farm in the cloud for 3DCG/VFX production. It provides the functionality needed for render farm operations, including Worker auto-scaling and job management.
Target Audience
- Those who are currently delivering AE via conda in AWS Deadline Cloud's CMF, or are considering doing so
- Those struggling with the issue where a plugin that works locally doesn't work only on Workers
- Those who want a clear understanding of where AE third-party plugins are installed
References
- AWS Deadline Cloud Developer Guide: Creating a conda channel using S3
- aws-deadline/deadline-cloud-for-after-effects
- aws-deadline/deadline-cloud-samples: aftereffects recipe
- Adobe: After Effects plug-ins (MediaCore / Common Plug-ins placement)
The Underlying Configuration
Here is a brief explanation of how AE is delivered to Workers via conda.
- Zip the Support Files folder where AE is installed (this is the AE-specific folder)
- Package it as a conda package and place it in an S3 channel
- When executing a job, the Worker extracts this with conda and launches aerender
In other words, only the contents of Support Files are extracted on the Worker.
The configuration looks like this in diagram form:
The Cause: Two Systems — Adobe Common and the AE-Specific Folder
There are two systems for where AE plugins are installed. One is the AE-specific Plug-ins folder under AE's Support Files. The other is Adobe\Common\Plug-ins\<generation number>\MediaCore\, which is referenced by all Adobe products in common. Some third-party plugins are installed in the latter.
Local AE automatically searches both folders, so plugins under Adobe Common can be used normally. However, the target for zipping in conda delivery is only the AE-specific folder (Support Files). Therefore, plugins under Adobe Common are not included in the conda package and never reach the Worker. This is the true cause of the symptom where something works locally but not on Workers.
An Easy Point of Confusion
It's worth mentioning that right after installation, looking only at the AE-specific folder and finding no plugin files there can lead to the hasty conclusion that the installation failed. In reality, the installation itself succeeded — the files are simply placed on the Adobe Common side. You're just looking in the wrong place.
As a first step in troubleshooting, I recommend checking both the AE-specific folder and Adobe Common. If you find the plugin's actual files (AE plugins have the .aex extension) in either location, the installation itself was successful.
Solution: Mirror with robocopy Before Zipping
The solution is straightforward. Before zipping, mirror-copy the plugins under Adobe Common into the AE-specific folder. This ensures the plugins are included in the Support Files zip and reach the Workers.
$src = 'C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore\<plugin-vendor>'
$dst = 'C:\Program Files\Adobe\Adobe After Effects <version>\Support Files\Plug-ins\<plugin-vendor>'
robocopy $src $dst /E /COPY:DAT /R:0
If the plugin's installer allows you to specify the installation destination path, you can specify a location under the AE-specific folder from the start, making this mirror copy unnecessary. Since behavior varies by plugin, check the installation destination first and then choose your approach.
Summary
The plugin search paths differ between local AE and Workers delivered via conda. The fact that something works locally does not guarantee it will work on a Worker. With conda delivery, use whether the plugin's actual files are within the range extracted on the Worker as your basis for verification. For plugins that exist only under Adobe Common, mirror-copy them to the AE-specific folder before zipping.
I hope this is helpful for those building AE render farms with AWS Deadline Cloud.