Skip to main content
Four settings, no code changes. Whatever you use to drive ECS today — the AWS CLI, a shell script, boto3, the JavaScript, Go, or Java SDK, Terraform — takes these and keeps working: The pair works like an AWS one. Every AWS SDK signs requests with SigV4 and puts the access key id in the Authorization header’s Credential field. AI Reserve looks the id up, recomputes the signature with the secret that pairs with it, and refuses the request with AWS’s own InvalidSignatureException if they differ — so the secret never crosses the wire, and a wrong secret fails the way it would against AWS. The region in that same field tells us which regional endpoint you meant.
Any of your organization’s aireserve_api_… keys still works as the aws_access_key_id with any non-empty aws_secret_access_key (the key itself is the bearer secret, carried over TLS). The pair form above is the one the portal issues and the one to use in new setups; nothing you have configured the old way stops working.

Step by step

1

Create a credential

In the portal, open Containers & Orchestration › Elastic Container Service, click Create credential, name it after the environment that will use it, and copy both values. The secret access key is shown once.
2

Repoint your client

Pick the one that matches how you call ECS today.
One-off, per command:
For a whole shell session, the service-specific endpoint variable keeps every other AWS service on its normal endpoint:
3

Verify

An empty clusterArns list is a success — you are talking to ECS through AI Reserve. An InvalidSignatureException means the secret access key does not match the access key id (or your clock is more than 15 minutes off); an AccessDeniedException means the credential is unknown, revoked, or paused — check it under Containers & Orchestration › Elastic Container Service in the portal.
4

Run what you already run

Your existing register-task-definition, create-service, update-service, run-task, describe-*, list-*, execute-command, waiters, and paginators work unchanged. See what to expect for the handful of things that differ from your own AWS account.

Deploy a container and get a URL

The fastest path from an image to a running HTTPS service is Amazon ECS Express Mode: one call, and ECS creates the load balancer, target group, security groups, CPU autoscaling and rollback alarms in your account and gives the service a URL at https://<name>.ecs.<region>.on.aws/ on an AWS-managed certificate. The portal’s Deploy a container button is this call; from the CLI it is:
The two roles already exist in your account: AireserveEcsTaskExecution pulls the image, writes logs and reads secrets at start; AireserveEcsInfrastructure is what ECS assumes to create the load balancer and friends (the AWS console’s “Create new role” button, pre-created). Where the AWS console asks you to create them, you do not. Everything an Express service runs on is an ordinary ECS resource in your account: the service appears in list-services, its tasks in list-tasks, its logs under the log group ECS created, so the rest of this page and all of aws ecs apply to it unchanged. Change the image, size, variables or scaling with update-express-gateway-service (the portal’s service page has a button for each); ECS rolls the change out and rolls back on its own if the new tasks fail health checks or raise 5xx. delete-express-gateway-service removes the load balancer and URL with the service. The Fargate task-hours are billed as described under Billing. The load balancer ECS creates is an AWS resource in your account too (AWS lists it at $0.0225 per hour plus traffic); it is metered on the same hourly basis.

Infrastructure as code

Terraform works through the provider alias above: the AWS provider calls the ECS API directly, so pointing its ecs endpoint at AI Reserve moves aws_ecs_cluster, aws_ecs_task_definition, aws_ecs_service, and the other aws_ecs_* resources. Keep references to roles, subnets, security groups, and log groups set to the identifiers AI Reserve provisions for you. CloudFormation and the AWS CDK deploy through AWS’s own control plane, which calls ECS from inside your AWS account — there is no endpoint to repoint. Drive ECS with the CLI, an SDK, or Terraform instead, or keep using CloudFormation for the stacks that stay in your account.

What to expect

The whole ECS API. AI Reserve does not keep a list of supported operations; it forwards whatever you send and returns whatever ECS answers. New ECS features work the day AWS ships them.

Network ids and logs

A Fargate task needs a subnet and a security group, and once it runs you will want its output. Both live in your container account, so point the EC2 and CloudWatch Logs services at the same endpoint and call them as you would against AWS. AI Reserve forwards every operation of both services the same way it forwards ECS; what your account’s role permits is what succeeds, and anything it does not is AWS’s own UnauthorizedOperation (EC2) or AccessDeniedException (Logs). Today the role grants the reads a Fargate tenant needs: Your account comes with a default VPC in every region, so the subnets and the default security group those commands return are ready to use in run-task’s awsvpcConfiguration. Set awslogs-create-group=true in a task definition’s log configuration and the group is created on first run. The portal’s Elastic Container Service page shows the same clusters, services, tasks and logs (per task and per service, with a live follow), and every row there carries the exact aws ecs … / aws logs … command that reproduces it. Streams are named <awslogs-stream-prefix>/<container name>/<task id>. Responses are Amazon ECS’s. Pagination tokens, waiters, and error types are the real ones, so SDK code written against ECS behaves identically — including retries, which key off the status codes ECS returns. Resources live in an AWS account that is yours alone. When an admin enables Containers in the portal (Compute › Containers), AI Reserve creates an AWS account for your organization inside its AWS Organization — no ticket, no waiting on us; it is active within a few minutes and the page shows its 12-digit id. Every ECS call you make is signed in that account, so ARNs carry its id, list-clusters returns only your clusters, and nothing of any other organization’s is reachable, listable, or even nameable from it. That is AWS’s own account boundary doing the isolating, not a filter in front of it. A service-control policy caps the account to ECS on Fargate and what tasks need (image pulls, logs, networking), and an AireserveEcsTaskExecution role is ready to reference as your task definitions’ executionRoleArn. Public images (Docker Hub, ECR Public, GitHub Container Registry) pull as-is. Pick the region you mean. The region in your client configuration is the region your clusters and tasks run in, exactly as with AWS. ECS Exec works. aws ecs execute-command goes through AI Reserve; the session it returns connects your Session Manager plugin directly to AWS. Errors from AI Reserve arrive in the AWS envelope. Your SDK raises its normal typed exceptions: Everything else — ClusterNotFoundException, InvalidParameterException from a bad task definition, ServerException — is ECS’s own answer, relayed.

Open the AWS console

Your container account is a real AWS account, and the portal can sign you into its AWS Management Console. On Containers & Orchestration › Elastic Container Service, choose a region and click Open AWS Console: a new tab lands on the ECS clusters page of your account, signed in as you. The session lasts an hour, then AWS sends you back to the portal. This is AWS’s own federated sign-in. The portal is the identity provider: an organization admin’s portal session is exchanged for temporary credentials in your account, with your email as the session name, so every console action is attributed to you in your account’s CloudTrail. No AWS user or password exists for you, nothing to rotate, and leaving the organization removes the access. Members can read everything in the portal; opening the console is an admin action, because a console session can run, scale and delete. What you see is your account and nothing else: no other organization’s resources, no AI Reserve platform resources. The console shows the same permission boundary the API has. Pages outside the ECS product (EC2 instances, IAM, S3) answer Access denied; that is the account’s ceiling, not a fault.

Billing

Fargate tasks you run through AI Reserve are billed to your organization’s wallet at AWS’s on-demand list price for the region — per vCPU-hour and per GB-hour of the task’s requested cpu and memory, plus ephemeral storage above the included 20 GiB and the Windows licence fee where they apply — from image pull until the task stops, with AWS’s one-minute minimum. Each task-hour appears as its own line in Observe › Event Log and in Financials, model ecs:fargate-task, provider aws-ecs, with the task and cluster ARN in its details, so what you see in the console matches what aws ecs describe-tasks tells you. Metering enumerates your organization’s own AWS account every five minutes, so tasks started by an ECS service scheduler — which never pass through AI Reserve — are billed like any other, and nothing another organization runs can ever land on your bill. A task that stopped may take one cycle to settle its last partial hour. If your wallet cannot cover an hour, the hour stays recorded as unpaid and is retried as funds arrive; your running tasks are not stopped by AI Reserve. Tasks on the EC2 or EXTERNAL launch types are not billed per task (the instances are) — talk to your account team before using them.
Containers & orchestration is in early access. Talk to your account team before pointing production traffic at it.