AWS Organizations를 사용하여 Transit Gateway Attachment에 자동으로 태그 지정 - AWS 권장 가이드

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

AWS Organizations를 사용하여 Transit Gateway Attachment에 자동으로 태그 지정

작성자: Richard Milner-Watts(AWS), Haris Bin Ayub(AWS) 및 John Capps(AWS)

코드 리포지토리: Transit Gateway 첨부 태거

환경: 프로덕션

기술: 네트워킹, 인프라, 관리 및 거버넌스, 운영

AWS 서비스: AWS Step Functions, AWS Transit Gateway, Amazon VPC, AWS Lambda

요약

Amazon Web Services(AWS)에서는 AWS 리소스 액세스 관리자를 사용하여 AWS 계정 경계를 넘어 AWS Transit Gateway를 공유할 수 있습니다. 그러나 계정 경계를 넘어 Transit Gateway attachment를 생성할 경우 첨부 파일은 이름 태그 없이 생성됩니다. 따라서 첨부 파일을 식별하는 데 시간이 많이 걸릴 수 있습니다. 

이 솔루션은 AWS Organizations에서 관리하는 조직 내 계정의 각 Transit Gateway Attachment에 대한 정보를 수집하는 자동화된 메커니즘을 제공합니다. 이 프로세스에는 Transit Gateway 라우팅 테이블에서 Classless Inter-Domain Routing(CIDR) 범위를 조회하는 작업이 포함됩니다. 그러면 솔루션은 트랜짓 게이트웨이를 보유한 계정 내의 첨부 파일에 이름 태그를 <CIDR-range>-<AccountName>의 형태로 적용합니다.

이 솔루션은 AWS Solutions Library의 서버리스 트랜짓 네트워크 오케스트레이터와 같은 솔루션과 함께 사용할 수 있습니다. 서버리스 트랜짓 네트워크 오케스트레이터를 사용하면 대규모로 Transit Gateway Attachment를 자동으로 생성할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 상태의 AWS 계정

  • 모든 관련 계정을 포함하는 AWS Organizations 조직

  • 조직의 루트 아래에 있는 조직 관리 계정에 액세스하여 필요한 AWS Identity and Access Management(IAM) 역할 생성

  • 조직과 공유되고 첨부 파일이 있는 하나 이상의 트랜짓 게이트웨이를 포함하는 공유 네트워킹 멤버 계정

아키텍처

AWS Management Console의 다음 스크린샷은 연결된 이름 태그가 없는 Transit Gateway Attachment 및 이 솔루션에서 생성된 이름 태그가 있는 Transit Gateway Attachment 두 개의 예를 보여줍니다. 생성된 이름 태그의 구조는 <CIDR-range>-<AccountName>입니다.

이름 태그가 없는 첨부 파일과 이름 태그가 있는 두 개의 첨부 파일을 보여주는 콘솔.

이 솔루션은 AWS를 CloudFormation 사용하여 구성된 모든 지역의 Transit Gateway 이름 태그 생성을 관리하는 AWS Step Functions 워크플로를 배포합니다. 워크플로는 기본 작업을 수행하는 AWS Lambda 함수를 간접적으로 호출합니다.

솔루션이 AWS Organizations로부터 계정 이름을 가져오면 Step Functions 상태 머신은 모든 Transit Gateway Attachment ID를 가져옵니다. 이는 AWS 리전에서 병렬로 처리됩니다. 이 처리에는 각 첨부 파일의 CIDR 범위 검색이 포함됩니다. CIDR 범위는 리전 내의 Transit Gateway 라우팅 테이블에서 일치하는 Transit Gateway Attachment ID를 검색하여 얻을 수 있습니다. 필요한 정보를 모두 사용할 수 있는 경우 솔루션은 이름 태그를 첨부 파일에 적용합니다. 솔루션은 기존 이름 태그를 덮어쓰지 않습니다.

솔루션은 Amazon EventBridge 이벤트에서 제어하는 일정에 따라 실행됩니다. 이벤트는 매일 오전 6시(UTC)에 솔루션을 시작합니다.

대상 기술 스택

  • 아마존 EventBridge

  • Lambda

  • Organizations

  • AWS Transit Gateway

  • Amazon Virtual Private Cloud(VPC)

  • AWS X-Ray

대상 아키텍처 

솔루션 아키텍처 및 워크플로는 다음 다이어그램에 나와 있습니다.

공유 네트워킹 및 조직 관리 계정 전반의 9단계 프로세스.
  1. 예약된 이벤트가 규칙을 시작합니다.

  2. EventBridge 규칙은 Step Functions 상태 머신을 시작합니다.

  3. 상태 머신은 tgw-tagger-organizations-account-query Lambda 함수를 호출합니다.

  4. tgw-tagger-organizations-account-query Lambda 함수는 조직 관리 계정에서 역할을 맡습니다.

  5. tgw-tagger-organizations-account-query Lambda 함수는 Organizations API를 호출하여 AWS 계정 메타데이터를 반환합니다.

  6. 상태 머신은 tgw-tagger-attachment-query Lambda 함수를 호출합니다.

  7. 병렬로 각 리전에 대해 상태 머신은 tgw-tagger-rtb-query Lambda 함수를 간접적으로 호출하여 각 첨부 파일의 CIDR 범위를 읽습니다.

  8. 병렬로 각 리전에 대해 상태 머신은 Lambda 함수를tgw-tagger-attachment-tagger 간접적으로 호출합니다.

  9. 공유 네트워킹 계정의 Transit Gateway Attachment에 대한 이름 태그가 생성됩니다.

자동화 및 규모 조정

솔루션은 각 리전을 병렬로 처리하여 총 실행 시간을 단축합니다.

도구

서비스

  • AWS CloudFormation — CloudFormation AWS는 인프라를 코드로 취급하여 관련 AWS 및 타사 리소스 모음을 모델링하고, 빠르고 일관되게 프로비저닝하고, 수명 주기 전반에 걸쳐 관리할 수 있는 방법을 제공합니다.

  • Amazon EventBridge — EventBridge Amazon은 애플리케이션을 다양한 소스의 데이터와 연결하는 데 사용할 수 있는 서버리스 이벤트 버스 서비스입니다. EventBridge 환경 변화를 나타내는 이벤트를 수신하고 규칙을 적용하여 이벤트를 대상으로 라우팅합니다. 규칙은 이벤트 패턴이라고 하는 이벤트 구조 또는 일정에 따라 이벤트를 대상과 일치시킵니다.

  • AWS Lambda - AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 필요 시에만 코드를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능합니다. 사용한 컴퓨팅 시간에 대해서만 비용을 지불하면 됩니다. 코드가 실행되지 않을 때는 비용이 부과되지 않습니다.

  • AWS Organizations – AWS Organizations는 AWS 리소스 규모 조정 및 확장 시 중앙에서 환경을 관리하고 통제하는 데 도움이 됩니다. AWS Organizations를 사용하면 프로그래밍 방식으로 새 AWS 계정을 만들고 리소스를 할당하며, 계정을 그룹화하여 워크플로를 구성하고, 거버넌스를 위해 계정 또는 그룹에 정책을 적용하고, 모든 계정에 대해 단일 결제 방법을 사용하여 청구를 간소화할 수 있습니다.

  • AWS Step Functions – AWS Step Functions는 AWS 서비스를 오케스트레이션하고, 비즈니스 프로세스를 자동화하며, 서버리스 애플리케이션을 구축하는 데 사용되는 코드가 적은 시각적 워크플로 서비스입니다. 워크플로는 장애, 재시도, 병렬화, 서비스 통합 및 관찰성을 관리하므로 개발자는 더 중요한 비즈니스 로직에 집중할 수 있습니다.

  • AWS Transit Gateway – AWS Transit Gateway는 중앙 허브를 통해 VPC와 온프레미스 네트워크를 연결합니다. 이렇게 하면 네트워크가 단순화되고 복잡한 피어링 관계가 없어집니다. 클라우드 라우터 역할을 하므로 새로 연결할 때마다 한 번만 이루어집니다.

  • Amazon VPC – Amazon Virtual Private Cloud(VPC)는 사용자가 정의하는 논리적으로 격리된 가상 네트워크에서 AWS 리소스를 시작할 수 있는 서비스입니다.

  • AWS X-Ray – AWS X-Ray는 애플리케이션이 처리하는 요청에 대한 데이터를 수집하는 웹 서비스로, 해당 데이터를 보고, 필터링하고, 통찰을 얻어 문제와 최적화 기회를 식별할 수 있는 도구를 제공합니다.

code

이 솔루션의 소스 코드는 Transit Gateway 첨부 태거 GitHub 리포지토리에서 사용할 수 있습니다. 리포지토리에는 다음 파일이 포함됩니다.

  • tgw-attachment-tagger-main-stack.yaml은 공유 네트워킹 계정 내에 이 솔루션을 지원하는 모든 리소스를 생성합니다.

  • tgw-attachment-tagger-organizations-stack.yaml 조직의 관리 계정에 역할을 생성합니다.

에픽

작업설명필요한 기술

필수 사전 조건 정보를 수집하십시오.

Lambda 함수에서 AWS Organizations API로의 크로스 계정 액세스를 구성하려면 조직의 관리 계정에 대한 계정 ID가 필요합니다.

참고: 두 CloudFormation 스택이 생성되는 순서가 중요합니다. 먼저 공유 네트워킹 계정에 리소스를 배포해야 합니다. 조직의 관리 계정에 리소스를 배포하기 전에 공유 네트워킹 계정의 역할이 이미 존재해야 합니다. 자세한 내용은 설명서를 참조하십시오.

DevOps 엔지니어

기본 솔루션 스택용 CloudFormation 템플릿을 실행합니다.

기본 솔루션 스택용 템플릿은 IAM 역할, Step Functions 워크플로, Lambda 함수 및 이벤트를 배포합니다. CloudWatch

공유 네트워킹 계정용 AWS Management 콘솔을 연 다음 CloudFormation 콘솔을 엽니다.  tgw-attachment-tagger-main-stack.yaml 템플릿과 다음 값을 사용하여 스택을 생성합니다. 

  • 스택 이름tgw-attachment-tagger-main-stack 

  • awsOrganizationsRootAccountId— 조직 관리 계정의 계정 ID

  • TGWRegions  파라미터– 솔루션의 AWS 리전, 쉼표로 구분된 문자열로 입력

  • TGWlist  파라미터 – 솔루션에서 제외할 트랜짓 게이트웨이 ID, 쉼표로 구분된 문자열로 입력

CloudFormation 스택 시작에 대한 자세한 내용은 AWS 설명서를 참조하십시오.

DevOps 엔지니어

솔루션이 성공적으로 시작되었는지 확인하십시오.

CloudFormation 스택이 CREATE_COMPLETE 상태에 도달할 때까지 기다리십시오. 1분 내에 완료됩니다.

Step Functions 콘솔을 열고 새 상태 머신이 tgw-attachment-tagger-state-machine이라는 이름으로 생성되었는지 확인합니다.

DevOps 엔지니어
작업설명필요한 기술

필수 사전 조건 정보를 수집하십시오.

Lambda 함수에서 AWS Organizations API로의 크로스 계정 액세스를 구성하려면 공유 네트워킹 계정의 계정 ID가 필요합니다.

DevOps 엔지니어

Organizations 스택용 CloudFormation 템플릿을 실행합니다.

AWS Organizations 스택용 템플릿이 조직의 관리 계정에 IAM 역할을 배포 합니다. 

조직의 관리 계정에 대한 AWS 콘솔에 액세스한 다음 콘솔을 CloudFormation 엽니다.  tgw-attachment-tagger-organizations-stack.yaml 템플릿과 다음 값을 사용하여 스택을 생성합니다.

  • 스택 이름 — -stack tgw-attachment-tagger-organizations

  • NetworkingAccountId파라미터 — 공유 네트워킹 계정의 계정 ID 

다른 스택 생성 옵션의 경우 기본값을 사용합니다.

DevOps 엔지니어

솔루션이 성공적으로 시작되었는지 확인하십시오.

CloudFormation 스택이 CREATE_COMPLETE 상태에 도달할 때까지 기다리십시오. 1분 내에 완료됩니다.

ID 및 액세스 관리 (IAM) 콘솔을 열고 -query-role이라는 이름으로 새 역할이 생성되었는지 확인합니다. tgw-attachment-tagger-organization

DevOps 엔지니어
작업설명필요한 기술

상태 머신을 실행합니다.

공유 네트워킹 계정의 Step Functions 콘솔을 열고 탐색 창에서 상태 머신을 선택합니다.

스테이트 머신 tgw-attachment-tagger-state-machine을 선택하고 실행 시작을 선택합니다. 

이 상태 머신에 대한 입력은 솔루션에서 사용되지 않으므로 기본값을 사용할 수 있습니다.

{ "Comment": "Insert your JSON here" }

실행 시작을 선택합니다.

DevOps 엔지니어

완료될 때까지 상태 머신을 주시하십시오.

새 페이지가 열리면 상태 머신이 실행되는 것을 볼 수 있습니다. 기간은 처리할 Transit Gateway Attachment 수에 따라 달라집니다.

이 페이지에서 상태 머신의 각 단계를 검토할 수 있습니다. 상태 머신 내의 다양한 작업을 보고 Lambda 함수의 CloudWatch 로그 링크를 따라갈 수 있습니다. 맵 내에서 병렬로 실행되는 작업의 경우 인덱스 드롭다운 목록을 사용하여 각 리전의 구체적인 구현을 확인할 수 있습니다.

DevOps 엔지니어

Transit Gateway Attachment 태그를 확인합니다.

공유 네트워킹 계정의 VPC 콘솔을 열고 Transit Gateway Attachment 첨부 파일을 선택합니다.  콘솔에서는 조건을 충족하는 첨부 파일에 대해 이름 태그가 제공됩니다(첨부 파일은 Transit Gateway 라우팅 테이블에 전파되고 리소스 소유자는 조직의 구성원임).

DevOps 엔지니어

CloudWatch 이벤트 시작을 확인하세요.

CloudWatch 이벤트가 시작될 때까지 기다리세요. 이 일정은 06:00(UTC)으로 예정되어 있습니다. 

그런 다음 공유 네트워킹 계정의 Step Functions 콘솔을 열고 탐색 창에서 상태 머신을 선택합니다.

스테이트 머신 tgw-attachment-tagger-state-machine을 선택합니다. 솔루션이 06:00(UTC)에 실행되었는지 확인합니다.

DevOps 엔지니어

관련 리소스