Skip to content

Cloud

What teams use day to day on AWS, Google Cloud and Azure, and where it lives in agentl.

Need AWS Google Cloud Azure
Secrets in the YAML ${aws-sm:...}, ${ssm:...} ${gcp-sm:...} ${azure-kv:...}
Files s3:// gs:// az://, SharePoint / OneDrive
Queues sqs.receive, sqs.send pubsub.pull, pubsub.publish not built in (Service Bus)
Warehouses postgres.* (Redshift), sql.* (Athena through its SQLAlchemy dialect) sql.* with [bigquery] sql.* with [mssql] (Synapse, Fabric SQL endpoint)
LLMs provider: bedrock Anthropic or OpenAI-compatible endpoints provider: azure-openai
Run a pipeline Lambda, ECS / Batch Cloud Run jobs Container Apps jobs

Secrets

Reference a secret where an ${ENV_VAR} would go. It is read when the file loads, kept only in memory, and never written to the run store, events or logs (unless a step outputs it and is cached).

steps:
  - id: save
    use: postgres.write
    with:
      dsn: ${aws-sm:prod/pg_dsn}                 # AWS Secrets Manager
      # dsn: ${aws-sm:prod/db#dsn}               # one key of a JSON secret
      # dsn: ${ssm:/prod/pg_dsn}                 # SSM Parameter Store, decrypted
      # dsn: ${gcp-sm:my-project/pg_dsn}         # Google Secret Manager, latest version
      # dsn: ${gcp-sm:my-project/pg_dsn/versions/3}
      # dsn: ${azure-kv:my-vault/pg-dsn}         # Azure Key Vault
Reference Credentials Install
aws-sm, ssm the usual boto3 chain (role, AWS_PROFILE, env vars) [aws]
gcp-sm GOOGLE_ACCESS_TOKEN, or a service account in GOOGLE_APPLICATION_CREDENTIALS [google] for service accounts
azure-kv AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET (an app with the Key Vault Secrets User role), or AZURE_ACCESS_TOKEN none

Each reference is fetched once per process. A missing secret or key fails the load with the reference in the message, never the value.

Azure OpenAI

llm:
  provider: azure-openai
  model: gpt-prod                       # your deployment name
  options: { endpoint: https://my-resource.openai.azure.com }   # or AZURE_OPENAI_ENDPOINT

The key comes from AZURE_OPENAI_API_KEY. It uses the Azure OpenAI v1 API with structured outputs, like provider: openai.

Running in the cloud

The same container works everywhere: install agentl and your pipelines, and run agentl run.

FROM python:3.13-slim
RUN pip install --no-cache-dir "agentl-etl[aws,postgres]"
WORKDIR /app
COPY pipelines/ pipelines/
ENTRYPOINT ["agentl", "run"]
CMD ["pipelines/sales.yaml"]

Point the run store to a shared Postgres (AGENTL_DB=postgresql://...) so the dashboard and agentl stats see every run, and the per-record cache survives between runs.

Google Cloud Run job, on a schedule:

gcloud run jobs deploy sales-etl --image REGION-docker.pkg.dev/PROJECT/etl/agentl \
  --args pipelines/sales.yaml --set-env-vars AGENTL_DB=postgresql://... \
  --service-account etl@PROJECT.iam.gserviceaccount.com
gcloud scheduler jobs create http sales-etl-daily --schedule "0 7 * * 1-5" \
  --uri "https://run.googleapis.com/v2/projects/PROJECT/locations/REGION/jobs/sales-etl:run" \
  --http-method POST --oauth-service-account-email etl@PROJECT.iam.gserviceaccount.com

Azure Container Apps job, on a schedule:

az containerapp job create -n sales-etl -g etl --environment etl-env \
  --trigger-type Schedule --cron-expression "0 7 * * 1-5" \
  --image myregistry.azurecr.io/agentl:latest --args pipelines/sales.yaml \
  --mi-system-assigned --env-vars AGENTL_DB=secretref:agentl-db

AWS: see AWS Lambda for short runs; use an ECS scheduled task or AWS Batch with the same image for runs longer than 15 minutes.

GitHub Actions: see GitHub Actions.

Commands above follow each cloud's documented CLI; check the flags against your CLI version. They have not been run from this repository's CI.