翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 の最新バージョンのインストールまたは更新」および「設定の基本」を参照してください。1.11.24 または 2.0.0 の最小 AWS CLI バージョンを使用してください。
-
製品の CLI エイリアスを削除するには、Bash 互換のターミナルと JQ コマンドライン JSON プロセッサが必要です。コマンドライン JSON プロセッサのインストールの詳細については、jq のダウンロード
を参照してください。 -
AWS CLI エイリアスを作成して
Disassociation
API 呼び出しをバッチ処理することで、1 つのコマンドで製品を削除できるようになります。
製品を正常に削除するには、まず製品に関連付けられているすべてのリソースの関連付けを解除する必要があります。製品リソースの関連付けの例としては、ポートフォリオの関連付け、予算、タグオプション、サービスアクションなどがあります。CLI を使用して製品を削除する場合、CLI force-delete-product
エイリアスを使用して Disassociate
APIを呼び出し、DeleteProduct
APIを妨げるリソースの関連付けを解除できます。これにより、個別の関連付け解除を個別に呼び出す必要がなくなります。
注記
以下の手順で示すファイルパスは、これらの操作を実行するために使用するオペレーティングシステムによって異なる場合があります。
AWS CLI エイリアスを作成して AWS Service Catalog 製品を削除する
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
-
1 行目に「
[toplevel]
」と 入力します。 -
ファイルを保存します。
次に、エイ force-delete-product リアススクリプトをalias
ファイルに手動で貼り付けるか、ターミナルウィンドウで コマンドを使用して、エイリアスをファイルに追加できます。
alias
ファイルに force-delete-product エイリアスを手動で追加する
-
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 CLI エイリアスの作成と使用は AWS Command Line Interface (CLI) ユーザーガイドに記載されています。
-
AWS CLIエイリアスリポジトリ
git リポジトリ。