

# CloudFormation IaC ジェネレーターを使用してリソーススキャンを開始する
<a name="iac-generator-start-resource-scan"></a>

既存のリソースからテンプレートを作成する前に、リソースをスキャンして現在のリソースとその関係性を特定する必要があります。

リソーススキャンは、次のいずれかの方法で開始できます。IaC ジェネレーターを使用するのが初めての場合は、1 つ目の方法をお勧めします。
+ **すべてのリソースをスキャン (フルスキャン)** – 現在のアカウントおよびリージョンにある既存のリソースをすべてスキャンします。このスキャンでは、リソース 1,000 件に対して最大 10 分かかります。
+ **特定のリソースをスキャン (部分スキャン）** – 現在のアカウントおよびリージョンの中からスキャンするリソースタイプを手動で選択します。この方法は 1 つ目の方法よりも処理時間が短く、的を絞ったスキャンが行えるため、反復的なテンプレート開発に向いています。

スキャンが完了すると、テンプレートの生成時に含めるリソースとその関連リソースを選択できます。部分スキャンを使用する場合、関連リソースは、次のいずれかの場合にのみテンプレート生成中に使用できます。
+ スキャンを開始する前に関連リソースを具体的に選択した場合、または
+ 選択したリソースタイプを特定するときに必要となった場合。

例えば、`AWS::EKS::Cluster` を選択せずに `AWS::EKS::Nodegroup` を選択した場合、ノードグループを特定するには事前にクラスターを特定することが必要になるため、IaC ジェネレーターは自動的に `AWS::EKS::Cluster` リソースをスキャンに含めます。上記以外の場合、スキャンには具体的に選択したリソースのみが含まれます。

**注記**  
先に進む前に、IaC ジェネレーターを操作するための必要な権限を持っていることを確認します。詳細については、「[リソースのスキャンに必要な IAM アクセス許可](generate-IaC.md#iac-generator-permissions)」を参照してください。

**Topics**
+ [リソーススキャンを開始する (コンソール)](#start-resource-scan-console)
+ [リソーススキャンを開始する (AWS CLI)](#start-resource-scan-cli)

## リソーススキャンを開始する (コンソール)
<a name="start-resource-scan-console"></a>

**すべてのリソースタイプのリソーススキャンを開始するには (フルスキャン）**

1. CloudFormation コンソールの [IaC ジェネレーターページ](https://console.aws.amazon.com/cloudformation/home?#iac-generator)を開きます。

1. 画面上部のナビゲーションバーで、スキャンするリソースを含む AWS リージョンを選択します。

1. **[スキャン]** パネルで** [新しいスキャンを開始]** を選択し、**[すべてのリソースをスキャン]** を選択します。

**特定のリソースタイプのリソーススキャンを開始するには (部分スキャン）**

1. CloudFormation コンソールの [IaC ジェネレーターページ](https://console.aws.amazon.com/cloudformation/home?#iac-generator)を開きます。

1. 画面上部のナビゲーションバーで、スキャンするリソースを含む AWS リージョンを選択します。

1. **[スキャン]** パネルで **[新しいスキャンを開始]** を選択し、**[特定のリソースをスキャン]** を選択します。

1. **[部分スキャンを開始]** ダイアログボックスで、最大 100 個のリソースタイプを選択し、**[スキャンを開始]** を選択します。

## リソーススキャンを開始する (AWS CLI)
<a name="start-resource-scan-cli"></a>

**すべてのリソースタイプのリソーススキャンを開始するには (フルスキャン）**  
以下の [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html) コマンドを使用します。*us-east-1* を、スキャンするリソースを含む AWS リージョンに置き換えます。

```
aws cloudformation start-resource-scan --region us-east-1
```

成功した場合、このコマンドはスキャンの ARN を返します。`ResourceScanId` プロパティの ARN を書き留めます。テンプレートを作成するには、これが必要です。

```
{
    "ResourceScanId":
      "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"
}
```

**特定のリソースタイプのリソーススキャンを開始するには (部分スキャン）**

1. 以下の [cat](https://en.wikipedia.org/wiki/Cat_(Unix)) コマンドを使用して、スキャンするリソースタイプをホームディレクトリの `config.json` という名前の JSON ファイルに保存します。以下は、Amazon EC2 インスタンス、セキュリティグループ、およびすべての Amazon S3 リソースをスキャンする場合のスキャン設定の例です。

   ```
   $ cat > config.json
   [
     {
       "Types":[
         "AWS::EC2::Instance",
         "AWS::EC2::SecurityGroup",
         "AWS::S3::*"
       ]
     }
   ]
   ```

1. [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html) コマンドに `--scan-filters` オプションを付けて、作成した `config.json` ファイルと共に部分スキャンを開始します。*us-east-1* を、スキャンするリソースを含む AWS リージョンに置き換えます。

   ```
   aws cloudformation start-resource-scan --scan-filters file://config.json --region us-east-1
   ```

   成功した場合、このコマンドはスキャンの ARN を返します。`ResourceScanId` プロパティの ARN を書き留めます。テンプレートを作成するには、これが必要です。

   ```
   {
       "ResourceScanId":
         "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"
   }
   ```

**リソーススキャンの進行状況を監視する**  
[describe-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-resource-scan.html) コマンドを使用します。`--resource-scan-id` オプションでは、サンプル ARN を実際の ARN に置き換えます。

```
aws cloudformation describe-resource-scan --region us-east-1 \
  --resource-scan-id arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60
```

成功すると、このコマンドは以下のような出力を返します。

```
{
    "ResourceScanId": "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60",
    "Status": "COMPLETE",
    "StartTime": "2023-08-21T03:10:38.485000+00:00",
    "EndTime": "2023-08-21T03:20:28.485000+00:00",
    "PercentageCompleted": 100.0,
    "ResourceTypes": [
        "AWS::CloudFront::CachePolicy",
        "AWS::CloudFront::OriginRequestPolicy",
        "AWS::EC2::DHCPOptions",
        "AWS::EC2::InternetGateway",
        "AWS::EC2::KeyPair",
        "AWS::EC2::NetworkAcl",
        "AWS::EC2::NetworkInsightsPath",
        "AWS::EC2::NetworkInterface",
        "AWS::EC2::PlacementGroup",
        "AWS::EC2::Route",
        "AWS::EC2::RouteTable",
        "AWS::EC2::SecurityGroup",
        "AWS::EC2::Subnet",
        "AWS::EC2::SubnetCidrBlock",
        "AWS::EC2::SubnetNetworkAclAssociation",
        "AWS::EC2::SubnetRouteTableAssociation",
        ...
    ],
    "ResourcesRead": 676
}
```

部分スキャンでは、出力は以下のようになります。

```
{
    "ResourceScanId": "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60",
    "Status": "COMPLETE",
    "StartTime": "2025-03-06T18:24:19.542000+00:00",
    "EndTime": "2025-03-06T18:25:23.142000+00:00",
    "PercentageCompleted": 100.0,
    "ResourceTypes": [
        "AWS::EC2::Instance",
        "AWS::EC2::SecurityGroup",
        "AWS::S3::Bucket",
        "AWS::S3::BucketPolicy"
    ],
    "ResourcesRead": 65,
    "ScanFilters": [
        {
            "Types": [
                "AWS::EC2::Instance",
                "AWS::EC2::SecurityGroup",
                "AWS::S3::*"
            ]
        }
    ]
}
```

出力のフィールドの説明については、「AWS CloudFormation API リファレンス」の「[DescribeResourceScan](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeResourceScan.html)」を参照してください。