Platforms
This page lists what each resource becomes on AWS, Google Cloud, Azure, Kubernetes, Linux servers, and Local (alien dev), and which combinations aren't supported. In .platforms() they're aws, gcp, azure, kubernetes, machines, and local.
import * as alien from "@alienplatform/core"
export default new alien.Stack("acme")
.platforms(["aws", "gcp", "azure", "kubernetes"])
.build().platforms() limits where a stack can deploy. Omit it to allow all platforms. Unsupported resource and platform combinations are refused before anything is deployed.
In the tables, an external binding points a resource at a service the customer already runs. A frozen resource is created once by the customer's admin at initial setup; see Lifecycles.
Compute
| Resource | AWS | Google Cloud | Azure | Kubernetes | Linux servers | Local |
|---|---|---|---|---|---|---|
| Worker | Lambda | Cloud Run | Container Apps | Deployment and Service. No queue, storage, or schedule triggers. | Not supported | Local process |
| Container | EC2 machines in a ComputeCluster | Compute Engine machines | Azure VMs | Deployment, or StatefulSet when stateful | Stateless only, no public endpoints | Docker |
| Daemon | One per EC2 machine | One per Compute Engine machine | One per VM | DaemonSet | One per host | Local process |
| ComputeCluster | Auto Scaling group per pool | Managed instance group per pool | VM Scale Set per pool | Logical pools on existing nodes. No GPUs or nested virtualization. | Pools are host labels | Docker network |
| Sandbox | Lambda MicroVMs | Agent Platform sandboxes | Container Apps sandboxes | Pods with a sandboxed RuntimeClass | Not supported | Docker |
Data
| Resource | AWS | Google Cloud | Azure | Kubernetes | Linux servers | Local |
|---|---|---|---|---|---|---|
| Storage | S3 | Cloud Storage | Blob Storage | External binding | External binding, frozen | Directory |
| Kv | DynamoDB | Firestore | Table Storage | External binding | External binding, frozen | SQLite |
| Queue | SQS | Pub/Sub | Service Bus | External binding | External binding, frozen | Local queue |
| Vault | SSM Parameter Store | Secret Manager | Key Vault | Kubernetes Secrets | External binding, frozen | JSON file |
| Postgres | Aurora Serverless v2 | Cloud SQL | Flexible Server | External binding | External binding, frozen | Native PostgreSQL |
| Key | KMS | Cloud KMS | Key Vault keys | Only on a cloud base platform | Not supported | Not supported |
Services
| Resource | AWS | Google Cloud | Azure | Kubernetes | Linux servers | Local |
|---|---|---|---|---|---|---|
| AI | Amazon Bedrock | Vertex AI | Azure AI Foundry | External AI binding | External AI binding | Your OpenAI key or local server |
| SES | Not supported | Not supported | Not supported | Not supported | Not supported |
Infrastructure
| Resource | AWS | Google Cloud | Azure | Kubernetes | Linux servers | Local |
|---|---|---|---|---|---|---|
| ArtifactRegistry | ECR | Artifact Registry | Container Registry | External binding | Not provisioned | Local registry |
| Build | CodeBuild | Cloud Build | Container Apps jobs | Kubernetes Jobs | Not supported | Not supported |
| ServiceAccount | IAM role | Service account | Managed identity | Helm chart ServiceAccounts | Not supported | Local identity |
| Network | VPC | VPC | VNet | Cluster network | Host network | Host network |
External bindings
On Kubernetes and Linux servers, Alien doesn't create cloud data services. The deployer points each resource at an existing service with an external binding, supplied through Helm values or deployment settings.
| Platform | Resources that need an external binding |
|---|---|
| Kubernetes | Storage, Kv, Queue, ArtifactRegistry. Postgres and AI too, when declared. |
| Linux servers | Storage, Kv, Queue, Vault, Postgres. They must also be "frozen". |
An external binding can point at another platform's service, for example S3 or an S3-compatible endpoint such as MinIO for Storage on Kubernetes.
Lifecycles
Frozen resources are created once at initial setup by the customer's admin; live ones are updated by Alien on every release. See Frozen and live.
| Resource | Allowed lifecycles |
|---|---|
| Worker, Container, Daemon | Live |
| ComputeCluster, ArtifactRegistry, Key, Build, ServiceAccount, Network, Email | Frozen |
| Sandbox | Frozen. Live on AWS. |
| Storage, Kv, Queue, Vault, Postgres, AI | Frozen or live |
Storage with an encryption key must be frozen. On Linux servers, resources that use external bindings must be frozen.