Amazon ECS MCP 서버 시작하기
Amazon ECS MCP 서버 시작하기
이 가이드는 AI 코드 어시스턴트와 함께 Amazon ECS MCP 서버를 설정하고 사용하는 단계를 안내해요. 환경을 구성하고 서버에 연결한 뒤 자연어 상호 작용으로 Amazon ECS 클러스터를 관리하기 시작하는 방법을 배웁니다.
출처: 문서
본문
참고: Amazon ECS MCP 서버는 미리 보기 릴리스이며 변경될 수 있어요.
사전 요구 사항
시작하기 전에 다음을 확인하세요:
- Amazon ECS에 액세스할 수 있는 AWS 계정을 만들었는지
- 자격 증명으로 AWS CLI를 설치하고 구성했는지
- Python 3.10+를 설치했는지
- uv를 설치했는지
설정(Setup)
사전 요구 사항 확인
Python 버전이 3.10 이상인지 확인합니다:
python3 --version
uv 설치를 확인합니다:
uv --version
AWS CLI 구성을 확인합니다:
aws configure list
IAM 권한 설정
AWS 서비스에 읽기 전용 요청을 하고 MCP 서버와 상호 작용하려면 IAM 권한이 필요해요. 보다 세밀한 제어를 위해 AWS 관리형 정책이나 단일 사용자 지정 정책을 활용할 수 있습니다.
옵션 1: 관리형 및 사용자 지정 정책 결합
- 모든 AWS 서비스에 대한 읽기 전용 액세스를 위해 AWS 관리형 정책
ReadOnlyAccess를 연결합니다. - MCP 권한을 위해 추가 사용자 지정 정책을 만들고 연결합니다(다음 MCP 권한 JSON 참고).
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MCPServerAccess",
"Effect": "Allow",
"Action": [
"ecs-mcp:InvokeReadOnlyTools",
"ecs-mcp:UseMcp"
],
"Resource": "*"
}
]
}
옵션 2: 단일 사용자 지정 정책(가장 세밀한 제어)
또는 AWS 서비스 권한과 MCP 권한을 모두 포함하는 단일 사용자 지정 JSON 정책을 만들고 연결할 수 있어요:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MCPServerAccess",
"Effect": "Allow",
"Action": [
"ecs-mcp:InvokeReadOnlyTools",
"ecs-mcp:UseMcp"
],
"Resource": "*"
},
{
"Sid": "ECSReadOnlyAccess",
"Effect": "Allow",
"Action": [
"ecs:ListAccountSettings",
"ecs:ListClusters",
"ecs:ListContainerInstances",
"ecs:ListTaskDefinitions",
"ecs:ListServices",
"ecs:ListServiceDeployments",
"ecs:ListTasks",
"ecs:DescribeClusters",
"ecs:DescribeCapacityProviders",
"ecs:DescribeContainerInstances",
"ecs:DescribeTaskDefinition",
"ecs:DescribeServices",
"ecs:DescribeServiceDeployments",
"ecs:DescribeServiceRevisions",
"ecs:DescribeTaskSets",
"ecs:DescribeTasks"
],
"Resource": "*"
},
{
"Sid": "CloudWatchLogsReadOnlyAccess",
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:GetLogEvents",
"logs:FilterLogEvents"
],
"Resource": "*"
},
{
"Sid": "ELBReadOnlyAccess",
"Effect": "Allow",
"Action": [
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTargetGroups",
"elasticloadbalancing:DescribeListeners"
],
"Resource": "*"
},
{
"Sid": "EC2ReadOnlyAccess",
"Effect": "Allow",
"Action": [
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeRouteTables",
"ec2:DescribeNetworkInterfaces"
],
"Resource": "*"
},
{
"Sid": "ECRReadOnlyAccess",
"Effect": "Allow",
"Action": [
"ecr:DescribeRepositories",
"ecr:DescribeImages"
],
"Resource": "*"
},
{
"Sid": "IAMReadOnlyAccessForSecurityAnalysis",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:ListAttachedRolePolicies",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:ListRolePolicies",
"iam:GetRolePolicy"
],
"Resource": "*"
}
]
}
AI 어시스턴트 선택 및 구성
MCP 호환 AI 어시스턴트나 MCP 호환 도구를 설치합니다. 예를 들어 Kiro, Cline, Cursor, Claude Code를 사용할 수 있어요. 그런 다음 MCP Proxy for AWS를 통해 Amazon ECS MCP 서버를 사용하도록 AI 코드 어시스턴트를 설정합니다. 이 프록시는 Amazon ECS MCP 서버에 대한 안전하고 인증된 액세스에 필요하며, 로컬 AWS 자격 증명을 사용해 AWS SigV4 인증을 처리하는 클라이언트 측 브리지 역할을 합니다. 아래 예시는 Kiro CLI를 사용합니다.
MCP 구성 파일 찾기
macOS/Linux:
~/.kiro/settings/mcp.json
Windows:
%USERPROFILE%\.kiro\settings\mcp.json
구성 파일이 존재하지 않으면 만듭니다.
MCP 서버 구성 추가
{region} 자리 표시자를 원하는 리전(예: us-west-2)으로 바꾸세요. 전체 리전 목록은 Linux containers on AWS Fargate를 참고하세요. 또한 {profile} 자리 표시자를 AWS CLI 프로필 이름(예: default)으로 바꾸세요.
Mac/Linux의 경우:
{
"mcpServers": {
"ecs-mcp": {
"disabled": false,
"type": "stdio",
"command": "uvx",
"args": [
"mcp-proxy-for-aws@latest",
"https://ecs-mcp.{region}.api.aws/mcp",
"--service",
"ecs-mcp",
"--profile",
"{profile}",
"--region",
"{region}"
]
}
}
}
Windows의 경우:
{
"mcpServers": {
"ecs-mcp": {
"disabled": false,
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"mcp-proxy-for-aws@latest",
"mcp-proxy-for-aws.exe",
"https://ecs-mcp.{region}.api.aws/mcp",
"--service",
"ecs-mcp",
"--profile",
"{profile}",
"--region",
"{region}"
]
}
}
}
구성 확인
Kiro CLI(kiro-cli)를 다시 시작하고, /mcp로 MCP 서버가 로드되었는지 확인하고 /tools로 사용 가능한 도구를 확인합니다.
설정 확인
연결 테스트
AI 어시스턴트에게 간단한 질문을 해 연결을 확인합니다:
List all ECS clusters in my AWS account
Amazon ECS 클러스터 목록이 표시되어야 해요.
Amazon ECS MCP 서버를 사용하는 AI 어시스턴트와 대화하기
예시 1: 배포 모니터링
Check deployment status for my web-service in production-cluster
Show me the ALB URL for my deployed service
Get service events for the last hour
예시 2: 컨테이너 상태 조사
Show me all tasks that failed in the last 2 hours
Why are my containers failing health checks?
Display container logs for my api-service
예시 3: 실패 트러블슈팅
Analyze task failures in my production cluster
Check for image pull errors in the last 30 minutes
Why is my task definition stuck in DELETE_IN_PROGRESS state?
예시 4: 구성 검사
Show me the network configuration for my web-service
What security groups are attached to my service?
List all VPC and subnet details for my ECS service
예시 5: 보안 태세 평가
Are there any security issues with my production cluster?
Analyze IAM roles and policies for my web-service
Check for overly permissive security groups in my ECS cluster
일반적인 구성 및 모범 사례
여러 AWS 프로필
여러 AWS 계정으로 작업한다면 별도의 MCP 서버 구성을 만드세요.
Mac/Linux의 경우:
{
"mcpServers": {
"ecs-mcp-prod": {
"disabled": false,
"type": "stdio",
"command": "uvx",
"args": [
"mcp-proxy-for-aws@latest",
"https://ecs-mcp.{region}.api.aws/mcp",
"--service",
"ecs-mcp",
"--profile",
"production",
"--region",
"us-west-2"
]
},
"ecs-mcp-dev": {
"disabled": false,
"type": "stdio",
"command": "uvx",
"args": [
"mcp-proxy-for-aws@latest",
"https://ecs-mcp.{region}.api.aws/mcp",
"--service",
"ecs-mcp",
"--profile",
"development",
"--region",
"us-east-1"
]
}
}
}
보안 모범 사례
허용된 입력 메커니즘을 통해 시크릿이나 민감한 정보를 전달하지 마세요:
- 구성 파일에 시크릿이나 자격 증명을 포함하지 마세요.
- 모델에 대한 프롬프트에 민감한 정보를 직접 전달하지 마세요.
- 태스크 정의나 서비스 구성에 시크릿을 포함하지 마세요.
- 애플리케이션 로그에 민감한 정보를 로깅하지 마세요.
- 민감한 정보를 저장하려면 Secrets Manager 또는 Parameter Store를 사용하세요.
도구 구성
전체 도구 및 구성 목록은 Amazon ECS MCP Server Tool Configurations를 참고하세요.