AWS CLI を使用して製品を削除する - AWS Service Catalog

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 ファイルを作成します。
  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. 1 行目に「[toplevel]」と 入力します。

  5. ファイルを保存します。

次に、エイ force-delete-product リアススクリプトをaliasファイルに手動で貼り付けるか、ターミナルウィンドウで コマンドを使用して、エイリアスをファイルに追加できます。

alias ファイルに force-delete-product エイリアスを手動で追加する
  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 製品の削除の詳細については、次のリソースを参照してください。