

# CloudFormation IaC 생성기로 리소스 스캔 시작
리소스 스캔 시작

기존 리소스에서 템플릿을 생성하기 전에 먼저 리소스 스캔을 시작하여 현재 리소스 및 해당 관계를 검색해야 합니다.

다음 옵션 중 하나를 사용하여 리소스 스캔을 시작할 수 있습니다. IaC 생성기를 처음 사용하는 경우 첫 번째 옵션을 권장합니다.
+ **모든 리소스 스캔(전체 스캔)** - 현재 계정 및 리전의 모든 기존 리소스를 스캔합니다. 이 스캔 프로세스는 1,000개의 리소스를 스캔하는 데 최대 10분이 걸릴 수 있습니다.
+ **특정 리소스 스캔(부분 스캔)** - 현재 계정 및 리전에서 스캔할 리소스 유형을 수동으로 선택합니다. 이 옵션은 더 빠르고 집중적인 스캔 프로세스를 제공하므로 반복 템플릿 개발에 적합합니다.

스캔이 완료되면 템플릿을 생성할 때 포함할 리소스 및 관련 리소스를 선택할 수 있습니다. 부분 스캔을 사용하는 경우 다음 중 하나에 해당할 때에만 템플릿 생성 중에 관련 리소스를 사용할 수 있습니다.
+ 스캔을 시작하기 전에 특별히 선택한 경우 또는
+ 선택한 리소스 유형을 검색하는 데 필요한 경우.

예를 들어 `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)

## 리소스 스캔 시작(콘솔)


**모든 리소스 유형의 리소스 스캔을 시작하는 방법(전체 스캔)**

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)


**모든 리소스 유형의 리소스 스캔을 시작하는 방법(전체 스캔)**  
다음 [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. 생성한 `config.json` 파일과 함께 `--scan-filters` 옵션을 포함해 [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 --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)을 참조하세요.