Generated banner for AWS Deployment
Generated logo for AWS Deployment

AWS Deployment

AWSOfficialPublished by AWS

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

From the author

Configures CI/CD pipelines using AWS CodePipeline, CodeBuild, CodeDeploy, CodeConnections, and CodeArtifact. Covers CodePipeline V2 (triggers, variables, execution modes, cross-account), buildspec.yml (caching, VPC, Docker), CodeDeploy strategies (blue/green, canary, linear), CodeArtifact (private package registries, auth tokens, cross-account), and source connections (GitHub, GitLab, Bitbucket). Applies when CodePipeline, CodeBuild, CodeDeploy, CodeConnections, CodeArtifact, buildspec.yml, appspec.yml, or CI/CD pipeline orchestration is referenced. Does NOT cover: ECS Fargate services or task definitions (use aws-containers), CDK Pipelines or cdk deploy (use aws-cdk), sam deploy (use aws-serverless), Amplify deployments (use aws-amplify), or GitHub Actions/GitLab CI.
— the description by AWS

AutoGineer summary

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

This skill provides guidance on configuring and managing end-to-end CI/CD pipelines within the AWS ecosystem. It covers the integration of source control connections, build environments, package management, and deployment strategies. The content focuses on service orchestration, security best practices, and troubleshooting common infrastructure-level failures in build and deployment processes.

What it does

  • Configures CI/CD pipelines using CodePipeline and CodeConnections.
  • Defines build environments and buildspec logic for CodeBuild.
  • Manages private package registries via CodeArtifact.
  • Implements deployment strategies like blue/green, canary, and linear using CodeDeploy.
  • Provides troubleshooting steps for pipeline, build, and deployment failures.
  • Details security configurations for service roles and cross-account access.

When to use it

  • When setting up automated build and deployment pipelines on AWS.
  • When integrating external source providers like GitHub, GitLab, or Bitbucket.
  • When managing private dependencies for build processes.
  • When implementing traffic shifting strategies for application updates.
  • When debugging pipeline stalls or deployment errors.

Advantages

  • Native integration with AWS security and IAM policies.
  • Supports complex deployment patterns like blue/green and canary.
  • Enables secure cross-account artifact management.
  • Provides centralized control over build and deployment phases.

Usage examples

“How do I set up a pipeline that pulls from GitHub and deploys to ECS?”
The agent provides a sequence to create a connection, configure a build stage for container packaging, and set up a deployment stage using blue/green traffic shifting.
“My CodeBuild project is hanging at the download source phase.”
The agent identifies the likely cause as a VPC configuration issue and suggests verifying the presence of a NAT gateway in the private subnets.
“How can I share packages across different AWS accounts?”
The agent explains how to configure CodeArtifact domain policies and use customer-managed KMS keys to enable cross-account access.
“How do I handle a failed deployment in CodeDeploy?”
The agent outlines how to use automated rollback settings or manual commands to stop and revert the deployment.

Install

  1. Download the skill as a ZIP:

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

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

Documentation by AWS

AWS Deploy (CI/CD)

Works best with the AWS MCP server for running CLI commands and validating configurations directly. All guidance also works with standard AWS CLI.

Critical Warnings

CodeConnections PENDING trap: Connections created via CLI/CloudFormation remain PENDING indefinitely — MUST complete OAuth in the AWS Console. No API-only path exists.

Cross-account triple requirement: Cross-account deploys need ALL THREE: (1) KMS key policy granting target account (use key ID, not alias), (2) S3 bucket policy for target account, (3) cross-account IAM role with trust policy. Missing any one = cryptic Access Denied.

CodeDeploy ApplicationStop uses PREVIOUS revision: Broken stop scripts in a prior deployment block ALL future deploys. Make stop scripts idempotent (exit 0 if service absent). Unblock with --ignore-application-stop-failures.

CodeBuild VPC without NAT: Builds in VPC subnets without NAT gateway hang at DOWNLOAD_SOURCE silently. Private subnets MUST have NAT gateway or VPC endpoints.

CodeConnections IAM: Use codeconnections: prefix for API calls and IAM policy Actions. Resource ARNs must match exactly — new resources use codeconnections prefix, existing resources may use codestar-connections prefix. Specify both in Resource if you have mixed-age resources.

UseConnection is over-permissive: codeconnections:UseConnection grants access to ALL repositories the connection can reach. MUST specify condition keys (codeconnections:FullRepositoryId, codeconnections:ProviderAction, codeconnections:BranchName) to limit CodeBuild to only the required repository.

How These Services Compose

CodeConnections → CodeBuild → CodeDeploy, orchestrated by CodePipeline.

LayerServiceRole
SourceCodeConnectionsAuthenticates to GitHub/GitLab/Bitbucket, delivers code
PackagesCodeArtifactPrivate package registry, dependency caching from public registries
Build/TestCodeBuildCompiles, tests, packages artifacts
DeployCodeDeployDeploys to EC2/ECS/Lambda with traffic shifting strategies
OrchestratorCodePipelineChains stages, manages transitions, approval gates

Default: V2 pipeline type with QUEUED execution mode. Use PARALLEL only when executions are fully independent.

Quick Navigation

You want to...Go to
Create a pipeline (V2, triggers, variables, modes)codepipeline.md
Connect GitHub/GitLab/Bitbucket sourcecodeconnections.md
Write buildspec.yml / configure buildscodebuild.md
Set up private package registry for buildscodeartifact.md
Configure deployment strategy (blue/green, canary)codedeploy.md
Cross-account or cross-region deploymentcodepipeline.md
Fix failing pipeline, build, or deploymenttroubleshooting.md

Common Workflows

TaskActionReference
Pipeline from GitHub to ECSCreate connection → CodeBuild Docker stage → CodeDeploy ECS blue/greencodepipeline, codedeploy
Pipeline stuck at sourceCheck connection status; if PENDING, complete OAuth in AWS Consoletroubleshooting
Build timing outCheck VPC/NAT, increase timeoutInMinutes, verify Docker privileged modecodebuild
Deploy to another accountConfigure KMS + S3 bucket policy + cross-account role, add RoleArn to actioncodepipeline
Roll back failed deploymentAuto-rollback on alarm/failure; manual: stop-deployment --auto-rollback-enabledcodedeploy
Lambda canary deploymentCodeBuild packages → CodeDeploy Lambda with canary traffic shiftingcodedeploy

Troubleshooting

Error/SymptomCauseFix
YAML_FILE_ERROR in CodeBuildMissing or malformed runtime-versions in buildspec (recommended for standard images)Add runtime-versions block in install phase
file already exists on CodeDeployRedeployment without overwrite configSet file_exists_behavior: OVERWRITE
Pipeline trigger not firingFile path filter checks only first 100 files in diffReduce path filter scope or merge smaller
PARALLEL mode wrong revisionRace between event and source actionUse QUEUED mode for sequential consistency
Docker: Cannot connect to daemonMissing privileged modeSet privilegedMode: true AND start dockerd in buildspec
CODEBUILD_CLONE_REF permission errorCodeBuild role missing UseConnectionAdd codeconnections:UseConnection to CodeBuild service role
Deployment never completesMinimumHealthyHosts too high for instance countEnsure healthy threshold < total instances
ECS deployment stuckHealth check failing on new task setVerify target group health check path/port

Security

  • MUST store secrets in Secrets Manager or Parameter Store; reference via CodeBuild type: SECRETS_MANAGER — MUST NOT embed in buildspec as PLAINTEXT

  • MUST use customer-managed KMS keys for cross-account artifact encryption (default encryption does not support cross-account)

  • SHOULD scope CodeBuild/CodeDeploy service roles to specific resource ARNs; MUST NOT use * for s3:GetObject or kms:Decrypt

  • MUST use CodeConnections (not personal access tokens) for source connections; OAuth tokens cannot be rotated automatically

  • See CodePipeline security best practices for comprehensive guidance

Not Covered

TopicUse instead
CDK Pipelines (aws-cdk-lib/pipelines)aws-cdk
sam deploy / SAM CLIaws-serverless
ECS service deployment config (circuit breaker, rolling params)aws-containers
GitHub Actions / GitLab CIThird-party tools, not covered

Files

references/troubleshooting.md

Troubleshooting

First Check These 5 Things

  1. Connection status: aws codeconnections get-connection --connection-arn ARN — if PENDING, complete OAuth in console

  2. Pipeline state: aws codepipeline get-pipeline-state --name NAME — find which action failed and why

  3. Build logs: aws codebuild batch-get-builds --ids BUILD_ID — check phases array for first failed phase

  4. Deployment status: aws deploy get-deployment --deployment-id ID — check deploymentOverview and errorInformation

  5. Service role permissions: aws iam simulate-principal-policy --policy-source-arn ROLE_ARN --action-names ACTION — verify IAM

Error Table

CodePipeline
Error/SymptomCauseFix
InternalError on actionArtifact bucket wrong region or KMS permission deniedEnsure S3 bucket same region as pipeline; check KMS key policy
ActionConfigurationErrorReferenced resource deleted (CodeBuild project, deployment group)Verify all resource names in action config still exist
AccessDeniedException on actionService role missing permissions for the action's providerAdd required permissions to pipeline service role
Pipeline stuck InProgressDisabled transition, waiting approval, or slow actionCheck get-pipeline-state for actionStates; look for PENDING approval
PipelineExecutionNotStoppableExceptionExecution in terminal state (Succeeded/Failed)Already finished — no action needed
InvalidStructureException on create/updateMalformed pipeline JSONValidate JSON; check all required fields per action type
StageNotRetryableExceptionStage not in Failed stateOnly failed stages can be retried
RevisionOutOfSyncExceptionPARALLEL mode race between executionsUse QUEUED mode for sequential consistency
Trigger fires on unrelated changesFile path filter skipped (>100 files in commit)Add branch filter as primary gate
Trigger never firessourceActionName mismatch or connection PENDINGVerify trigger config matches source action name exactly
AccessDenied on cross-account actionMissing KMS/S3/IAM trust (need all three)Verify: KMS key policy, S3 bucket policy, target role trust policy
CodeBuild
Error/SymptomCauseFix
DOWNLOAD_SOURCE failureVPC without NAT, connection PENDING, or repo not foundCheck VPC NAT gateway; verify connection AVAILABLE; check repo access
YAML_FILE_ERRORMissing runtime-versions, bad YAML syntax, or wrong filenameAdd runtime-versions block; validate YAML; file must be buildspec.yml at root
Build hangs indefinitelyVPC subnet without NAT gateway or S3 endpointAdd NAT gateway to private subnet route table
Cannot connect to Docker daemonPrivileged mode not enabled or dockerd not startedSet privilegedMode=true AND start dockerd in pre_build phase
BUILD_GENERAL1_SMALL not availableCompute type not available in region or quota reachedTry different compute type or request quota increase
Build timeout (default 60 min)Long-running build or hanging dependency downloadIncrease timeoutInMinutes; check for network issues (VPC)
CODEBUILD_CLONE_REF permission errorCodeBuild role missing UseConnectionAdd codeconnections:UseConnection to CodeBuild service role (not pipeline role)
CLIENT_ERROR: unable to locate credentialsService role insufficient for operationCheck CodeBuild service role has needed permissions
Artifacts not found by next stagebase-directory wrong or files pattern too restrictiveVerify artifacts.base-directory matches build output location
CodeDeploy
Error/SymptomCauseFix
"no instances were found"Tag filters match zero instances or agent not runningVerify EC2 tags; check codedeploy-agent status on instances
"specified key does not exist"S3 revision artifact location wrongVerify S3 path matches revision location in create-deployment
ApplicationStop fails every deployPrevious revision's stop script is brokenDeploy fix-only revision or use --ignore-application-stop-failures
"file already exists at this location"file_exists_behavior not setSet OVERWRITE in deployment or appspec files.overwrite: true
InstanceLimitExceededASG scaling faster than deployment completesSuspend ASG Launch process, fix deployment, resume
"agent was not able to receive the lifecycle event"Agent not running or network timeoutSSH to instance; sudo service codedeploy-agent status; check SG
HEALTH_CONSTRAINTS errorNot enough healthy instances to proceedReduce minimumHealthyHosts or fix unhealthy instances
ECS deployment stuckHealth check failing on replacement task setVerify target group health check path and port match container
ECS "replacement task set did not stabilize"Task crashes on startup or resource limitsCheck ECS task stopped reason; verify CPU/memory, image exists
Lambda deployment failed at BeforeAllowTrafficValidation Lambda errored or timed outCheck Lambda logs; ensure it calls codedeploy:PutLifecycleEventHookExecutionStatus
CodeConnections
Error/SymptomCauseFix
Connection stays PENDINGCreated via CLI/CFN without console completionComplete OAuth handshake in AWS Console
"Unable to use Connection"IAM policy only has one service prefixAdd codeconnections:UseConnection and codestar-connections:UseConnection
Repository not foundWrong FullRepositoryId format or no repo accessUse org/repo format (case-sensitive); verify app has repo access
Host in VPC_CONFIG_FAILED_INITIALIZATIONNetwork or TLS issueVerify VPC routes to provider endpoint; validate TLS certificate
Cookie error during GitHub authorizationNon-owner attempting GitHub App installOrganization owner must perform the installation

Diagnostic Commands

# Pipeline: Get execution history
aws codepipeline list-pipeline-executions --pipeline-name NAME --max-items 5

# Pipeline: Get action execution details
aws codepipeline list-action-executions --pipeline-name NAME \
  --filter pipelineExecutionId=EXEC_ID

# Build: Get failed phase details
aws codebuild batch-get-builds --ids BUILD_ID \
  --query "builds[0].phases[?phaseStatus=='FAILED']"

# Build: Stream logs (if CloudWatch configured)
aws logs tail /aws/codebuild/PROJECT_NAME --follow

# Deploy: Get deployment target status
aws deploy list-deployment-targets --deployment-id DEPLOY_ID

# Deploy: Get lifecycle event details for failed target
aws deploy get-deployment-target --deployment-id DEPLOY_ID --target-id TARGET_ID

# Connections: List all with status
aws codeconnections list-connections --query "Connections[].[ConnectionName,ConnectionStatus]" --output table

End-to-End Trace

When a pipeline fails and you don't know which service caused it:

  1. aws codepipeline get-pipeline-state --name NAME → find failed stage/action

  2. Check latestExecution.externalExecutionId on the failed action — this is the build ID or deployment ID

  3. For build actions: aws codebuild batch-get-builds --ids BUILD_ID

  4. For deploy actions: aws deploy get-deployment --deployment-id DEPLOY_ID

  5. For source actions: aws codeconnections get-connection --connection-arn ARN (check status)

Security

  • MUST NOT include secrets, credentials, or sensitive data in diagnostic commands shared with users

  • Use CloudTrail to audit API calls across all CodeSuite services when investigating security incidents

  • Verify IAM permissions using aws iam simulate-principal-policy rather than granting broad access for debugging

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: 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-deployment · 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-deployment.zip