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
Download the skill as a ZIP:
https://autogineer.com/agent-skills/aws/aws-containers/downloadUnzip 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_skilltool: The skill is not installed on the local filesystem. You MUST fetch each reference viaretrieve_skillwith thefileparameter (e.g.file="references/ecs.md"orfile="references/action-logs.md"). Do NOTfile_readthese 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 need | Action |
|---|---|
| Elastic Kubernetes Service (EKS) or general Kubernetes | Read eks.md |
| Elastic Container Service (ECS) | Read ecs.md |
| Elastic Container Registry (ECR) | Read ecr.md |
| Elastic Beanstalk | Read 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
- ATTRIBUTION.mdAdded by AutoGineer893 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer67 B
- SKILL.md6.5 KiB
- references/action-logs.md13.1 KiB
- references/beanstalk-configuration.md5.3 KiB
- references/beanstalk-platforms.md3.2 KiB
- references/beanstalk.md664 B
- references/ecr.md6.0 KiB
- references/ecs-gateway.md3.3 KiB
- references/ecs-gpu-sharing.md2.4 KiB
- references/ecs-managing-compute.md10.4 KiB
- references/ecs-workloads.md12.1 KiB
- references/ecs.md1.6 KiB
- references/eks-auto-mode.md4.1 KiB
- references/eks-capabilities.md1.2 KiB
- references/eks-control-plane.md4.0 KiB
- references/eks-load-balancer-controller.md13.3 KiB
- references/eks-managing-compute.md10.9 KiB
- references/eks-networking.md2.9 KiB
- references/eks.md1.2 KiB
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
| Aspect | Execution Role (executionRoleArn) | Task Role (taskRoleArn) |
|---|---|---|
| Used by | ECS agent / Fargate runtime | Application containers at runtime |
| Purpose | Pull images, push logs, fetch secrets | Call AWS APIs from application code |
| Required for Fargate | MUST be set | SHOULD be set if the app calls AWS APIs |
| Common permissions | ecr:GetAuthorizationToken, ecr:BatchGetImage, ecr:GetDownloadUrlForLayer, logs:CreateLogStream, logs:PutLogEvents | Application-specific (e.g., s3:GetObject, dynamodb:PutItem) |
Execution Role Permission Mapping
| Feature | Required Permission |
|---|---|
| Pull from ECR | ecr: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 Logs | logs:CreateLogStream, logs:PutLogEvents |
| Secrets Manager secrets | secretsmanager:GetSecretValue |
| SSM Parameter Store | ssm:GetParameters |
| KMS-encrypted secrets | kms: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:GetSecretValuefor Secrets Manager references.ssm:GetParametersfor SSM Parameter Store references.kms:Decryptif 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.
| Condition | Behavior |
|---|---|
START | Dependency container has started. |
COMPLETE | Dependency container has run to completion (exited). |
SUCCESS | Dependency container has completed with exit code 0. |
HEALTHY | Dependency 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
HEALTHYwithout ahealthCheckon 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_TIMEOUTagent parameter).
The operator SHOULD set stopTimeout to allow the application to drain connections gracefully.
"stopTimeout": 60Fargate 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 jsonECS 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
DAEMONscheduling strategy. TheDAEMONscheduling 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
Register a daemon task definition — a template describing the containers that form the daemon.
Create a daemon and associate it with a cluster and one or more ECS Managed Instances capacity providers.
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 or AWS.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download aws-containers.zip