View a markdown version of this page

Terraform을 사용하여 AWS DevOps 에이전트 시작하기 - AWS DevOps 에이전트

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Terraform을 사용하여 AWS DevOps 에이전트 시작하기

개요

이 가이드에서는 Terraform을 사용하여 AWS DevOps 에이전트 리소스를 생성하고 배포하는 방법을 보여줍니다. Terraform 구성은 에이전트 공간, IAM 역할, 운영자 앱 및 AWS 계정 연결 생성을 자동화합니다.

Terraform 접근 방식은 필요한 모든 리소스를 코드형 인프라로 정의하여 CLI 온보딩 가이드에 설명된 수동 단계를 자동화합니다.

AWS DevOps 에이전트는 미국 동부(버지니아 북부), 미국 서부(오레곤), 아시아 태평양(시드니), 아시아 태평양(도쿄), 유럽(프랑크푸르트) 및 유럽(아일랜드)의 6개 AWS 리전에서 사용할 수 있습니다. 지원되는 리전에 대한 자세한 내용은 섹션을 참조하세요지원되는 리전:.

사전 조건

시작하기 전에 다음 항목이 준비되었는지 확인합니다.

  • Terraform >= 1.0 설치됨

  • AWS 적절한 자격 증명으로 CLI 설치 및 구성

  • 모니터링(기본) AWS 계정에 대한 하나의 계정

  • (선택 사항) 교차 AWS 계정 모니터링을 설정하려는 경우 두 번째 계정

이 가이드에서 다루는 내용

이 가이드는 두 부분으로 나뉩니다.

  • 1부 - 운영자 앱과 모니터링 계정의 AWS 연결을 사용하여 에이전트 공간을 배포합니다. 이 부분을 완료한 후 에이전트는 해당 계정의 문제를 모니터링할 수 있습니다.

  • 2부(선택 사항) - 서비스 계정에 대한 소스 AWS 연결을 추가하고 교차 계정 IAM 역할과 에코 Lambda를 해당 계정에 배포합니다. 이렇게 하면 에이전트 공간이 계정 전체에서 리소스를 모니터링할 수 있습니다.

생성할 리소스

1부: 계정 모니터링

  • IAM 역할(DevOpsAgentRole-AgentSpace-*) - 계정을 모니터링하기 위해 DevOps 에이전트 서비스에서 수임합니다. AIDevOpsAgentAccessPolicy 관리형 정책과 Resource Explorer 서비스 연결 역할 생성을 허용하는 인라인 정책을 포함합니다.

  • IAM 역할(DevOpsAgentRole-WebappAdmin-*) - 에이전트 작업에 대한 AIDevOpsOperatorAppAccessPolicy 관리형 정책이 있는 운영자 앱 역할입니다.

  • 에이전트 공간(구성 가능한 이름) - awscc_devopsagent_agent_space 리소스를 사용하여 생성된 중앙 에이전트 공간입니다. 운영자 앱 구성을 포함합니다.

  • 연결(AWS 모니터) - awscc_devopsagent_association 리소스를 사용하여 모니터링 계정을 에이전트 스페이스에 연결합니다.

  • 연결(AWS 소스) - (선택 사항) 교차 계정 모니터링을 위해 서비스 계정을 에이전트 스페이스에 연결합니다.

2부: 서비스 계정(선택 사항)

  • IAM 역할(DevOpsAgentRole-SecondaryAccount-TF) - 이름이 고정된 교차 계정 역할입니다. 모니터링 계정의 에이전트 공간에서 신뢰합니다. AIDevOpsAgentAccessPolicy 관리형 정책과 Resource Explorer 서비스 연결 역할 생성을 허용하는 인라인 정책을 포함합니다.

  • Lambda 함수(echo-service-tf) - 입력 이벤트를 에코백하는 간단한 예제 서비스입니다.

설정

1단계: 샘플 리포지토리 복제

git clone https://github.com/aws-samples/sample-aws-devops-agent-terraform.git cd sample-aws-devops-agent-terraform

2단계: 변수 구성

예제 변수 파일을 복사하여 환경에 맞게 사용자 지정합니다.

cp terraform.tfvars.example terraform.tfvars

에이전트 스페이스 이름 및 설명terraform.tfvars으로를 편집합니다.

agent_space_name = "MyCompanyAgentSpace" agent_space_description = "DevOps Agent Space for monitoring production workloads"

1부: 에이전트 공간 배포

이 섹션에서는 모니터링 계정에 에이전트 공간, IAM 역할, 운영자 앱 및 AWS 연결을 생성합니다.

간소화된 설정을 위해 제공된 배포 스크립트를 사용합니다.

./deploy.sh

이 스크립트는 자동으로 다음을 수행합니다.

  • 사전 조건 확인(Terraform, AWS CLI, 자격 증명)

  • 필요한 경우 예제terraform.tfvars에서 생성

  • Terraform 초기화, 검증, 계획 및 적용

또는 수동 제어를 선호하는 경우:

terraform init terraform plan terraform apply

배포를 확인하라는 메시지가 yes 표시되면를 입력합니다.

2단계: 출력 기록

배포가 완료되면 Terraform이 출력을 인쇄합니다. 나중에 사용할 수 있도록 다음 값을 기록합니다.

Outputs: agent_space_id = "abc123" agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/abc123" agent_space_name = "MyCompanyAgentSpace" devops_agentspace_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-AgentSpace-a1b2c3d4" devops_operator_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-WebappAdmin-a1b2c3d4" primary_account_id = "<MONITORING_ACCOUNT_ID>" primary_account_association_id = "assoc-xyz"

2부를 완료하려는 경우 agent_space_arn 값을 저장합니다. 서비스 계정 리소스를 구성하는 데 필요합니다.

3단계: 배포 확인

배포 후 확인 스크립트를 실행합니다.

./post-deploy.sh

또는 AWS CLI를 사용하여 에이전트 공간이 성공적으로 생성되었는지 확인합니다.

aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>

이 시점에서 에이전트 공간은 운영자 앱이 활성화되고 모니터링 계정이 연결된 상태로 배포됩니다. 에이전트는이 계정의 문제를 모니터링할 수 있습니다.

2부(선택 사항): 교차 계정 모니터링 추가

이 섹션에서는 에이전트 공간이 두 번째 AWS 계정(서비스 계정)의 리소스를 모니터링할 수 있도록 설정을 확장합니다. 여기에는 다음 두 가지 작업이 포함됩니다.

  1. 서비스 계정을 가리키는 소스 AWS 연결 추가.

  2. 교차 계정 IAM 역할과 에코 Lambda 함수를 서비스 계정에 배포합니다.

중요

계속하기 전에 1부를 완료해야 합니다. 서비스 계정 리소스에는 파트 1 배포 출력agent_space_arn의가 필요합니다.

1단계: 서비스 계정 ID 구성

에서 서비스 계정 ID를 terraform.tfvars설정합니다.

service_account_id = "<YOUR_SERVICE_ACCOUNT_ID>"

2단계: 에이전트 공간 ARN 설정

1부 출력(2단계)에서 agent_space_arn 값을 복사하고에서 설정합니다terraform.tfvars.

agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>"

서비스 계정 리소스는이 값을 사용하여 보조 계정 역할에 대한 신뢰 정책의 범위를 지정합니다. 이러한 리소스는이 값이 설정된 경우에만 생성됩니다.

3단계: `aws.service` 공급자 구성

에서 서비스 계정의 자격 증명을 사용하여 aws.service 공급자 별칭을 main.tf구성합니다. 명명된 프로필 또는 수임 역할을 사용할 수 있습니다.

프로필 사용:

provider "aws" { alias = "service" region = var.aws_region profile = "your-service-account-profile" }

또는 수임 역할 사용:

provider "aws" { alias = "service" region = var.aws_region assume_role { role_arn = "arn:aws:iam::<SERVICE_ACCOUNT_ID>:role/OrganizationAccountAccessRole" } }

4단계: 배포

업데이트된 구성을 적용합니다.

terraform apply

이렇게 하면 서비스 계정에 다음 리소스가 생성됩니다.

  • 모니터링 계정의 에이전트 공간을 신뢰하는 IAM 역할(DevOpsAgentRole-SecondaryAccount-TF)

  • 예제 서비스로 사용되는 에코 Lambda 함수(echo-service-tf)

또한 서비스 계정을 연결하는 소스 AWS 연결을 모니터링 계정에 생성합니다.

5단계: 배포 확인

에코 서비스를 테스트하여 Lambda 함수가 성공적으로 배포되었는지 확인합니다.

aws lambda invoke \ --function-name echo-service-tf \ --payload '{"test": "hello world"}' \ --profile <your-service-account-profile> \ --region <REGION> \ response.json cat response.json

문제 해결

IAM 전파 지연

  • 구성에는 IAM 역할 생성과 에이전트 공간 생성 time_sleep 사이에 30초가 포함됩니다. DevOps 에이전트 서비스는 에이전트 스페이스 생성 중에 운영자 역할의 신뢰 정책을 검증하며, IAM이 완전히 전파되지 않은 경우 실패할 수 있습니다. 그래도 신뢰 정책 오류가 계속 표시되면 잠시 기다렸다가 terraform apply 다시 실행합니다. IAM 역할이 이미 존재하고 적용이 중단된 위치를 선택합니다.

권한 오류

  • 자격 AWS 증명에 역할 및 정책을 생성하는 데 필요한 IAM 권한이 있는지 확인합니다.

  • 신뢰 정책 조건이 계정 ID와 일치하는지 확인합니다.

교차 계정 배포 실패

  • 서비스 계정의 자격 증명으로 aws.service 공급자를 구성해야 합니다. 명명된 프로필 또는 수임 역할 블록을 사용합니다.

  • agent_space_arn 값이 파트 1 출력의 ARN과 일치하는지 확인합니다.

Terraform 리소스 유형을 찾을 수 없음

  • awscc 공급자 버전 ~> 1.0 이상이 있는지 확인합니다. awscc_devopsagent_agent_spaceawscc_devopsagent_association 리소스에는 AWS Cloud Control 공급자가 필요합니다.

정리

모든 리소스를 제거하려면 2부를 배포한 경우 역순으로 삭제합니다.

./cleanup.sh

또는 수동으로 다음을 수행합니다.

terraform destroy

경고: 그러면 에이전트 공간과 모든 관련 데이터가 영구적으로 삭제됩니다. 계속하기 전에 중요한 정보를 백업했는지 확인합니다.

보안 고려 사항

  • Terraform 구성은 aidevops.amazonaws.com 서비스 보안 주체만 해당 역할을 수임하도록 허용하는 신뢰 정책을 사용하여 IAM 역할을 생성합니다.

  • 신뢰 정책에는 특정 AWS 계정 및 에이전트 공간 ARN에 대한 액세스를 제한하는 조건이 포함됩니다.

  • 모든 정책은 최소 권한 원칙을 따릅니다. 조직의 보안 요구 사항에 따라 IAM 정책을 검토하고 사용자 지정합니다.

  • 교차 계정 역할(DevOpsAgentRole-SecondaryAccount-TF)은 고정된 이름을 사용하며 특정 에이전트 공간 ARN으로 범위가 지정됩니다.

다음 단계

Terraform을 사용하여 AWS DevOps 에이전트를 배포한 후:

  1. DevOps 에이전트 AWS 사용 설명서에서 DevOps 에이전트 기능의 전체 범위에 대해 알아봅니다.

  2. 자동화된 인프라 관리를 위해 Terraform 배포를 CI/CD 파이프라인에 통합하는 것이 좋습니다.

추가 리소스