기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 제품 삭제 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 다운로드
섹션을 참조하십시오. -
DisassociationAPI 호출을 일괄 처리할 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 파일 생성
-
AWS CLI 콘솔에서 구성 폴더로 이동합니다. 기본적으로 구성 폴더 경로는 Linux 및 macOS의
~/.aws/또는 Windows%USERPROFILE%\.aws\에 있습니다. -
파일 탐색을 사용하거나 선호하는 터미널에 다음 명령을 입력하여 이름을
cli로 지정한 하위 폴더를 생성합니다.$ mkdir -p ~/.aws/cli결과로 생성되는
cli폴더의 기본 경로는 Linux 및 macOS의~/.aws/cli/또는 Windows의%USERPROFILE%\.aws\cli입니다. -
새로운
cli폴더에서 파일 확장명 없이 이름이alias인 텍스트 파일을 생성합니다. 파일 탐색을 사용하거나 선호하는 터미널에 다음 명령을 입력하여alias파일을 생성할 수 있습니다.$ touch ~/.aws/cli/alias -
첫 번째 줄에
[toplevel]을 입력합니다. -
파일을 저장합니다.
그다음 별칭 스크립트를 파일에 수동으로 붙여넣거나 터미널 창에서 명령을 사용하여 force-delete-product 별칭을 alias 파일에 추가할 수 있습니다.
force-delete-product 별칭을 alias 파일에 수동으로 추가하기
-
AWS CLI 콘솔에서 AWS CLI 구성 폴더로 이동하여
alias파일을 엽니다. -
파일의
[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 -
파일을 저장합니다.
터미널 창을 사용하여 force-delete-product 별칭을 alias 파일에 추가합니다.
-
터미널 창을 열고 다음 명령을 실행합니다.
$ cat >> ~/.aws/cli/alias -
별칭 스크립트를 터미널 창에 붙여넣은 다음 Ctrl+D를 눌러
cat명령을 종료합니다.
force-delete-product 별칭 호출
-
터미널 창에서 다음 명령을 실행하여 제품 별칭 삭제를 호출합니다.
$ aws servicecatalog force-delete-product {product-id}아래 예제는
force-delete-product별칭 명령과 그에 따른 응답을 보여줍니다.$ aws servicecatalog force-delete-product prod-123Before 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 -
y를 입력하여 제품 삭제를 확인합니다.
제품을 성공적으로 삭제하면 터미널 창에 다음 결과가 표시됩니다.
Disassociating port-123
Disassociating budgetName
Disassociating tag-123
Disassociating act-123 from pa-123
Deleting product prod-123
추가 리소스
별칭 AWS CLI사용 및 AWS Service Catalog 제품 삭제에 대한 자세한 내용은 다음 리소스를 참조하세요.
-
AWS Command Line Interface (CLI) 사용 설명서의 AWS CLI 별칭 생성 및 사용.
-
AWS CLI 별칭 리포
지토리 git 리포지토리.