GitHub Actions, Artifactory 및 Terraform을 사용하여 다중 리포지토리 설정에서 AWS Supply Chain 데이터 레이크 배포 자동화 - 권장 가이드

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

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 워크플로를 사용하려면 다음을 수행합니다.

수동 배포를 원하는 경우 다음을 수행합니다.

배포에 GitHub Actions 워크플로를 사용하려면 다음을 설정합니다.

제한 사항

  • AWS Supply Chain 인스턴스는 복잡한 데이터 변환 기술을 지원하지 않습니다.

  • AWS Supply Chain 는 내장된 분석 및 인사이트를 제공하므로 공급망 도메인에 가장 적합합니다. 다른 도메인의 경우 데이터 레이크 아키텍처의 일부로 데이터 스토어로 사용할 AWS Supply Chain 수 있습니다.

  • 프로덕션 규모 배포에서 API 재시도 및 메모리 관리를 처리하려면이 솔루션에 사용되는 Lambda 함수를 개선해야 할 수 있습니다.

  • 일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전별 가용성은 리전별AWS 서비스를 참조하세요. 구체적인 엔드포인트는 서비스 엔드포인트 및 할당량을 참조하고 서비스 링크를 선택합니다.

아키텍처

자동화된 GitHub Actions 워크플로를 사용하거나 Terraform을 사용하여 수동으로이 솔루션을 배포할 수 있습니다.

GitHub Actions를 사용한 자동 배포

다음 다이어그램은 GitHub Actions 워크플로를 사용하는 자동 배포 옵션을 보여줍니다. JFrog Artifactory는 아티팩트 관리에 사용됩니다. 다중 리포지토리 배포에 사용할 리소스 정보와 출력을 저장합니다.

GitHub Actions 워크플로 및 JFrog를 사용하는 자동 배포 옵션입니다.

Terraform을 사용한 수동 배포

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

Terraform 및 Amazon S3를 사용한 수동 배포 옵션.

배포 워크플로

이 다이어그램은 다음 워크플로를 보여 줍니다.

  1. 다음 배포 방법 중 하나를 사용하여 AWS Supply Chain 서비스 데이터 세트 인프라 및 데이터베이스를 배포합니다.

    • 자동 배포 - GitHub Actions 워크플로를 사용하여 모든 배포 단계를 오케스트레이션하고 아티팩트 관리를 위해 JFrog Artifactory를 사용합니다.

    • 수동 배포 - 각 배포 단계에 대해 Terraform 명령을 직접 실행하고 Amazon S3를 아티팩트 관리에 사용합니다.

  2. AWS Supply Chain 서비스 작업에 필요한 지원 AWS 리소스를 생성합니다.

    • Amazon VPC 엔드포인트 및 보안 그룹

    • AWS KMS keys

    • CloudWatch Logs 로그 그룹

  3. 다음 인프라 리소스를 생성하고 배포합니다.

    • AWS Supply Chain 서비스 인스턴스, 네임스페이스 및 데이터 세트를 관리(생성, 업데이트 및 삭제)하는 Lambda 함수입니다.

    • AWS Supply Chain 데이터 수집을 위한 Amazon S3 버킷 스테이징

  4. 스테이징 버킷과 AWS Supply Chain 데이터 세트 간의 통합 흐름을 관리하는 Lambda 함수를 배포합니다. 배포가 완료되면 나머지 워크플로 단계에서 데이터 수집 및 분석을 관리합니다.

  5. AWS Supply Chain 스테이징 Amazon S3 버킷에 대한 소스 데이터 수집을 구성합니다.

  6. AWS Supply Chain 스테이징 Amazon S3 버킷에 데이터가 추가되면 서비스는 AWS Supply Chain 데이터 세트에 대한 통합 흐름을 자동으로 트리거합니다.

  7. 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

    .

모범 사례

에픽

작업설명필요한 기술

리포지토리를 복제합니다.

이 패턴의 리포지토리를 복제하려면 로컬 워크스테이션에서 다음 명령을 실행합니다.

git clone https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment.git cd ASC-Deployment
DevOps

(자동 옵션) 배포를 위한 사전 조건을 확인합니다.

자동 배포를 위한 사전 조건이 완료되었는지 확인합니다.

앱 소유자

(수동 옵션) AWS Supply Chain 데이터 세트 배포를 준비합니다.

terraform-deployment 디렉터리로 이동하려면 다음 명령을 ASC-Datasets실행합니다.

cd ASC-Datasets/terraform-deployment

사전 조건에서 생성된 역할 ARN을 수임하려면 다음 명령을 실행합니다.

aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name>

환경 변수를 구성하고 내보내려면 다음 명령을 실행합니다.

# Export Environment variables export REGION=<Enter deployment region> export REPO_NAME=<Enter Current ASC Datasets dir name> export PROJECT_NAME="asc-deployment-poc" export ACCOUNT_ID=<Enter deployment Account ID> export ENVIRONMENT="dev" export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput" export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput" export AWS_USER_ROLE=<Enter user role ARN for AWS Console access and deployment> export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"
DevOps

(수동 옵션) 배포에서 AWS Supply Chain 통합 흐름을 관리할 준비를 합니다.

terraform-deployment 디렉터리로 이동하려면 다음 명령을 ASC-Integration-Flows실행합니다.

cd ASC-Integration-Flows/terraform-deployment

이전에 생성된 역할 ARN을 수임하려면 다음 명령을 실행합니다.

aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name>

환경 변수를 구성하고 내보내려면 다음 명령을 실행합니다.

# Export Environment variables export REGION=<Enter deployment region> export REPO_NAME=<Enter Current ASC Integration Flows dir name> export ASC_DATASET_VARS_REPO=<Enter Current ASC Datasets dir name> #Must be the same directory name used for ASC Datasets deployment export PROJECT_NAME="asc-deployment-poc" export ACCOUNT_ID=<Enter deployment Account ID> export ENVIRONMENT="dev" export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput" export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput" export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"
앱 소유자
작업설명필요한 기술

ASC-Datasets 디렉터리를 복사합니다.

ASC-Datasets 디렉터리를 새 위치에 복사하려면 다음 단계를 사용합니다.

  1. ASC-Datasets 디렉터리로 이동하려면 다음 명령을 실행합니다.

    cd ASC-Datasets
  2. ASC-Datasets 디렉터리를 새 위치에 복사하려면 다음 명령을 실행합니다.

    cp -r ASC-Datasets ../ASC-Datasets-standalone cd ../ASC-Datasets-standalone
DevOps

ASC-Datasets 디렉터리를 설정합니다.

를 조직의 독립 실행형 리포지토리ASC-Datasets로 설정하려면 다음 명령을 실행합니다.

git init git add . git commit -m "Initial commit: ASC-Datasets standalone repository" git remote add origin <INSERT_ASC_DATASETS_GITHUB_URL> git branch -M dev
DevOps

.github 워크플로 파일에서 브랜치 이름을 구성합니다.

다음 예제와 같이 배포 워크플로 파일에서 브랜치 이름을 설정합니다.

on: workflow_dispatch: push: branches: - dev #Change to any other branch preferred for deployment
앱 소유자

GitHub 환경을 설정하고 환경 값을 구성합니다.

GitHub 조직에서 GitHub 환경을 설정하려면이 패턴의 리포지토리에 있는 GitHub 환경 설정의 지침을 사용합니다.

워크플로 파일에서 환경 값을 구성하려면이 패턴의 리포지토리에 있는 워크플로 파일의 환경 값 설정의 지침을 사용합니다.

앱 소유자

워크플로를 트리거합니다.

변경 사항을 GitHub 조직에 푸시하고 배포 워크플로를 트리거하려면 다음 명령을 실행합니다.

git push -u origin dev
DevOps
작업설명필요한 기술

ASC-Integration-Flows 디렉터리를 복사합니다.

ASC-Integration-Flows 디렉터리를 새 위치에 복사하려면 다음 단계를 사용합니다.

  1. ASC-Integration-Flows 디렉터리로 이동하려면 다음 명령을 실행합니다.

    cd ASC-Integration-Flows
  2. ASC-Integration-Flows 디렉터리를 새 위치에 복사하려면 다음 명령을 실행합니다.

    cp -r ASC-Integration-Flows ../ASC-Integration-Flows-standalone cd ../ASC-Integration-Flows-standalone
DevOps

ASC-Integration-Flows 디렉터리를 설정합니다.

ASC-Integration-Flows 디렉터리를 조직의 독립 실행형 리포지토리로 설정하려면 다음 명령을 실행합니다.

git init git add . git commit -m "Initial commit: ASC-Integration-Flows standalone repository" git remote add origin <INSERT_ASC_Integration_Flows_GITHUB_URL> git branch -M dev
DevOps

.github 워크플로 파일에서 브랜치 이름을 구성합니다.

다음 예제와 같이 배포 워크플로 파일에서 브랜치 이름을 설정합니다.

on: workflow_dispatch: push: branches: - dev #Change to any other branch preferred for deployment
앱 소유자

GitHub 환경을 설정하고 환경 값을 구성합니다.

GitHub 조직에서 GitHub 환경을 설정하려면이 패턴의 리포지토리에 있는 GitHub 환경 설정의 지침을 사용합니다.

워크플로 파일에서 환경 값을 구성하려면이 패턴의 리포지토리에 있는 워크플로 파일의 환경 값 설정의 지침을 사용합니다.

앱 소유자

워크플로를 트리거합니다.

변경 사항을 GitHub 조직에 푸시하고 배포 워크플로를 트리거하려면 다음 명령을 실행합니다.

git push -u origin dev
DevOps
작업설명필요한 기술

terraform-deployment 디렉터리로 이동합니다.

terraform-deployment 디렉터리로 이동하려면 다음 명령을 ASC-Datasets실행합니다.

cd ASC-Datasets/terraform-deployment
DevOps

Terraform 상태 Amazon S3 버킷을 설정합니다.

Terraform 상태 Amazon S3 버킷을 설정하려면 다음 스크립트를 사용합니다.

# Setup terraform bucket chmod +x ../scripts/setup-terraform.sh ../scripts/setup-terraform.sh
DevOps

Terraform 아티팩트 Amazon S3 버킷을 설정합니다.

Terraform 아티팩트 Amazon S3 버킷을 설정하려면 다음 스크립트를 사용합니다.

# Setup terraform artifacts bucket chmod +x ../scripts/setup-terraform-artifacts-bucket.sh ../scripts/setup-terraform-artifacts-bucket.sh
DevOps

Terraform 백엔드 및 공급자 구성을 설정합니다.

Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.

# Setup terraform backend and providers config if they don't exist chmod +x ../scripts/generate-terraform-config.sh ../scripts/generate-terraform-config.sh
DevOps

배포 계획을 생성합니다.

배포 계획을 생성하려면 다음 명령을 실행합니다.

# Run terraform init and validate terraform init terraform validate # Run terraform plan terraform plan \ -var-file="tfInputs/$ENVIRONMENT.tfvars" \ -var="project_name=$PROJECT_NAME" \ -var="environment=$ENVIRONMENT" \ -var="user_role=$AWS_USER_ROLE" \ -var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \ -var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \ -parallelism=40 \ -out='tfplan.out'
DevOps

구성을 배포합니다.

구성을 배포하려면 다음 명령을 실행합니다.

# Run terraform apply terraform apply tfplan.out
DevOps

다른 구성을 업데이트하고 출력을 저장합니다.

AWS KMS 키 정책을 업데이트하고 적용된 구성 출력을 Terraform 아티팩트 Amazon S3 버킷에 저장하려면 다음 명령을 실행합니다.

# Update AWS Supply Chain KMS Key policy with the service's requirements chmod +x ../scripts/update-asc-kms-policy.sh ../scripts/update-asc-kms-policy.sh
# Update AWS KMS Keys' policy with IAM roles chmod +x ../scripts/update-kms-policy.sh ../scripts/update-kms-policy.sh
# Create terraform outputs file to be used as input variables terraform output -json > raw_output.json jq -r 'to_entries | map( if .value.type == "string" then "\(.key) = \"\(.value.value)\"" else "\(.key) = \(.value.value | tojson)" end ) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars
# Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories) aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars rm -f raw_output.json rm -f $REPO_NAME-outputs.tfvars
DevOps
작업설명필요한 기술

terraform-deployment 디렉터리로 이동합니다.

terraform-deployment 디렉터리로 이동하려면 다음 명령을 ASC-Integration-Flows실행합니다.

cd ASC-Integration-Flows/terraform-deployment
DevOps

Terraform 백엔드 및 공급자 구성을 설정합니다.

Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.

# Setup terraform backend and providers config if they don't exist chmod +x ../scripts/generate-terraform-config.sh ../scripts/generate-terraform-config.sh
DevOps

배포 계획을 생성합니다.

배포 계획을 생성하려면 다음 명령을 실행합니다. 이러한 명령은 Terraform 환경을 초기화하고,의 구성 변수를 기존 Terraform 구성ASC-Datasets과 병합하고, 배포 계획을 생성합니다.

# Run terraform init and validate terraform init terraform validate
# Download and merge ASC DATASET tfvars chmod +x ../scripts/download-vars-through-s3.sh ../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO
# Run terraform plan terraform plan \ -var-file="tfInputs/$ENVIRONMENT.tfvars" \ -var="project_name=$PROJECT_NAME" \ -var="environment=$ENVIRONMENT" \ -var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \ -var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \ -parallelism=40 \ -out='tfplan.out'
DevOps

구성을 배포합니다.

구성을 배포하려면 다음 명령을 실행합니다.

# Run terraform apply terraform apply tfplan.out
DevOps

다른 구성을 업데이트합니다.

AWS KMS 키 정책을 업데이트하고 적용된 구성 출력을 Terraform 아티팩트 Amazon S3 버킷에 저장하려면 다음 명령을 실행합니다.

# Update AWS KMS Keys' policy with IAM roles chmod +x ../scripts/update-kms-policy-through-s3.sh ../scripts/update-kms-policy-through-s3.sh $ASC_DATASET_VARS_REPO
# Create terraform outputs file to be used as input variables terraform output -json > raw_output.json jq -r 'to_entries | map( if .value.type == "string" then "\(.key) = \"\(.value.value)\"" else "\(.key) = \(.value.value | tojson)" end ) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars
# Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories) aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars rm -f raw_output.json rm -f $REPO_NAME-outputs.tfvars
DevOps
작업설명필요한 기술

샘플 CSV 파일을 업로드합니다.

데이터 세트에 대한 샘플 CSV 파일을 업로드하려면 다음 단계를 사용합니다.

  1. 배포 시 생성된 캘린더아웃바운드 주문 라인 데이터 세트에 대한 다양한 데이터가 포함된 샘플 CSV 파일을 생성합니다.

  2. terraform 출력 디렉터리asc_instance_id에서 AWS Supply Chain 인스턴스 ID를 가져옵니다.

  3. 배포 시 AWS Supply Chain 생성된의 Amazon S3 버킷 이름을 기록해 둡니다. aws-supply-chain-data-<Instance_ID>

  4. 를 사용하여 파일을 업로드하려면 다음 명령을 AWS CLI실행합니다.

    # Upload Calendar CSV file aws s3 cp calendar_sample.csv s3://aws-supply-chain-data-<Instance_ID>/calendar-data/ # Upload Outbound Order Line CSV file aws s3 cp outbound_order_line_sample.csv s3://aws-supply-chain-data-<Instance_ID>/outbound-order-line-data/
데이터 엔지니어
작업설명필요한 기술

AWS Supply Chain 액세스를 설정합니다.

에서 AWS Supply Chain 액세스를 설정하려면 다음 단계를 AWS Management Console사용합니다.

  1. 에 로그인 AWS Management Console 하고 AWS Supply Chain 서비스를 검색합니다.

  2. 인스턴스로 이동합니다asc-deployment-poc-dev-asc-instance.

  3. 이 패턴은 IAM Identity Center를 사용하여 AWS Supply Chain 인스턴스에 대한 사용자 액세스를 관리합니다. 이 솔루션에 대한 완전한 액세스를 보장하려면 애플리케이션의 관리자로 로그인합니다.

앱 소유자
작업설명필요한 기술

통합 흐름 리소스에 대한 삭제 워크플로를 트리거합니다.

GitHub 조직의 배포 브랜치ASC-Integration-Flows에서의 폐기 워크플로를 트리거합니다.

DevOps

데이터 세트 리소스에 대한 삭제 워크플로를 트리거합니다.

GitHub 조직의 배포 브랜치ASC-Datasets에서의 폐기 워크플로를 트리거합니다.

DevOps
작업설명필요한 기술

terraform-deployment 디렉터리로 이동합니다.

terraform-deployment 디렉터리로 이동하려면 다음 명령을 ASC-Integration-Flows실행합니다.

cd ASC-Integration-Flows/terraform-deployment
DevOps

Terraform 백엔드 및 공급자 구성을 설정합니다.

Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.

# Setup terraform backend and providers config if they don't exist chmod +x ../scripts/generate-terraform-config.sh ../scripts/generate-terraform-config.sh
DevOps

인프라 폐기 계획을 생성합니다.

세부 해체 계획을 생성하여 AWS 인프라의 제어된 파괴를 준비하려면 다음 명령을 실행합니다. 이 프로세스는 Terraform을 초기화하고, AWS Supply Chain 데이터 세트 구성을 통합하고, 실행 전에 검토할 수 있는 폐기 계획을 생성합니다.

# Run terraform init and validate terraform init terraform validate
# Download and merge ASC DATASET tfvars chmod +x ../scripts/download-vars-through-s3.sh ../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO
# Run terraform plan terraform plan -destroy\ -var-file="tfInputs/$ENVIRONMENT.tfvars" \ -var="project_name=$PROJECT_NAME" \ -var="environment=$ENVIRONMENT" \ -var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \ -var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \ -parallelism=40 \ -out='tfplan.out'
DevOps

인프라 폐기 계획을 실행합니다.

인프라의 계획된 폐기를 실행하려면 다음 명령을 실행합니다.

# Run terraform apply terraform apply tfplan.out
DevOps

Amazon S3 버킷에서 Terraform 출력을 제거합니다.

배포 중에 업로드된 출력 파일을 제거하려면 다음 명령을 ASC-Integration-Flows실행합니다.

# Delete the outputs file aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars
DevOps
작업설명필요한 기술

terraform-deployment 디렉터리로 이동합니다.

terraform-deployment 디렉터리로 이동하려면 다음 명령을 ASC-Datasets실행합니다.

cd ASC-Datasets/terraform-deployment
DevOps

Terraform 백엔드 및 공급자 구성을 설정합니다.

Terraform 백엔드 및 공급자 구성을 설정하려면 다음 스크립트를 사용합니다.

# Setup terraform backend and providers config if they don't exist chmod +x ../scripts/generate-terraform-config.sh ../scripts/generate-terraform-config.sh
DevOps

인프라 폐기 계획을 생성합니다.

AWS Supply Chain 데이터 세트 리소스를 삭제하기 위한 계획을 생성하려면 다음 명령을 실행합니다.

# Run terraform init and validate terraform init terraform validate # Run terraform plan terraform plan -destroy\ -var-file="tfInputs/$ENVIRONMENT.tfvars" \ -var="project_name=$PROJECT_NAME" \ -var="environment=$ENVIRONMENT" \ -var="user_role=$AWS_USER_ROLE" \ -var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \ -var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \ -parallelism=40 \ -out='tfplan.out'
DevOps

Amazon S3 버킷을 비웁니다.

모든 Amazon S3 버킷(에 대해 구성된 서버 액세스 로깅 버킷 제외force-destroy)을 비우려면 다음 스크립트를 사용합니다.

# Delete S3 buckets excluding server access logging bucket chmod +x ../scripts/empty-s3-buckets.sh ../scripts/empty-s3-buckets.sh tfplan.out
DevOps

인프라 폐기 계획을 실행합니다.

생성된 계획을 사용하여 AWS Supply Chain 데이터 세트 인프라의 계획된 폐기를 실행하려면 다음 명령을 실행합니다.

# Run terraform apply terraform apply tfplan.out
DevOps

Amazon S3 Terraform 아티팩트 버킷에서 Terraform 출력을 제거합니다.

정리 프로세스를 완료하려면 다음 명령을 실행ASC-Datasets하여 배포 중에 업로드된 출력 파일을 제거합니다.

# Delete the outputs file aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars
DevOps

문제 해결

문제Solution

AWS Supply Chain 내부 오류 또는 서비스 역할에 대한 IAM 권한 부족으로 인해 AWS Supply Chain 데이터 세트 또는 통합 흐름이 올바르게 배포되지 않았습니다.

먼저 모든 리소스를 정리합니다. 그런 다음 AWS Supply Chain 데이터 세트 리소스를 재배포한 다음 AWS Supply Chain 통합 흐름 리소스를 재배포합니다.

AWS Supply Chain 통합 흐름은 AWS Supply Chain 데이터 세트에 대해 업로드된 새 데이터 파일을 가져오지 않습니다.

  1. AWS Supply Chain 통합 흐름 구성의 접두사가 샘플 데이터 파일을 업로드할 때 사용된 접두사와 일치하는지 확인합니다.

  2. AWS Supply Chain 데이터 세트의 리소스가 다시 생성된 경우 연결된 Amazon 리소스 이름(ARNs)이 내부적으로 변경됩니다. 따라서 AWS Supply Chain 서비스 통합 흐름 리소스에 대한 리소스를 재배포합니다.

관련 리소스

AWS 설명서

기타 리소스

추가 정보

이 솔루션은 더 많은 데이터 세트에 복제할 수 있으며와 함께 제공되는 사전 구축된 대시보드 AWS Supply Chain 또는 Amazon Quick Sight와의 사용자 지정 통합을 통해 추가 분석을 위해 쿼리할 수 있습니다. 또한 Amazon Q를 사용하여 AWS Supply Chain 인스턴스와 관련된 질문을 할 수 있습니다.

AWS Supply Chain Analytics를 사용하여 데이터 분석

AWS Supply Chain 분석 설정 지침은 AWS Supply Chain 설명서의 AWS Supply Chain 분석 설정을 참조하세요.

이 패턴은 CalendarOutbound_Order_Line 데이터 세트의 생성을 보여줍니다. 이러한 데이터 세트를 사용하는 분석을 생성하려면 다음 단계를 사용합니다.

  1. 데이터 세트를 분석하려면 계절성 분석 대시보드를 사용합니다. 대시보드를 추가하려면 AWS Supply Chain 설명서의 사전 구축된 대시보드의 단계를 따르세요.

  2. 대시보드를 선택하여 일정 데이터 및 아웃바운드 주문 라인 데이터에 대한 샘플 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 참조하세요.