-
Files in an object store (e.g., S3 objects)
-
Container images (stored in ECR)
Artifact deployment strategies
Tensor9 BYOC supports two primary strategies for moving artifacts from the vendor’s source environment to the customer’s appliance environment: Copy during deployment or direct reference.1. Copy during deployment model: Default and recommended
In the Copy model, the Vendor Controller copies the artifact from the vendor’s source location to a dedicated artifact repository within the customer’s appliance account during the deployment process. In this model, only the Vendor Controller requires read access to the artifacts and the vendor does not have to grant read permissions for each artifact to every appliance.Vendor workflow (container image copy):
- Your CI/CD builds the container image and publishes it to your origin ECR repository.
- Your Terraform references the image using its full path/tag in your compute resource definition (e.g.,
resource.aws_ecs_task_definition.container_definitions[*].image). - When you run the Tensor9 BYOC build and apply steps, the compiler:
- Identifies the artifact reference.
- Creates a process to copy the artifact from your ECR to the appliance’s ECR.
- Rewrites your compiled infrastructure resource to reference the new, appliance-local ECR path.
2. Direct reference model: Override
In the Direct Reference model the artifact is not copied. The appliance is configured to reach out and pull the artifact directly from the vendor’s source location. This model is generally reserved for special cases, such as:- Publicly accessible artifacts from sources trusted by both the vendor and the customer.
- Extremely large artifacts where minimizing data transfer/copy costs through the Vendor Controller account is critical.
- Artifacts that the vendor only wants to access dynamically at runtime.
Copy during deployment details
How Tensor9 BYOC finds your artifacts
Tensor9 BYOC finds artifacts two ways, and the difference decides whether you have to write anything at all. By consumer. This is the default, and it asks nothing of you. The compiler walks resource shapes it already understands, and a field’s position in one of those shapes is enough to say what the field holds: an ECS task definition’simage, a Kubernetes pod spec’s containers[].image, a Lambda function’s s3_bucket / s3_key / s3_object_version. Both examples at the top of this page are found this way.
By declaration. Where position cannot tell Tensor9 BYOC anything, you name the artifact with a data source. The case that forces this is an image reference the compiler has no way to rewrite, such as one inside a Helm chart’s values, which is a YAML string rendered at plan time and carries no reference to rewrite. Name the image with the Terraform block that already exists for it:
data.aws_ecr_image.worker.image_uri reads the copy instead. Your arguments are moved into the copy as expressions rather than resolved during compilation, so a tag supplied at deploy time copies the image you actually deploy rather than the variable’s default.
Two data sources in the same module that name the same image with the same expressions share a single copy, so spelling one image twice costs nothing.
What a declared image requires
Data sources also carry what only a plan-time read can produce
A data source gives Tensor9 BYOC something a bucket and key written out as literals cannot: attributes that exist only because your own provider read the artifact while planning. Git delivery rests on exactly that. Its source must be adata "aws_s3_object" block, because the object’s version_id and etag come from an S3 HeadObject your provider performs at plan time, and those two values are what tell Tensor9 BYOC you have republished the artifact.
Artifact naming requirements
To ensure immutability and prevent race conditions during deployments, Tensor9 BYOC requires all vendor artifacts to be uniquely named and immutable.
By enforcing immutable naming, we ensure a deployment to an appliance is always linked to a known-good application version.
Supported artifact locations
Tensor9 BYOC supports copying artifacts from two locations within the vendor’s control:Out-of-scope artifacts
Tensor9 BYOC does not treat the following as artifact sources:- Secrets (handled by Tensor9 BYOC Secret Management)
- Code repositories (GitHub, CodeCommit, etc.)
- Package mirrors (Maven, NPM, etc.)
- Database data