[小ネタ] Control Towerのアカウントファクトリーで作成されたService Catalogプロビジョニングされた製品をAWSアカウントIDで検索する

ふつうにコンソールで検索できるんや
2022.08.29

どうも、ちゃだいん(@chazuke4649)です。

AWS Control Towerのアカウントファクトリーで作成されたService Catalogプロビジョニング済み製品を、AWSアカウントIDで検索する方法を紹介します。

先に結論

  • コンソール: 「プロビジョニングされた製品」の一覧画面にて、AWSアカウントIDでふつうに検索できる
  • AWS CLI: aws servicecatalog search-provisioned-product を使う

背景

Control Tower環境にて、AWSアカウントのOUを移動させたり、情報を変更したり、アカウント自体を削除したりする場合、直接Service Catalogを触る機会があります。

プロビジョニング済み製品名とアカウント名が一致していれば検索は容易ですが、アカウント名を変更したり等々で、アカウント名で検索しづらい場合、かつ、アカウントの数が多い場合は、なかなかお目当てのプロビジョニング済み製品を見つけるのが困難になる可能性があります。

それらの理由でAWSアカウントIDで検索したいことがあったので調べました。

方法1(コンソール)

実はふつうにコンソールで検索するとヒットします。

Service Catalogのプロビジョニングされた製品の画面を開きます。

例えば今回 アカウント名 sandbox-aft-01、 アカウントID 123456789012 を探したいとします。

検索窓にAWSアカウントIDを入力すると、該当のリソースが1つに絞られました。

コンソールベースで行うにはこれで十分ですね。

方法2(AWS CLI)

AWS CLIでも検索可能です。

aws servicecatalog search-provisioned-productコマンドを使用します。

% aws servicecatalog search-provisioned-products \
--filters \
"SearchQuery="physicalId:123456789012"" \
--query "ProvisionedProducts[*].[Name, Id, PhysicalId]" \
--output table
--------------------------------------------------------
|               SearchProvisionedProducts              |
+----------------+--------------------+----------------+
|  sandbox-aft-01|  pp-v7zvpvy2ah5bi  |  123456789012  |
+----------------+--------------------+----------------+

physicalId が AWSアカウントID に該当するものと思われます。

上記は --queryにて、「プロビジョニングされた製品名」「プロビジョニングされた製品ID」「AWSアカウントID」で絞って、table 形式で出力しています。

ちなみに --query で絞らずに JSON のまま出力した場合は以下です。

% aws servicecatalog search-provisioned-products \
--filters \
"SearchQuery="physicalId:123456789012""

{
  "ProvisionedProducts": [
      {
          "Name": "sandbox-aft-01",
          "Arn": "arn:aws:servicecatalog:ap-northeast-1:999999999999:stack/sandbox-aft-01/pp-v7zvpvy2ah5bi",
          "Type": "CONTROL_TOWER_ACCOUNT",
          "Id": "pp-v7zvpvy2ah5bi",
          "Status": "AVAILABLE",
          "CreatedTime": "2021-11-30T23:35:45.571000+09:00",
          "IdempotencyToken": "ccff38fb-51ea-11ec-b781-419cf0917bcd",
          "LastRecordId": "rec-d4mw3oqbdhf7g",
          "LastProvisioningRecordId": "rec-d4mw3oqbdhf7g",
          "LastSuccessfulProvisioningRecordId": "rec-d4mw3oqbdhf7g",
          "Tags": [
              {
                  "Key": "aws:servicecatalog:productArn",
                  "Value": "arn:aws:catalog:ap-northeast-1:999999999999:product/prod-uz6ds4fbwjw7a"
              },
              {
                  "Key": "aws:servicecatalog:provisioningPrincipalArn",
                  "Value": "arn:aws:sts::999999999999:assumed-role/AWSReservedSSO_AdministratorAccess_1aef7e8a9bd04563/dummy-user-name@example.com"
              },
              {
                  "Key": "aws:servicecatalog:provisioningArtifactIdentifier",
                  "Value": "pa-7h64ccsc2lksk"
              },
              {
                  "Key": "aws:servicecatalog:portfolioArn",
                  "Value": "arn:aws:catalog:ap-northeast-1:999999999999:portfolio/port-666oxxfjfntpg"
              },
              {
                  "Key": "aws:servicecatalog:provisionedProductArn",
                  "Value": "arn:aws:servicecatalog:ap-northeast-1:999999999999:stack/sandbox-aft-01/pp-v7zvpvy2ah5bi"
              }
          ],
          "PhysicalId": "123456789012",
          "ProductId": "prod-uz6ds4fbwjw7a",
          "ProductName": "AWS Control Tower Account Factory",
          "ProvisioningArtifactId": "pa-h3jhditjiwbpi",
          "ProvisioningArtifactName": "AWS Control Tower Account Factory",
          "UserArn": "arn:aws:sts::999999999999:assumed-role/AWSAFTExecution",
          "UserArnSession": "arn:aws:sts::999999999999:assumed-role/AWSAFTExecution/AWSAFT-Session"
      }
  ],
  "TotalResultsCount": 1
}

調査は以上です。