기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
GitHub Actions, Artifactory 및 Terraform을 사용하여 다중 리포지토리 설정에서 AWS Supply Chain 데이터 레이크 배포 자동화
Keshav Ganesh, Amazon Web Services
요약
이 패턴은 다중 리포지토리 지속적 통합 및 지속적 배포(CI/CD) 파이프라인을 사용하여 AWS Supply Chain 데이터 레이크를 배포하고 관리하기 위한 자동화된 접근 방식을 제공합니다. GitHub Actions 워크플로를 사용한 자동 배포 또는 Terraform을 직접 사용한 수동 배포라는 두 가지 배포 방법을 보여줍니다. 두 접근 방식 모두 코드형 인프라(IaC)에 Terraform을 사용하며, 자동화된 메서드는 향상된 CI/CD 기능을 위해 GitHub Actions 및 JFrog Artifactory를 추가합니다.
솔루션은 AWS Supply Chain AWS Lambda및 Amazon Simple Storage Service(Amazon S3)를 활용하여 데이터 레이크 인프라를 설정하는 동시에 두 배포 방법 중 하나를 사용하여 구성 및 리소스 생성을 자동화합니다. 이 자동화는 수동 구성 단계를 제거하고 환경 간에 일관된 배포를 보장합니다. 또한 추출, 변환 및 로드(ETL)에 대한 심층적인 전문 지식의 필요성을 AWS Supply Chain 제거하고 Amazon Quick Sight로 구동되는 인사이트와 분석을 제공할 수 있습니다.
조직은이 패턴을 구현하여 배포 시간을 줄이고, 코드형 인프라를 유지하며, 버전 관리형 자동 프로세스를 통해 공급망 데이터 레이크를 관리할 수 있습니다. 다중 리포지토리 접근 방식은 세분화된 액세스 제어를 제공하고 다양한 구성 요소의 독립적인 배포를 지원합니다. 팀은 기존 도구 및 프로세스에 가장 적합한 배포 방법을 선택할 수 있습니다.
사전 조건 및 제한 사항
사전 조건
로컬 시스템에 다음이 설치되어 있는지 확인합니다.
배포하기 전에 다음 사항이 있는지 확인합니다.
활성. AWS 계정
선택한 AWS 계정 AWS 리전 의에 두 개의 프라이빗 서브넷이 있는 Virtual Private Cloud(VPC)입니다.
다음 서비스에 배포하는 데 사용되는 AWS Identity and Access Management (IAM) 역할에 대한 충분한 권한:
AWS Supply Chain - 데이터 세트 및 통합 흐름과 같은 구성 요소를 배포하고에서 액세스하는 데 전체 액세스가 선호됩니다 AWS Management Console.
Amazon CloudWatch Logs - CloudWatch 로그 그룹을 생성하고 관리하는 데 사용됩니다.
Amazon Elastic Compute Cloud(Amazon EC2) - Amazon EC2 보안 그룹 및 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트용입니다.
Amazon EventBridge -에서 사용합니다 AWS Supply Chain.
IAM - AWS Lambda 서비스 역할을 생성하는 데 사용됩니다.
AWS Key Management Service (AWS KMS) - Amazon S3 아티팩트 버킷 및 Amazon S3 AWS Supply Chain 스테이징 버킷에 AWS KMS keys 사용되는에 대한 액세스입니다.
AWS Lambda - AWS Supply Chain 구성 요소를 배포하는 Lambda 함수를 생성하는 데 사용됩니다.
Amazon S3 - Amazon S3 아티팩트 버킷, 서버 액세스 로깅 버킷 및 AWS Supply Chain 스테이징 버킷에 액세스할 수 있습니다. 수동 배포를 사용하는 경우 Amazon S3 Terraform 아티팩트 버킷에 대한 권한도 필요합니다.
Amazon VPC - VPC를 생성하고 관리하는 데 사용됩니다.
배포에 GitHub Actions 워크플로를 사용하려면 다음을 수행합니다.
앞서 언급한 권한을 사용하여 IAM 역할에 대한 OpenID Connect(OIDC)
를 설정합니다. 에 액세스할 수 있는 유사한 권한을 가진 IAM 역할을 생성합니다 AWS Management Console. 자세한 내용은 IAM 설명서의 IAM 사용자에게 권한을 부여하는 역할 생성을 참조하세요.
수동 배포를 원하는 경우 다음을 수행합니다.
IAM 사용자를 생성하여 앞서 언급한 권한으로 IAM 역할을 수임합니다. 자세한 내용은 IAM 설명서의 IAM 사용자에게 권한을 부여하는 역할 생성을 참조하세요.
로컬 터미널에서 역할을 수임합니다.
배포에 GitHub Actions 워크플로를 사용하려면 다음을 설정합니다.
호스트 이름, 로그인 사용자 이름 및 로그인 액세스 토큰을 가져오는 JFrog Artifactory 계정
입니다. 아티팩트를 저장하기 위한 JFrog 프로젝트 키 및 리포지토리
입니다.
제한 사항
AWS Supply Chain 인스턴스는 복잡한 데이터 변환 기술을 지원하지 않습니다.
AWS Supply Chain 는 내장된 분석 및 인사이트를 제공하므로 공급망 도메인에 가장 적합합니다. 다른 도메인의 경우 데이터 레이크 아키텍처의 일부로 데이터 스토어로 사용할 AWS Supply Chain 수 있습니다.
프로덕션 규모 배포에서 API 재시도 및 메모리 관리를 처리하려면이 솔루션에 사용되는 Lambda 함수를 개선해야 할 수 있습니다.
일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전별 가용성은 리전별AWS 서비스
를 참조하세요. 구체적인 엔드포인트는 서비스 엔드포인트 및 할당량을 참조하고 서비스 링크를 선택합니다.
아키텍처
자동화된 GitHub Actions 워크플로를 사용하거나 Terraform을 사용하여 수동으로이 솔루션을 배포할 수 있습니다.
GitHub Actions를 사용한 자동 배포
다음 다이어그램은 GitHub Actions 워크플로를 사용하는 자동 배포 옵션을 보여줍니다. JFrog Artifactory는 아티팩트 관리에 사용됩니다. 다중 리포지토리 배포에 사용할 리소스 정보와 출력을 저장합니다.

Terraform을 사용한 수동 배포
다음 다이어그램은 Terraform을 통한 수동 배포 옵션을 보여줍니다. Amazon S3는 JFrog Artifactory 대신 아티팩트 관리에 사용됩니다.

배포 워크플로
이 다이어그램은 다음 워크플로를 보여 줍니다.
다음 배포 방법 중 하나를 사용하여 AWS Supply Chain 서비스 데이터 세트 인프라 및 데이터베이스를 배포합니다.
자동 배포 - GitHub Actions 워크플로를 사용하여 모든 배포 단계를 오케스트레이션하고 아티팩트 관리를 위해 JFrog Artifactory를 사용합니다.
수동 배포 - 각 배포 단계에 대해 Terraform 명령을 직접 실행하고 Amazon S3를 아티팩트 관리에 사용합니다.
AWS Supply Chain 서비스 작업에 필요한 지원 AWS 리소스를 생성합니다.
Amazon VPC 엔드포인트 및 보안 그룹
AWS KMS keys
CloudWatch Logs 로그 그룹
다음 인프라 리소스를 생성하고 배포합니다.
AWS Supply Chain 서비스 인스턴스, 네임스페이스 및 데이터 세트를 관리(생성, 업데이트 및 삭제)하는 Lambda 함수입니다.
AWS Supply Chain 데이터 수집을 위한 Amazon S3 버킷 스테이징
스테이징 버킷과 AWS Supply Chain 데이터 세트 간의 통합 흐름을 관리하는 Lambda 함수를 배포합니다. 배포가 완료되면 나머지 워크플로 단계에서 데이터 수집 및 분석을 관리합니다.
AWS Supply Chain 스테이징 Amazon S3 버킷에 대한 소스 데이터 수집을 구성합니다.
AWS Supply Chain 스테이징 Amazon S3 버킷에 데이터가 추가되면 서비스는 AWS Supply Chain 데이터 세트에 대한 통합 흐름을 자동으로 트리거합니다.
AWS Supply Chain 는 Quick Sight Analytics와 통합되어 수집된 데이터를 기반으로 대시보드를 생성합니다.
도구
AWS 서비스
Amazon CloudWatch Logs를 사용하면 모든 시스템, 애플리케이션 및의 로그를 중앙 집중화 AWS 서비스 하여 모니터링하고 안전하게 보관할 수 있습니다.
AWS Command Line Interface (AWS CLI)는 명령줄 셸의 명령을 AWS 서비스 통해와 상호 작용하는 데 도움이 되는 오픈 소스 도구입니다.
Amazon Elastic Compute Cloud(Amazon EC2)는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. 필요한 만큼 가상 서버를 시작하고 빠르게 스케일 업하거나 스케일 다운할 수 있습니다.
Amazon EventBridge는 애플리케이션을 다양한 소스의 실시간 데이터와 연결할 수 있는 서버리스 이벤트 버스 서비스입니다. 예를 들어 AWS Lambda 함수, API 대상을 사용하는 HTTP 호출 엔드포인트 또는 다른의 이벤트 버스가 있습니다 AWS 계정.
AWS Identity and Access Management (IAM)는 AWS 리소스에 대한 액세스를 인증하고 사용할 권한이 있는 사용자를 제어하여 리소스에 대한 액세스를 안전하게 관리하는 데 도움이 됩니다.
AWS IAM Identity Center를 사용하면 모든 AWS 계정 및 클라우드 애플리케이션에 대한 Single Sign-On(SSO) 액세스를 중앙에서 관리할 수 있습니다.
AWS Key Management Service (AWS KMS)를 사용하면 암호화 키를 생성하고 제어하여 데이터를 보호할 수 있습니다.
AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.
의 Amazon Q AWS Supply Chain 는 AWS Supply Chain 데이터 레이크의 데이터를 분석하여 공급망을 보다 효율적으로 운영하는 데 도움이 되는 대화형 생성형 AI 어시스턴트입니다.
Amazon Quick Sight는 분석, 데이터 시각화 및 보고에 사용할 수 있는 클라우드급 비즈니스 인텔리전스(BI) 서비스입니다.
Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.
AWS Supply Chain는 공급망 도메인의 조직에서 데이터 스토어로 사용할 수 있는 클라우드 기반 관리형 애플리케이션으로, 수집된 데이터에 대한 인사이트를 생성하고 분석을 수행하는 데 사용할 수 있습니다.
Amazon Virtual Private Cloud(VPC)를 사용하면 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 유사합니다. Amazon VPC 엔드포인트는 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 연결 AWS 서비스 없이 지원되는에 VPC를 비공개로 AWS Direct Connect 연결하는 데 도움이 되는 가상 디바이스입니다.
기타 도구
GitHub Actions
는 GitHub 리포지토리와 긴밀하게 통합된 지속적 통합 및 지속적 전달(CI/CD) 플랫폼입니다. GitHub Actions를 사용하여 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있습니다. HashiCorp Terraform
은 코드형 인프라(IaC) 도구로, 클라우드 및 온프레미스 리소스를 생성하고 관리하는 데 도움이 됩니다. JFrog Artifactory
는 애플리케이션 전송 프로세스를 통해 바이너리 및 아티팩트의 end-to-end 자동화 및 관리를 제공합니다. Python
은 범용 컴퓨터 프로그래밍 언어입니다. 이 패턴은 AWS 함수의 코드에 Python을 사용하여와 상호 작용합니다. AWS Supply Chain .
모범 사례
이 패턴을 구현할 때 최대한 보안을 유지합니다. 사전 조건에 명시된 대로 두 개의 프라이빗 서브넷이 있는 Virtual Private Cloud(VPC)가 AWS 리전 선택한의 AWS 계정 에 있는지 확인합니다. https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html
가능하면 AWS KMS 고객 관리형 키를 사용하고 제한된 액세스 권한을 부여합니다.
이 패턴에 대한 데이터를 수집하는 데 필요한 액세스 권한이 가장 적은 IAM 역할을 설정하려면이 패턴의 리포지토리에서 소스 시스템에서 Amazon S3로의 데이터 수집 보안을
참조하세요.
에픽
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
리포지토리를 복제합니다. | 이 패턴의 리포지토리를 복제하려면 로컬 워크스테이션에서 다음 명령을 실행합니다.
| DevOps |
(자동 옵션) 배포를 위한 사전 조건을 확인합니다. | 자동 배포를 위한 사전 조건이 완료되었는지 확인합니다. | 앱 소유자 |
(수동 옵션) AWS Supply Chain 데이터 세트 배포를 준비합니다. | 의
사전 조건에서 생성된 역할 ARN을 수임하려면 다음 명령을 실행합니다.
환경 변수를 구성하고 내보내려면 다음 명령을 실행합니다.
| DevOps |
(수동 옵션) 배포에서 AWS Supply Chain 통합 흐름을 관리할 준비를 합니다. | 의
이전에 생성된 역할 ARN을 수임하려면 다음 명령을 실행합니다.
환경 변수를 구성하고 내보내려면 다음 명령을 실행합니다.
| 앱 소유자 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
|
| DevOps |
| 를 조직의 독립 실행형 리포지토리
| DevOps |
.github 워크플로 파일에서 브랜치 이름을 구성합니다. | 다음 예제와 같이 배포
| 앱 소유자 |
GitHub 환경을 설정하고 환경 값을 구성합니다. | GitHub 조직에서 GitHub 환경을 설정하려면이 패턴의 리포지토리에 있는 GitHub 환경 설정 워크플로 파일에서 환경 값을 | 앱 소유자 |
워크플로를 트리거합니다. | 변경 사항을 GitHub 조직에 푸시하고 배포 워크플로를 트리거하려면 다음 명령을 실행합니다.
| DevOps |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
|
| DevOps |
|
| DevOps |
.github 워크플로 파일에서 브랜치 이름을 구성합니다. | 다음 예제와 같이 배포
| 앱 소유자 |
GitHub 환경을 설정하고 환경 값을 구성합니다. | GitHub 조직에서 GitHub 환경을 설정하려면이 패턴의 리포지토리에 있는 GitHub 환경 설정 워크플로 파일에서 환경 값을 | 앱 소유자 |
워크플로를 트리거합니다. | 변경 사항을 GitHub 조직에 푸시하고 배포 워크플로를 트리거하려면 다음 명령을 실행합니다.
| DevOps |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
| 의
| DevOps |
Terraform 상태 Amazon S3 버킷을 설정합니다. | Terraform 상태 Amazon S3 버킷을 설정하려면 다음 스크립트를 사용합니다.
| DevOps |
Terraform 아티팩트 Amazon S3 버킷을 설정합니다. | Terraform 아티팩트 Amazon S3 버킷을 설정하려면 다음 스크립트를 사용합니다.
| DevOps |
Terraform 백엔드 및 공급자 구성을 설정합니다. | Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.
| DevOps |
배포 계획을 생성합니다. | 배포 계획을 생성하려면 다음 명령을 실행합니다.
| DevOps |
구성을 배포합니다. | 구성을 배포하려면 다음 명령을 실행합니다.
| DevOps |
다른 구성을 업데이트하고 출력을 저장합니다. | AWS KMS 키 정책을 업데이트하고 적용된 구성 출력을 Terraform 아티팩트 Amazon S3 버킷에 저장하려면 다음 명령을 실행합니다.
| DevOps |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
| 의
| DevOps |
Terraform 백엔드 및 공급자 구성을 설정합니다. | Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.
| DevOps |
배포 계획을 생성합니다. | 배포 계획을 생성하려면 다음 명령을 실행합니다. 이러한 명령은 Terraform 환경을 초기화하고,의 구성 변수를 기존 Terraform 구성
| DevOps |
구성을 배포합니다. | 구성을 배포하려면 다음 명령을 실행합니다.
| DevOps |
다른 구성을 업데이트합니다. | AWS KMS 키 정책을 업데이트하고 적용된 구성 출력을 Terraform 아티팩트 Amazon S3 버킷에 저장하려면 다음 명령을 실행합니다.
| DevOps |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
샘플 CSV 파일을 업로드합니다. | 데이터 세트에 대한 샘플 CSV 파일을 업로드하려면 다음 단계를 사용합니다.
| 데이터 엔지니어 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
AWS Supply Chain 액세스를 설정합니다. | 에서 AWS Supply Chain 액세스를 설정하려면 다음 단계를 AWS Management Console사용합니다.
| 앱 소유자 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
| 의
| DevOps |
Terraform 백엔드 및 공급자 구성을 설정합니다. | Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.
| DevOps |
인프라 폐기 계획을 생성합니다. | 세부 해체 계획을 생성하여 AWS 인프라의 제어된 파괴를 준비하려면 다음 명령을 실행합니다. 이 프로세스는 Terraform을 초기화하고, AWS Supply Chain 데이터 세트 구성을 통합하고, 실행 전에 검토할 수 있는 폐기 계획을 생성합니다.
| DevOps |
인프라 폐기 계획을 실행합니다. | 인프라의 계획된 폐기를 실행하려면 다음 명령을 실행합니다.
| DevOps |
Amazon S3 버킷에서 Terraform 출력을 제거합니다. | 배포 중에 업로드된 출력 파일을 제거하려면 다음 명령을
| DevOps |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
| 의
| DevOps |
Terraform 백엔드 및 공급자 구성을 설정합니다. | Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.
| DevOps |
인프라 폐기 계획을 생성합니다. | AWS Supply Chain 데이터 세트 리소스를 삭제하기 위한 계획을 생성하려면 다음 명령을 실행합니다.
| DevOps |
Amazon S3 버킷을 비웁니다. | 모든 Amazon S3 버킷(에 대해 구성된 서버 액세스 로깅 버킷 제외
| DevOps |
인프라 폐기 계획을 실행합니다. | 생성된 계획을 사용하여 AWS Supply Chain 데이터 세트 인프라의 계획된 폐기를 실행하려면 다음 명령을 실행합니다.
| DevOps |
Amazon S3 Terraform 아티팩트 버킷에서 Terraform 출력을 제거합니다. | 정리 프로세스를 완료하려면 다음 명령을 실행
| DevOps |
문제 해결
| 문제 | Solution |
|---|---|
AWS Supply Chain 내부 오류 또는 서비스 역할에 대한 IAM 권한 부족으로 인해 AWS Supply Chain 데이터 세트 또는 통합 흐름이 올바르게 배포되지 않았습니다. | 먼저 모든 리소스를 정리합니다. 그런 다음 AWS Supply Chain 데이터 세트 리소스를 |
AWS Supply Chain 통합 흐름은 AWS Supply Chain 데이터 세트에 대해 업로드된 새 데이터 파일을 가져오지 않습니다. |
|
관련 리소스
AWS 설명서
기타 리소스
GitHub 작업 워크플로 이해
(GitHub 설명서)
추가 정보
이 솔루션은 더 많은 데이터 세트에 복제할 수 있으며와 함께 제공되는 사전 구축된 대시보드 AWS Supply Chain 또는 Amazon Quick Sight와의 사용자 지정 통합을 통해 추가 분석을 위해 쿼리할 수 있습니다. 또한 Amazon Q를 사용하여 AWS Supply Chain 인스턴스와 관련된 질문을 할 수 있습니다.
AWS Supply Chain Analytics를 사용하여 데이터 분석
AWS Supply Chain 분석 설정 지침은 AWS Supply Chain 설명서의 AWS Supply Chain 분석 설정을 참조하세요.
이 패턴은 Calendar 및 Outbound_Order_Line 데이터 세트의 생성을 보여줍니다. 이러한 데이터 세트를 사용하는 분석을 생성하려면 다음 단계를 사용합니다.
데이터 세트를 분석하려면 계절성 분석 대시보드를 사용합니다. 대시보드를 추가하려면 AWS Supply Chain 설명서의 사전 구축된 대시보드의 단계를 따르세요.
대시보드를 선택하여 일정 데이터 및 아웃바운드 주문 라인 데이터에 대한 샘플 CSV 파일을 기반으로 하는 분석을 확인합니다.
대시보드는 데이터 세트에 대해 수집된 데이터를 기반으로 수년간 온디맨드 인사이트를 제공합니다. 분석을 위해 ProductID, CustomerID, 연도 및 기타 파라미터를 추가로 지정할 수 있습니다.
Amazon Q를 사용하여 AWS Supply Chain 인스턴스와 관련된 질문
의 Amazon Q AWS Supply Chain는 공급망을 보다 효율적으로 운영하는 데 도움이 되는 대화형 생성형 AI 어시스턴트입니다. Amazon Q는 다음을 수행할 수 있습니다.
데이터 레이크의 AWS Supply Chain 데이터를 분석합니다.
운영 및 재무 인사이트를 제공합니다.
즉각적인 공급망 질문에 답변합니다.
Amazon Q 사용에 대한 자세한 내용은 AWS Supply Chain 설명서의 에서 Amazon Q 활성화 AWS Supply Chain 및 에서 Amazon Q 사용을 AWS Supply Chain 참조하세요.