Configure Arena S3 result storage
EnterpriseConfigure an ArenaJob to upload its output files to Amazon S3 or an S3-compatible store such as MinIO.
Prerequisites
Section titled “Prerequisites”- Arena Fleet enabled in your Omnia installation.
- An existing S3 bucket, or an S3-compatible endpoint reachable from the cluster.
- Credentials with
s3:PutObjecton the bucket: a Secret holding an access key, or an IAM role on EKS.
Configure the output
Section titled “Configure the output”The worker stages its output files locally. When every work item has finished, it uploads them to s3://<bucket>/<prefix>/<run-name>/<relative-path>, so each run of a scheduled ArenaJob keeps its own files.
-
Choose how workers authenticate.
Static credentials. Create a Secret in the ArenaJob’s namespace with these two keys. The values below are placeholders:
apiVersion: v1kind: Secretmetadata:name: arena-s3-credentialsnamespace: defaulttype: OpaquestringData:AWS_ACCESS_KEY_ID: "<access-key-id>"AWS_SECRET_ACCESS_KEY: "<secret-access-key>"Terminal window kubectl apply -f s3-credentials.yamlIAM roles for service accounts (EKS). Create an IAM policy that allows uploads, and a role that trusts a ServiceAccount:
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "s3:PutObject","Resource": "arn:aws:s3:::my-arena-results/*"}]}Annotate that ServiceAccount with the role ARN, then set the chart value
enterprise.arena.worker.serviceAccountNameto its name. Workers then run as that ServiceAccount. With the value empty, each run gets a generatedarena-workerServiceAccount that has no cloud identity.enterprise:arena:worker:serviceAccountName: arena-worker-s3The ServiceAccount must exist in the namespace where the ArenaJob runs.
-
Add
outputto the ArenaJob. The worker requiresregion, even for S3-compatible storage. OmitsecretRefwhen you use IAM roles.apiVersion: omnia.altairalabs.ai/v1alpha1kind: ArenaJobmetadata:name: nightly-evalnamespace: defaultspec:sourceRef:name: my-eval-configtype: evaluationworkers:replicas: 2output:type: s3s3:bucket: my-arena-resultsprefix: "evaluations/nightly/"region: us-west-2secretRef:name: arena-s3-credentials -
For MinIO or another S3-compatible store, add
endpoint. The worker addresses buckets by path, so the bucket must already exist. Setregionto any non-empty value, such asus-east-1.output:type: s3s3:bucket: arena-resultsprefix: "evals/"region: us-east-1endpoint: http://minio.minio-system.svc:9000secretRef:name: minio-credentials -
Apply the ArenaJob.
Terminal window kubectl apply -f arenajob.yaml
Verify
Section titled “Verify”-
Find the run and wait for it to finish.
Terminal window kubectl get arenaruns -l omnia.altairalabs.ai/arena-job=nightly-eval -
Check the
OutputPersistedcondition.Truenames the destination.Terminal window kubectl get arenarun <run-name> \-o jsonpath='{.status.conditions[?(@.type=="OutputPersisted")]}' -
List the bucket.
Terminal window aws s3 ls s3://my-arena-results/evaluations/nightly/<run-name>/ --recursive
The upload contains the files the Arena engine writes to its output directory: media files, session recordings if the arena config enables them, and the data file of a datagen run. Per-scenario evaluation results are recorded in session-api, so a text-only evaluation can upload nothing.
Troubleshooting
Section titled “Troubleshooting”The run succeeds but nothing is in the bucket
Section titled “The run succeeds but nothing is in the bucket”An upload failure does not fail the run. It sets OutputPersisted=False with reason OutputUploadFailed and emits a Warning event of the same reason; the message carries the first error. The worker logs it as output upload failed.
kubectl describe arenarun <run-name>S3 output config: region is required
Section titled “S3 output config: region is required”Set spec.output.s3.region.
Access denied
Section titled “Access denied”Confirm the credentials or role allow s3:PutObject on <bucket>/<prefix>*. If the Secret lacks AWS_ACCESS_KEY_ID or AWS_SECRET_ACCESS_KEY, the worker ignores it and falls back to the default AWS credential chain.
Endpoint connection errors
Section titled “Endpoint connection errors”Confirm the endpoint is reachable from the worker pods, uses http:// for a non-TLS service, and names an existing bucket.
Related pages
Section titled “Related pages”- ArenaJob reference: every
outputfield. - Helm values: Arena worker settings.
- Monitor Arena jobs: track runs and find results.