를 사용하여 제품 삭제 AWS CLI - AWS Service Catalog

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

를 사용하여 제품 삭제 AWS CLI

AWS Service Catalog 를 사용하면 AWS Command Line Interface (AWS CLI)를 사용하여 포트폴리오에서 제품을 삭제할 수 있습니다. AWS CLI 는 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. AWS Service Catalog force-delete 함수에는 자주 사용하는 명령이나 스크립트를 단축 AWS CLI 하기 위해에서 생성할 수 있는 바로 가기인 AWS CLI 별칭이 필요합니다.

사전 조건

  • AWS CLI를 설치하고 구성합니다. 자세한 내용은 AWS CLI의 최신 버전 설치 또는 업데이트구성 기본을 참조하십시오. 최소 AWS CLI 버전 1.11.24 또는 2.0.0을 사용합니다.

  • 제품 CLI 별칭 삭제에는 bash 호환 터미널과 JQ 명령줄 JSON 프로세서가 필요합니다. 명령줄 JSON 프로세서 설치에 대한 자세한 내용은 jq 다운로드 섹션을 참조하십시오.

  • Disassociation API 호출을 일괄 처리할 AWS CLI 별칭을 생성하여 단일 명령으로 제품을 삭제할 수 있습니다.

제품을 성공적으로 삭제하려면 먼저 제품과 관련된 모든 리소스의 연결을 끊어야 합니다. 제품 리소스 연결의 예로는 포트폴리오 연결, 예산, TagOption, 서비스 작업 등이 있습니다. CLI를 사용하여 제품을 삭제할 때 CLI force-delete-product 별칭을 사용하면 Disassociate API를 호출하여 DeleteProduct API를 차단하는 모든 리소스의 연결을 끊을 수 있습니다. 이렇게 하면 개별 연결 해제를 위해 별도의 호출을 하지 않아도 됩니다.

참고

아래 절차에 표시된 파일 경로는 이러한 작업을 수행하는 데 사용하는 운영 체제에 따라 다를 수 있습니다.

AWS Service Catalog 제품을 삭제하기 위한 AWS CLI 별칭 생성

AWS CLI 를 사용하여 AWS Service Catalog 제품을 삭제할 때 CLI force-delete-product별칭을 사용하면 Disassociate API를 호출하여 DeleteProduct 호출을 방해하는 모든 리소스의 연결을 해제할 수 있습니다.

AWS CLI 구성 폴더에 alias 파일 생성
  1. AWS CLI 콘솔에서 구성 폴더로 이동합니다. 기본적으로 구성 폴더 경로는 Linux 및 macOS의 ~/.aws/ 또는 Windows %USERPROFILE%\.aws\에 있습니다.

  2. 파일 탐색을 사용하거나 선호하는 터미널에 다음 명령을 입력하여 이름을 cli로 지정한 하위 폴더를 생성합니다.

    $ mkdir -p ~/.aws/cli

    결과로 생성되는 cli 폴더의 기본 경로는 Linux 및 macOS의 ~/.aws/cli/ 또는 Windows의 %USERPROFILE%\.aws\cli입니다.

  3. 새로운 cli 폴더에서 파일 확장명 없이 이름이 alias인 텍스트 파일을 생성합니다. 파일 탐색을 사용하거나 선호하는 터미널에 다음 명령을 입력하여 alias 파일을 생성할 수 있습니다.

    $ touch ~/.aws/cli/alias
  4. 첫 번째 줄에 [toplevel]을 입력합니다.

  5. 파일을 저장합니다.

그다음 별칭 스크립트를 파일에 수동으로 붙여넣거나 터미널 창에서 명령을 사용하여 force-delete-product 별칭을 alias 파일에 추가할 수 있습니다.

force-delete-product 별칭을 alias 파일에 수동으로 추가하기
  1. AWS CLI 콘솔에서 AWS CLI 구성 폴더로 이동하여 alias 파일을 엽니다.

  2. 파일의 [toplevel] 줄 아래에 다음 코드 별칭을 입력합니다.

    [command servicecatalog] force-delete-product = !f() { if [ "$#" -ne 1 ]; then echo "Illegal number of parameters" exit 1 fi if [[ "$1" != prod-* ]]; then echo "Please provide a valid product id." exit 1 fi productId=$1 describeProductAsAdminResponse=$(aws servicecatalog describe-product-as-admin --id $productId) listPortfoliosForProductResponse=$(aws servicecatalog list-portfolios-for-product --product-id $productId) tagOptions=$(echo "$describeProductAsAdminResponse" | jq -r '.TagOptions[].Id') budgetName=$(echo "$describeProductAsAdminResponse" | jq -r '.Budgets[].BudgetName') portfolios=$(echo "$listPortfoliosForProductResponse" | jq -r '.PortfolioDetails[].Id') provisioningArtifacts=$(echo "$describeProductAsAdminResponse" | jq -r '.ProvisioningArtifactSummaries[].Id') provisioningArtifactServiceActionAssociations=() for provisioningArtifactId in $provisioningArtifacts; do listServiceActionsForProvisioningArtifactResponse=$(aws servicecatalog list-service-actions-for-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId) serviceActions=$(echo "$listServiceActionsForProvisioningArtifactResponse" | jq -r '[.ServiceActionSummaries[].Id] | join(",")') if [[ -n "$serviceActions" ]]; then provisioningArtifactServiceActionAssociations+=("${provisioningArtifactId}:${serviceActions}") fi done echo "Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated." echo "Portfolios:" for portfolioId in $portfolios; do echo "\t${portfolioId}" done echo "Budgets:" if [[ -n "$budgetName" ]]; then echo "\t${budgetName}" fi echo "Tag Options:" for tagOptionId in $tagOptions; do echo "\t${tagOptionId}" done echo "Service Actions on Provisioning Artifact:" for association in "${provisioningArtifactServiceActionAssociations[@]}"; do echo "\t${association}" done read -p "Are you sure you want to delete ${productId}? y,n " if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit fi for portfolioId in $portfolios; do echo "Disassociating ${portfolioId}" aws servicecatalog disassociate-product-from-portfolio --product-id $productId --portfolio-id $portfolioId done if [[ -n "$budgetName" ]]; then echo "Disassociating ${budgetName}" aws servicecatalog disassociate-budget-from-resource --budget-name "$budgetName" --resource-id $productId fi for tagOptionId in $tagOptions; do echo "Disassociating ${tagOptionId}" aws servicecatalog disassociate-tag-option-from-resource --tag-option-id $tagOptionId --resource-id $productId done for association in "${provisioningArtifactServiceActionAssociations[@]}"; do associationPair=(${association//:/ }) provisioningArtifactId=${associationPair[0]} serviceActionsList=${associationPair[1]} serviceActionIds=${serviceActionsList//,/ } for serviceActionId in $serviceActionIds; do echo "Disassociating ${serviceActionId} from ${provisioningArtifactId}" aws servicecatalog disassociate-service-action-from-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId --service-action-id $serviceActionId done done echo "Deleting product ${productId}" aws servicecatalog delete-product --id $productId }; f
  3. 파일을 저장합니다.

터미널 창을 사용하여 force-delete-product 별칭을 alias 파일에 추가합니다.
  1. 터미널 창을 열고 다음 명령을 실행합니다.

    $ cat >> ~/.aws/cli/alias

  2. 별칭 스크립트를 터미널 창에 붙여넣은 다음 Ctrl+D를 눌러 cat 명령을 종료합니다.

force-delete-product 별칭 호출
  1. 터미널 창에서 다음 명령을 실행하여 제품 별칭 삭제를 호출합니다.

    $ aws servicecatalog force-delete-product {product-id}

    아래 예제는 force-delete-product 별칭 명령과 그에 따른 응답을 보여줍니다.

    $ aws servicecatalog force-delete-product prod-123
                  Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated.
                  Portfolios:
                    port-123
                  Budgets:
                      budgetName
                  Tag Options:
                      tag-123
                  Service Actions on Provisioning Artifact:
                      pa-123:act-123
                  Are you sure you want to delete prod-123? y,n 
                
  2. y를 입력하여 제품 삭제를 확인합니다.

제품을 성공적으로 삭제하면 터미널 창에 다음 결과가 표시됩니다.

          Disassociating port-123
          Disassociating budgetName
          Disassociating tag-123
          Disassociating act-123 from pa-123
          Deleting product prod-123
          

추가 리소스

별칭 AWS CLI사용 및 AWS Service Catalog 제품 삭제에 대한 자세한 내용은 다음 리소스를 참조하세요.