1
0
mirror of synced 2026-05-22 14:43:35 +00:00
Files
Tesfagabir Meharizghi 83b72e1dda Add Terraform Infrastructure-as-Code (IaC) patterns for AgentCore deployment (#654)
* feat: Add Terraform basic-runtime pattern

* Modified the Terraform basic-runtime with test script, README, default region

* feat: Add Terraform mcp-server-runtime pattern

* feat: Add Terraform multi-agent-runtime pattern

* feat: Add Terraform end-to-end-weather-agent runtime pattern

* Added Terraform main README

* Fixed basic runtime test script

* docs: add Terraform support to IaC README

* Replaced resources to intuitive names, removed hardcoded values, cleaned README

* Enhanced Terraform READMEs

* Removed unused imports

---------

Co-authored-by: Tesfagabir Meharizghi <mehariz@amazon.com>
2025-11-24 08:38:56 -05:00

66 lines
1.6 KiB
Terraform

# ============================================================================
# ECR Repository - Container Registry for Weather Agent Image
# ============================================================================
# Weather Agent ECR Repository
resource "aws_ecr_repository" "weather_ecr" {
name = "${var.stack_name}-${var.ecr_repository_name}"
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
force_delete = true
tags = {
Name = "${var.stack_name}-agent-ecr-repository"
Module = "ECR"
Agent = "WeatherAgent"
}
}
# ECR Repository Policy - Weather Agent
resource "aws_ecr_repository_policy" "weather_ecr" {
repository = aws_ecr_repository.weather_ecr.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Sid = "AllowPullFromAccount"
Effect = "Allow"
Principal = {
AWS = "arn:aws:iam::${data.aws_caller_identity.current.id}:root"
}
Action = [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
})
}
# ECR Lifecycle Policy - Weather Agent - Keep last 5 images
resource "aws_ecr_lifecycle_policy" "weather_ecr" {
repository = aws_ecr_repository.weather_ecr.name
policy = jsonencode({
rules = [
{
rulePriority = 1
description = "Keep last 5 images"
selection = {
tagStatus = "any"
countType = "imageCountMoreThan"
countNumber = 5
}
action = {
type = "expire"
}
}
]
})
}