Skip to main content
Version: v4 (current)

AWS Examples

Complete workflow examples for running Unity builds on AWS Fargate via Orchestrator.

Minimal AWS Build

The simplest AWS workflow. Uses default CPU and memory.

name: Build with Orchestrator (AWS)

on:
push:
branches: [main]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
lfs: true

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-2

- uses: game-ci/unity-builder@v4
with:
providerStrategy: aws
targetPlatform: StandaloneLinux64
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}

Multi-Platform Matrix Build

Build for multiple platforms in parallel. Each platform runs as a separate Fargate task.

name: Orchestrator  -  AWS Multi-Platform

on:
push:
branches: [main, develop]
pull_request:
branches: [main]

jobs:
build:
name: Build (${{ matrix.targetPlatform }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
targetPlatform:
- StandaloneLinux64
- StandaloneWindows64
- StandaloneOSX
- iOS
- Android
- WebGL
steps:
- uses: actions/checkout@v4
with:
lfs: true

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-2

- uses: game-ci/unity-builder@v4
id: build
with:
providerStrategy: aws
targetPlatform: ${{ matrix.targetPlatform }}
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}
unityVersion: 2022.3.0f1
containerCpu: 2048
containerMemory: 8192
containerHookFiles: aws-s3-upload-build
githubCheck: true

Custom Resources and S3 Artifacts

Specify CPU/memory and export build artifacts to S3.

- uses: game-ci/unity-builder@v4
id: aws-build
with:
providerStrategy: aws
versioning: None
projectPath: path/to/your/project
unityVersion: 2022.3.0f1
targetPlatform: ${{ matrix.targetPlatform }}
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}
containerCpu: 2048
containerMemory: 8192
# Export builds to S3:
containerHookFiles: aws-s3-upload-build

Valid CPU/Memory Combinations

AWS Fargate only accepts specific combinations (1024 = 1 vCPU, memory in MB):

CPU (containerCpu)Memory (containerMemory)
256 (0.25 vCPU)512, 1024, 2048
512 (0.5 vCPU)10244096
1024 (1 vCPU)20488192
2048 (2 vCPU)409616384
4096 (4 vCPU)819230720

Async Mode

For long builds, use async mode so the GitHub Action returns immediately. Monitor via GitHub Checks.

- uses: game-ci/unity-builder@v4
with:
providerStrategy: aws
targetPlatform: StandaloneLinux64
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}
asyncOrchestrator: true
githubCheck: true

Retained Workspaces

Keep the entire project cached between builds for dramatically faster rebuilds.

- uses: game-ci/unity-builder@v4
with:
providerStrategy: aws
targetPlatform: StandaloneLinux64
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}
maxRetainedWorkspaces: 3
containerCpu: 2048
containerMemory: 8192

S3 Upload + Steam Deploy

Chain container hooks to export to S3 and deploy to Steam in one step.

- uses: game-ci/unity-builder@v4
with:
providerStrategy: aws
targetPlatform: StandaloneLinux64
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}
containerHookFiles: aws-s3-upload-build,steam-deploy-client
env:
STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }}
STEAM_PASSWORD: ${{ secrets.STEAM_PASSWORD }}
STEAM_APPID: ${{ secrets.STEAM_APPID }}

Scheduled Garbage Collection

Clean up stale CloudFormation stacks and Fargate tasks.

name: Orchestrator  -  Garbage Collect

on:
schedule:
- cron: '0 4 * * *' # Daily at 4 AM UTC

jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-2

- uses: game-ci/unity-builder@v4
with:
providerStrategy: aws
mode: garbage-collect
garbageMaxAge: 24
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}

CLI Usage

Run AWS builds from the command line:

game-ci build \
--providerStrategy aws \
--projectPath /path/to/unity/project \
--targetPlatform StandaloneLinux64 \
--containerCpu 2048 \
--containerMemory 8192

List active AWS resources:

game-ci status --providerStrategy aws

Required Secrets

SecretDescription
AWS_ACCESS_KEY_IDIAM access key with ECS, CloudFormation, S3, Kinesis, CloudWatch
AWS_SECRET_ACCESS_KEYIAM secret key

Next Steps