기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CLI를 사용하여 제품 삭제하기
AWS Service Catalog를 사용하면 AWS Command Line Interface(AWS CLI)를 사용하여 포트폴리오에서 제품을 삭제할 수 있습니다. AWS CLI은(는) 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. AWS Service Catalog 강제 삭제 함수에는 자주 사용하는 명령이나 스크립트를 단축하기 위해 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
파일을 생성합니다.
-
AWS CLI 콘솔에서 구성 폴더로 이동합니다. 기본적으로 구성 폴더 경로는
~/.aws/
(Linux 및 macOS) 또는%USERPROFILE%\.aws\
(Windows)에 있습니다. -
파일 탐색을 사용하거나 선호하는 터미널에 다음 명령을 입력하여 이름을
cli
로 지정한 하위 폴더를 생성합니다.$ mkdir -p ~/.aws/cli
결과로 생성되는
cli
폴더의 기본 경로는~/.aws/cli/
(Linux 및 macOS) 또는%USERPROFILE%\.aws\cli
(Windows)입니다. -
새로운
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-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
-
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 리포지토리. -
AWSre:인벤트 2016: 효과적인 사용자가 켜져 있습니다
. AWS CLI YouTube