NAEOS includes built-in cloud deployment support. You can plan, deploy, and destroy cloud infrastructure directly from your specifications using the cloud commands.

Overview

The cloud integration works in three phases:

  1. Plan — Generate a Terraform HCL deployment plan from your spec
  2. Deploy — Execute the plan against your chosen cloud provider
  3. Destroy — Tear down deployed resources when no longer needed

Supported Providers

ProviderServicesStatus
AWSEC2, ECS, Lambda, RDS, S3, CloudFront, VPCStable
GCPGCE, Cloud Run, Cloud SQL, Cloud StorageStable
AzureAKS, Azure Functions, SQL Database, Blob StorageBeta

Configuration

Add cloud configuration to your specification:

project: my-service
modules:
  - name: api
    path: ./api
  - name: worker
    path: ./worker
services:
  - name: api-server
    kind: rest
    port: 8080
  - name: queue-worker
    kind: worker
deployment:
  provider: aws
  region: us-east-1
  strategy: ecs-fargate
  resources:
    - type: ecs-service
      name: api
      module: api
      config:
        cpu: 512
        memory: 1024
        desired_count: 2
    - type: sqs-queue
      name: events
      config:
        visibility_timeout: 300
        retention_period: 1209600

CLI Commands

Plan

Generate a deployment plan without applying it:

naeos cloud plan --provider aws --region us-east-1 --input-file spec.yaml

This produces a terraform/ directory containing HCL files ready for terraform init && terraform apply.

Deploy

Execute the deployment:

naeos cloud deploy --provider aws --region us-east-1 --input-file spec.yaml

The deploy command:

  1. Generates the Terraform plan
  2. Runs terraform init
  3. Runs terraform plan and shows the execution plan
  4. Applies the plan (with confirmation prompt)
  5. Outputs resource IDs and endpoints

Status

Check the status of deployed resources:

naeos cloud status

Destroy

Tear down all deployed resources:

naeos cloud destroy --provider aws --region us-east-1

Resource Types

Resource TypeAWSGCPAzure
compute-instanceEC2GCEVM
container-serviceECS/FargateCloud RunAKS
serverless-functionLambdaCloud FunctionsAzure Functions
databaseRDSCloud SQLSQL Database
storage-bucketS3Cloud StorageBlob Storage
cdnCloudFrontCloud CDNAzure CDN
queueSQSPub/SubService Bus
cacheElastiCacheMemorystoreRedis Cache

Environment Variables

The cloud commands use these environment variables for authentication:

VariableDescriptionRequired
AWS_ACCESS_KEY_IDAWS access keyFor AWS
AWS_SECRET_ACCESS_KEYAWS secret keyFor AWS
AWS_REGIONAWS regionFor AWS
GOOGLE_PROJECT_IDGCP project IDFor GCP
GOOGLE_APPLICATION_CREDENTIALSPath to GCP service account keyFor GCP
AZURE_SUBSCRIPTION_IDAzure subscription IDFor Azure
AZURE_TENANT_IDAzure tenant IDFor Azure
AZURE_CLIENT_IDAzure client IDFor Azure
AZURE_CLIENT_SECRETAzure client secretFor Azure

Cost Estimation

The plan command includes an estimated monthly cost breakdown:

naeos cloud plan --provider aws --input-file spec.yaml --estimate-cost

Output:

Resource                        Monthly Est.
─────────────────────────────────────────────
ecs-service/api (2 tasks)       $73.20
rds/postgres-db (db.t3.micro)   $12.40
s3/storage-bucket                $1.20
sqs/events-queue                 $0.40
─────────────────────────────────────────────
Total estimated:                $87.20/month

See also: Pipeline Engine, Spec Language, Governance