

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

# を使用した製品の削除 AWS CLI
<a name="product-delete-cli"></a>

AWS Service Catalog では、 [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) (AWS CLI) を使用してポートフォリオから製品を削除できます。 AWS CLI は、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りできるオープンソースツールです。 AWS Service Catalog 強制削除関数にはエイリアスが必要です。エイ[AWS CLI リアス](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html)は、頻繁に使用するコマンドやスクリプトを短縮 AWS CLI するために で作成できるショートカットです。

## 前提条件
<a name="product-delete-cli-requirements"></a>
+  AWS CLIをインストールして設定します。詳細については、「[AWS CLIの最新バージョンのインストールまたは更新](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」および「[設定の基本](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)」を参照してください。1.11.24 または 2.0.0 の最小 AWS CLI バージョンを使用します。
+ 製品の CLI エイリアスを削除するには、Bash 互換のターミナルと JQ コマンドライン JSON プロセッサが必要です。コマンドライン JSON プロセッサのインストールの詳細については、[jq のダウンロード](https://stedolan.github.io/jq/download/) を参照してください。
+ エイリアスを作成して `Disassociation` API AWS CLI コールをバッチ処理し、1 つのコマンドで製品を削除できます。

製品を正常に削除するには、まず製品に関連付けられているすべてのリソースの関連付けを解除する必要があります。製品リソースの関連付けの例としては、ポートフォリオの関連付け、予算、タグオプション、サービスアクションなどがあります。CLI を使用して製品を削除する場合、CLI `force-delete-product` エイリアスを使用して `Disassociate` APIを呼び出し、`DeleteProduct` APIを妨げるリソースの関連付けを解除できます。これにより、個別の関連付け解除を個別に呼び出す必要がなくなります。

**注記**  
以下の手順で示すファイルパスは、これらの操作を実行するために使用するオペレーティングシステムによって異なる場合があります。

## AWS Service Catalog 製品を削除するための AWS CLI エイリアスの作成
<a name="product-delete-cli-alias"></a>

を使用して AWS Service Catalog 製品 AWS CLI を削除する場合、CLI `force-delete-product` エイリアスを使用すると、 `Disassociate` API を呼び出して、`DeleteProduct`呼び出しを妨げるリソースの関連付けを解除できます。

**AWS CLI 設定フォルダに `alias` ファイルを作成する**

1.  AWS CLI コンソールで、configuraiton フォルダに移動します。デフォルトでは、設定フォルダは Linux または macOS では「`~/.aws/`」、Windows 上は「`%USERPROFILE%\.aws\`」にあります。

1. ファイルナビゲーションを使用するか、任意のターミナルで以下のコマンドを入力して、`cli` という名前のサブフォルダを作成します。

   ```
                $ mkdir -p ~/.aws/cli
   ```

   作成されるフォルダ「`cli`」のデフォルトパスは、Linux または macOS では「`~/.aws/cli/`」、Windows では「`%USERPROFILE%\.aws\cli`」上にあります。

1. 新しい `cli` フォルダで、ファイル拡張子なしの `alias` という名前のテキストファイルを作成します。ファイルナビゲーションを使用するか、任意のターミナルで以下のコマンドを入力して `alias` ファイルを作成できます。

   ```
                 $ touch ~/.aws/cli/alias
   ```

1. 1 行目に「`[toplevel]`」と 入力します。

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

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

**force-delete-product (製品強制削除) エイリアスを `alias` ファイルに手動で追加します。**

1.  AWS CLI コンソールで、 AWS CLI 設定フォルダに移動し、 `alias` ファイルを開きます。

1. ファイルの `[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
   ```

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

**ターミナルウィンドウを使用して、force-delete-product (製品強制削除) エイリアスを `alias` ファイルに追加します。**

1. ターミナルウィンドウを開いて、次のコマンドを実行します。

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

1. エイリアススクリプトをターミナルウィンドウに貼り付け、CTRL\$1D キーを押して `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
   ```

1. `y` を入力し、製品を削除することを確認します。

製品を正常に削除すると、ターミナルウィンドウに次の結果が表示されます。

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

## その他のリソース
<a name="product-delete-cli-resources"></a>

エイリアス AWS CLIの使用、 AWS Service Catalog 製品の削除の詳細については、次のリソースを参照してください。
+ *AWS Command Line Interface (CLI)* [AWS CLI ユーザーガイドのエイリアスの作成と使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html)。
+ [AWS CLI エイリアスリポジトリ](https://github.com/awslabs/awscli-aliases) git リポジトリ。
+ [AWS Service Catalog 製品の削除](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html)。
+ [AWS re:Invent 2016: YouTube の実効 AWS CLI ユーザー](https://youtu.be/Xc1dHtWa9-Q?t=1593)。 *YouTube* 