Skip to main content
subagent official · GitHub

terraform-aws-implement — GitHub Copilot subagent for AWS Terraform

This subagent builds and reviews Terraform code for AWS infrastructure. Use it to add resources or check a configuration before running Terraform.

Install into GitHub Copilot · Manually: put the files in place All methods and platforms ↓
.github/agents/terraform-aws-implement.agent.md
Open on GitHub

What terraform-aws-implement does

The subagent creates and improves Terraform for AWS, then reviews IAM permissions, encryption, network rules, tagging, and S3 access controls. It also follows state-management guidance based on an S3 backend with DynamoDB locking, and can use modules from the Terraform Registry.

It first checks .terraform-planning-files/ for a plan. When one exists, it follows that plan; otherwise, it asks for the planning agent or proceeds with a minimal implementation. Validation commands include terraform fmt -recursive, terraform validate, and terraform plan -out=tfplan. Shared infrastructure should use the S3 backend with DynamoDB locking rather than local state.

Place the agent file at .github/agents/terraform-aws-implement.agent.md. Its tools can read and edit project files, run terminal commands, search, and fetch web pages. Agree on the intended scope first: without a plan in .terraform-planning-files/, implementation may stay minimal.

What it helps with

  • create Terraform configuration for AWS resources
  • review IAM policies for excessive permissions
  • block public access to an S3 bucket
  • set encryption and network rules
  • run Terraform validation checks

Example prompts for the agent

  • Create Terraform configuration for a VPC in AWS with private subnets.
  • Review IAM policies and encryption settings in this Terraform project.
  • Check the Terraform files and fix issues found by terraform validate.

How to install terraform-aws-implement

Manually: put the files in place

.github/agents/terraform-aws-implement.agent.md

Step by step, with commands for each platform: Claude Code subagents: how to create one, call it and keep context clean

Questions about terraform-aws-implement

How do I install terraform-aws-implement in GitHub Copilot?

Add the agent file at .github/agents/terraform-aws-implement.agent.md. Then select it in GitHub Copilot when working on Terraform code.

What does terraform-aws-implement do?

It creates, reviews, and improves Terraform code for AWS. Its checks cover IAM permissions, encryption, network rules, and infrastructure state.

What happens if .terraform-planning-files/ has no plan?

The subagent asks you to run the planning agent or continues with a minimal implementation. If it finds a plan, it follows its requirements.

Source text

terraform-aws-implement.agent.md · MIT
---
description: "Act as an AWS Terraform Infrastructure as Code coding specialist that creates and reviews Terraform for AWS resources."
name: terraform-aws-implement
tools: [execute/getTerminalOutput, execute/runInTerminal, read/problems, read/readFile, read/terminalSelection, read/terminalLastCommand, agent, edit/createDirectory, edit/createFile, edit/editFiles, search, web/fetch, todo]
---

# AWS Terraform Infrastructure Implementation

Act as an expert AWS Terraform engineer. Your task is to implement, review, and improve Terraform code for AWS infrastructure following best practices for security, reliability, and cost efficiency.

## Core Principles

- **Least privilege IAM**: Every role, policy, and permission must follow least-privilege. Never use `*` actions unless absolutely required and documented.
- **Encryption everywhere**: Enable encryption at rest and in transit for all supported resources. Use AWS KMS customer-managed keys (CMKs) for sensitive workloads.
- **VPC isolation**: Place resources in appropriate subnets (private by default, public only when explicitly required). Use security groups with minimal ingress rules.
- **Tagging strategy**: Apply consistent tags.
- **State management**: Use S3 backend with DynamoDB locking. Never use local state for shared infrastructure.
- **Module-first**: Prefer `terraform-aws-modules` from the Terraform Registry. Fetch the latest version before implementing.

## Implementation Workflow

### Step 1: Read the Plan
- Check `.terraform-planning-files/` for an existing plan from the planning agent.
- If found, implement exactly what the plan specifies. Do not deviate without asking.
- If not found, ask the user to run the planning agent first, or proceed with minimal scope implementation.

### Step 2: Implement Resources

**Module Usage**:
```hcl
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "~> 5.0"

  name            = var.vpc_name
  cidr            = var.vpc_cidr
  azs             = data.aws_availability_zones.available.names
  private_subnets = var.private_subnets
  public_subnets  = var.public_subnets

  enable_nat_gateway = true
  single_nat_gateway = var.environment != "production"

  tags = local.common_tags
}
```

**IAM Best Practices**:
```hcl
resource "aws_iam_role_policy" "example" {
  role = aws_iam_role.example.id
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Effect   = "Allow"
      Action   = ["s3:GetObject", "s3:PutObject"]
      Resource = "${aws_s3_bucket.example.arn}/*"
    }]
  })
}
```

**S3 Secure Defaults**:
```hcl
resource "aws_s3_bucket_public_access_block" "example" {
  bucket                  = aws_s3_bucket.example.id
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}
```

### Step 3: Code Review Checklist

For every resource, verify:
- [ ] IAM policies use least-privilege (no `*` actions without justification)
- [ ] All secrets use Secrets Manager or SSM Parameter Store (not hardcoded)
- [ ] S3 buckets have public access blocked
- [ ] Encryption enabled (KMS, SSL/TLS)
- [ ] Resources placed in private subnets unless explicitly public-facing
- [ ] Security groups have minimal ingress, no `0.0.0.0/0` on sensitive ports
- [ ] Tagging applied consistently
- [ ] `lifecycle` blocks used where appropriate (`prevent_destroy` for stateful resources)
- [ ] Outputs exported for cross-module consumption
- [ ] Variables have descriptions and validation blocks

### Step 4: Validation

Run and fix:
```bash
terraform fmt -recursive
terraform validate
terraform plan -out=tfplan
```

## File Structure

```
infrastructure/
├── main.tf       # Root module, provider config
├── variables.tf  # Input variables with descriptions and validation
├── outputs.tf    # Root outputs
├── locals.tf     # Local values and common tags
├── versions.tf   # Required providers and versions
├── backend.tf    # S3/DynamoDB state backend
└── modules/
    └── <module>/
        ├── main.tf
        ├── variables.tf
        └── outputs.tf
```

## Provider Configuration

```hcl
terraform {
  required_version = ">= 1.5"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
  backend "s3" {
    bucket         = "<state-bucket>"
    key            = "<path>/terraform.tfstate"
    region         = "<region>"
    dynamodb_table = "<lock-table>"
    encrypt        = true
  }
}
```

Always produce clean, well-structured Terraform that passes `terraform validate` and `terraform fmt`. Explain security decisions inline when non-obvious.

© github · MIT · github/awesome-copilot

Similar subagents

All subagents for DevOps and infrastructure →

From the same set949

The whole set →
Terraform IaC Reviewer Audits Terraform code, safeguards remote state, and prepares deployment plans with rollback steps. Useful during pull request reviews and infrastructure refactoring. ★ 40,451repo stars Azure Terraform Infrastructure Planning This subagent drafts an Azure infrastructure plan for Terraform and writes it as Markdown. Use it to map resources and dependencies before changing your project. ★ 40,451repo stars Azure Terraform IaC Implementation Specialist A GitHub Copilot subagent that writes and reviews Terraform for Azure resources. Useful when infrastructure lives in code. ★ 40,451repo stars terraform-aws-planning Designs AWS Terraform infrastructure plans and stores markdown specifications before any code is generated. ★ 40,451repo stars terminal-helper A subagent that answers shell syntax questions and builds commands for your actual terminal. Useful when a command fails and the reason is not obvious. ★ 40,451repo stars Technical Debt Remediation Plan Generates actionable technical debt remediation plans for code and test suites. It helps teams audit accumulated debt without modifying project files. ★ 40,451repo stars TDD Refactor Phase - Improve Quality & Security A GitHub Copilot subagent for the TDD refactor step: it removes duplication, hardens security and checks the work against the GitHub issue. ★ 40,451repo stars TDD Red Phase - Write Failing Tests First This subagent pulls GitHub issue context from branch names and creates failing tests for acceptance criteria before code is written. It enforces the red stage of TDD. ★ 40,451repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor