Generated banner for AWS Containers
Generated logo for AWS Containers

AWS Containers

AWSOfficialPublished by AWS

  • Skill
  • Tool integration
  • Cloud and DevOps
  • Apache-2.0
  • Low risk

From the author

Builds and deploys containerized workloads on Elastic Kubernetes Service (EKS), Elastic Container Service (ECS), Fargate, and ECR (Elastic Container Registry). Covers general EKS knowledge, Karpenter, AWS Load Balancer Controller and leveraging various open source Kubernetes projects with EKS. Covers general ECS knowledge, task definitions, Fargate services, ECS Exec, ECS Express Mode and ECS Managed Instances. Covers general Elastic Beanstalk knowledge, Elastic Beanstalk configuration and platforms supported by Elastic Beanstalk. Covers general ECR knowledge, ECR repository setup and lifecycle policies. Includes recommending, enabling, and reading Amazon ECS Action Logs to troubleshoot control-plane failures (deployment rollback/circuit-breaker, task placement, scaling, task replacement). Applies when deploying, debugging, or optimizing containers on AWS. Should be used instead of relying on internal knowledge for these services.
— the description by AWS

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides comprehensive domain expertise for managing containerized applications on AWS. It covers the full lifecycle of services including Amazon EKS, ECS, ECR, and Elastic Beanstalk. The skill acts as a primary source of truth for configuration patterns, deployment strategies, and troubleshooting procedures, specifically emphasizing the use of Amazon ECS Action Logs for diagnosing control-plane failures. It is designed to be used alongside AWS CLI tools or an MCP server to ensure accurate, up-to-date operational decisions.

What it does

  • Provides configuration patterns for EKS, ECS, and Elastic Beanstalk.
  • Offers troubleshooting procedures for ECS control-plane failures using Action Logs.
  • Details ECR repository management and lifecycle policies.
  • Outlines deployment policies for Elastic Beanstalk environments.
  • Guides users on leveraging open-source Kubernetes projects with EKS.
  • Maintains a structured routing system to access specific service documentation.

When to use it

  • When deploying or optimizing containerized workloads on AWS.
  • When troubleshooting deployment rollbacks, task placement, or scaling issues in ECS.
  • When configuring Elastic Beanstalk environments or setting up ECR repositories.
  • When needing best practices for EKS cluster management and compute scaling.

Advantages

  • Centralizes complex AWS container service knowledge in one location.
  • Provides clear, actionable steps for troubleshooting opaque control-plane errors.
  • Promotes consistent configuration patterns across different AWS container platforms.
  • Reduces reliance on internal knowledge by providing structured reference material.

Usage examples

“How do I troubleshoot a task placement failure in my ECS cluster?”
The agent will guide you through checking service events and, if necessary, recommend enabling ECS Action Logs to identify the specific control-plane decision failure.
“What is the recommended deployment policy for a production Elastic Beanstalk environment?”
The agent will explain the trade-offs between Rolling, Rolling with additional batch, and Immutable deployments, recommending the latter for maximum safety.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/aws/aws-containers/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip aws-containers.zip -d .agents/skills

Documentation by AWS

AWS Containers

Overview

Domain expertise for working with containers on AWS.

Works best with the AWS MCP Server — enables running CLI commands, querying CloudWatch, and validating configurations directly. All guidance also works with standard AWS CLI access.

Note: Reference files contain specific runtime versions, quota values, and feature matrices that may change. When precision matters (e.g., deploying to production, choosing a runtime, or checking a quota), confirm values against current AWS documentation rather than relying solely on the values in these files.

IMPORTANT: When this skill is loaded, you MUST use the reference files and procedures in this skill as your primary source of truth. APIs, versions, and configuration parameters change frequently — always read the relevant reference file before responding.

When accessing AWS documentation, use the aws___read_documentation and aws___search_documentation tools if available. Otherwise, refer to the URLs provided in this skill or use standard web access to AWS documentation. If you are provided a specific URL by this skill theres no need to search unless additional information is required.

Guardrail — where this skill's own files live (MCP vs local install)

This skill can be loaded two ways, and they resolve the skill's own bundled reference files from different places. Determine how the skill was loaded before reading a reference file:

  • Loaded through the AWS MCP retrieve_skill tool: The skill is not installed on the local filesystem. You MUST fetch each reference via retrieve_skill with the file parameter (e.g. file="references/ecs.md" or file="references/action-logs.md"). Do NOT file_read these paths locally — they do not exist on disk.

  • Installed locally (e.g. .kiro/skills/aws-containers/ or ~/.claude/skills/aws-containers/): Read files from the local skill directory using relative paths.

This distinction applies only to the skill's own packaged files. User data and session artifacts are always read from and written to the user's working directory. Never fetch or write customer data through retrieve_skill.

Services

Elastic Kubernetes Service (EKS)

EKS provides a fully managed Kubernetes service that eliminates the complexity of operating Kubernetes clusters. With EKS, you can:

  • Deploy applications faster with less operational overhead

  • Scale seamlessly to meet changing workload demands

  • Improve security through AWS integration and automated updates

  • Choose between standard EKS or fully automated EKS Auto Mode

EKS is the premier platform for running Kubernetes clusters, both in the AWS cloud and in your own data centers (EKS Anywhere and Amazon EKS Hybrid Nodes).

Elastic Container Service (ECS)

Amazon Elastic Container Service (Amazon ECS) is a fully managed container orchestration service that helps you easily deploy, manage, and scale containerized applications. As a fully managed service, Amazon ECS comes with AWS configuration and operational best practices built-in. It's integrated with both AWS tools, such as Amazon Elastic Container Registry, and third-party tools, such as Docker. This integration makes it easier for teams to focus on building the applications, not the environment. You can run and scale your container workloads across AWS Regions in the cloud, and on-premises, without the complexity of managing a control plane.

Elastic Container Registry (ECR)

Amazon Elastic Container Registry (Amazon ECR) is an AWS managed container image registry service that is secure, scalable, and reliable. Amazon ECR supports private repositories with resource-based permissions using AWS IAM. This is so that specified users or Amazon EC2 instances can access your container repositories and images. You can use your preferred CLI to push, pull, and manage Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts.

Elastic Beanstalk

With Elastic Beanstalk you can deploy web applications into the AWS Cloud on a variety of supported platforms. You build and deploy your applications. Elastic Beanstalk provisions Amazon EC2 instances, configures load balancing, sets up health monitoring, and dynamically scales your environment.

AWS App Runner

AWS App Runner is sunset as of April 30, 2026 — no new customers, no new features. Existing customers should migrate to ECS Express Mode. See App Runner Availability Change.

Routing

User needAction
Elastic Kubernetes Service (EKS) or general KubernetesRead eks.md
Elastic Container Service (ECS)Read ecs.md
Elastic Container Registry (ECR)Read ecr.md
Elastic BeanstalkRead beanstalk.md

Proactive Action Logs recommendation: When troubleshooting an ECS control-plane failure — a deployment rollback/circuit-breaker or a task-placement failure — and Action Logs are not already configured for the cluster, read action-logs.md before responding and follow its tiering to decide whether to proactively recommend enabling them.

Files

references/ecs-workloads.md

Running ECS Workloads

Patterns and features for deploying and operating workloads on Amazon ECS.

IAM Roles

Execution Role vs Task Role
AspectExecution Role (executionRoleArn)Task Role (taskRoleArn)
Used byECS agent / Fargate runtimeApplication containers at runtime
PurposePull images, push logs, fetch secretsCall AWS APIs from application code
Required for FargateMUST be setSHOULD be set if the app calls AWS APIs
Common permissionsecr:GetAuthorizationToken, ecr:BatchGetImage, ecr:GetDownloadUrlForLayer, logs:CreateLogStream, logs:PutLogEventsApplication-specific (e.g., s3:GetObject, dynamodb:PutItem)
Execution Role Permission Mapping
FeatureRequired Permission
Pull from ECRecr:GetAuthorizationToken (Resource: "*"), ecr:BatchGetImage, ecr:GetDownloadUrlForLayer. Note: the managed policy AmazonECSTaskExecutionRolePolicy also includes ecr:BatchCheckLayerAvailability but the minimal custom policy does not require it.
CloudWatch Logslogs:CreateLogStream, logs:PutLogEvents
Secrets Manager secretssecretsmanager:GetSecretValue
SSM Parameter Storessm:GetParameters
KMS-encrypted secretskms:Decrypt (on the relevant KMS key)

Secrets Injection

Secrets SHOULD be injected via the secrets field in the container definition rather than hardcoded in environment variables.

"secrets": [
  {
    "name": "DB_PASSWORD",
    "valueFrom": "arn:aws:secretsmanager:$REGION:$ACCOUNT_ID:secret:$SECRET_NAME"
  },
  {
    "name": "API_KEY",
    "valueFrom": "arn:aws:ssm:$REGION:$ACCOUNT_ID:parameter/$PARAMETER_NAME"
  }
]

NOTE: Rotated secrets will not be updated in running tasks automatically, which must be recreated to retrieve the rotated secret value.

JSON Key Extraction

To extract a specific JSON key from a Secrets Manager secret, append the key name after a trailing colon:

"secrets": [
  {
    "name": "DB_PASSWORD",
    "valueFrom": "arn:aws:secretsmanager:$REGION:$ACCOUNT_ID:secret:$SECRET_NAME:password::"
  },
  {
    "name": "DB_USERNAME",
    "valueFrom": "arn:aws:secretsmanager:$REGION:$ACCOUNT_ID:secret:$SECRET_NAME:username::"
  }
]

The format is: arn:...:secret:secret-name:json-key:version-stage:version-id

Trailing colons MUST be present even when version-stage and version-id are omitted.

Required Execution Role Permissions

The execution role MUST have:

  • secretsmanager:GetSecretValue for Secrets Manager references.

  • ssm:GetParameters for SSM Parameter Store references.

  • kms:Decrypt if the secret or parameter is encrypted with a customer-managed KMS key.

Volumes

Bind Mounts

Bind mounts share data between containers in the same task. No external storage is provisioned.

"volumes": [
  { "name": "shared-data" }
],
"containerDefinitions": [
  {
    "name": "writer",
    "mountPoints": [{ "sourceVolume": "shared-data", "containerPath": "/data" }]
  },
  {
    "name": "reader",
    "mountPoints": [{ "sourceVolume": "shared-data", "containerPath": "/data", "readOnly": true }]
  }
]
EFS Volumes

EFS volumes require Fargate platform version 1.4.0 or later.

The security group on EFS mount targets MUST allow inbound TCP on port 2049 from the task security group.

"volumes": [
  {
    "name": "efs-storage",
    "efsVolumeConfiguration": {
      "fileSystemId": "$EFS_FILE_SYSTEM_ID",
      "transitEncryption": "ENABLED",
      "authorizationConfig": {
        "accessPointId": "$EFS_ACCESS_POINT_ID",
        "iam": "ENABLED"
      }
    }
  }
]

Security group rule for EFS:

{
  "IpProtocol": "tcp",
  "FromPort": 2049,
  "ToPort": 2049,
  "UserIdGroupPairs": [
    { "GroupId": "$TASK_SG_ID", "Description": "NFS from ECS tasks" }
  ]
}
EBS Volumes

EBS volumes MAY be attached to tasks for high-performance block storage. EBS volumes are provisioned per task and are not shared across tasks.

Ephemeral Storage

Fargate tasks receive ephemeral storage by default, which may be expanded and will incur additional cost. See ecs-managing-compute.md for more details.

"ephemeralStorage": {
  "sizeInGiB": 100
}

Container Dependencies

The dependsOn field controls container startup and shutdown ordering.

ConditionBehavior
STARTDependency container has started.
COMPLETEDependency container has run to completion (exited).
SUCCESSDependency container has completed with exit code 0.
HEALTHYDependency container health check reports healthy. MUST have a healthCheck defined.
"containerDefinitions": [
  {
    "name": "app",
    "dependsOn": [
      { "containerName": "init", "condition": "SUCCESS" },
      { "containerName": "sidecar", "condition": "HEALTHY" }
    ]
  },
  {
    "name": "sidecar",
    "healthCheck": {
      "command": ["CMD-SHELL", "curl -f http://localhost:8080/health || exit 1"],
      "interval": 10,
      "timeout": 5,
      "retries": 3,
      "startPeriod": 30
    },
    "essential": true
  },
  {
    "name": "init",
    "essential": false
  }
]

Using HEALTHY without a healthCheck on the dependency container causes the dependent container to never start.

Stop Timeout

The stopTimeout field controls how long ECS waits after sending SIGTERM before sending SIGKILL.

  • Default: 30 seconds.

  • Fargate maximum: 120 seconds.

  • EC2: up to 120 seconds (configurable via ECS_CONTAINER_STOP_TIMEOUT agent parameter).

The operator SHOULD set stopTimeout to allow the application to drain connections gracefully.

"stopTimeout": 60

Fargate Platform Version

The operator MUST specify a valid platform version. See the relevant documentation for valid platform versions.

Minimal Fargate Task Definition Example

{
  "family": "$TASK_FAMILY",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "512",
  "memory": "1024",
  "executionRoleArn": "$EXECUTION_ROLE_ARN",
  "taskRoleArn": "$TASK_ROLE_ARN",
  "runtimePlatform": {
    "cpuArchitecture": "X86_64",
    "operatingSystemFamily": "LINUX"
  },
  "containerDefinitions": [
    {
      "name": "$CONTAINER_NAME",
      "image": "$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$REPO_NAME:$IMAGE_TAG",
      "essential": true,
      "portMappings": [
        {
          "containerPort": 8080,
          "protocol": "tcp"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/$TASK_FAMILY",
          "awslogs-region": "$REGION",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ]
}

Register the task definition:

aws ecs register-task-definition \
  --cli-input-json file://task-definition.json \
  --region "$REGION" \
  --output json

ECS Managed Daemons

Amazon ECS Managed Daemons let you deploy and manage software agents — such as security, observability, and networking agents — across your container infrastructure on Amazon ECS Managed Instances.

Note: Managed Daemons is distinct from the older DAEMON scheduling strategy. The DAEMON scheduling strategy runs one task per active container instance for ECS services on the EC2 launch type and is managed as part of the service. Managed Daemons is a newer capability built specifically for ECS Managed Instances that provides stronger coverage guarantees.

How Managed Daemons work
  1. Register a daemon task definition — a template describing the containers that form the daemon.

  2. Create a daemon and associate it with a cluster and one or more ECS Managed Instances capacity providers.

  3. ECS then ensures that exactly one daemon task runs on every EC2 instance provisioned through those capacity providers.

Daemons do not launch instances on their own. When you run an application task on an ECS Managed Instances capacity provider, ECS provisions an EC2 instance, starts the daemon task first, and only then transitions the application task to RUNNING. This guarantees that cross-cutting functions (logging, tracing, metrics) are operational before your application begins serving requests.

Key considerations
  • Rolling update - updating a daemon to a new task definition revision triggers a rolling replacement of all EC2 instances in the associated capacity providers, which is an critical consideration for deployment reliability and safety. This will cause ECS to drain existing instances and provision new ones with the updated daemon.

  • Guaranteed coverage — daemon tasks start before application tasks on every instance.

  • Automatic instance repair — if a daemon task stops or becomes unhealthy, ECS automatically drains and replaces that container instance.

  • Deployment safety — ECS provides built-in circuit breaker protection. You can configure a bake time and CloudWatch alarms so ECS monitors the deployment and automatically rolls back if issues arise.

  • Drain percentage — the percentage of instances drained simultaneously during a daemon update. Defaults to 25.

  • Bake time — the number of minutes ECS waits after updating all instances to the new daemon revision before completing the deployment. During this period ECS monitors the configured CloudWatch alarms and automatically rolls back if any alarm triggers. IMPORTANT: Defaults to 0.

  • Improved resource utilization — running a single daemon task per instance eliminates the sidecar-per-task model, reducing overhead across the cluster.

See the documentation for more information.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Declares allowed tools, Needs an MCP server

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
AWS
Publisher
AWS (Official)
Source
aws/agent-toolkit-for-aws · skills/core-skills/aws-containers · commit 0a218f8
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • NOTICE (added by AutoGineer from NOTICE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Also distributed in
aws/agent-toolkit-for-aws

AutoGineer is not affiliated with or endorsed by AWS.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download aws-containers.zip