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

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

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

다음 옵션 중 하나를 사용하여 리소스 스캔을 시작할 수 있습니다. IaC 생성기를 처음 사용하는 경우 첫 번째 옵션을 권장합니다.

  • 모든 리소스 스캔(전체 스캔) - 현재 계정 및 리전의 모든 기존 리소스를 스캔합니다. 이 스캔 프로세스는 1,000개의 리소스를 스캔하는 데 최대 10분이 걸릴 수 있습니다.

  • 특정 리소스 스캔(부분 스캔) - 현재 계정 및 리전에서 스캔할 리소스 유형을 수동으로 선택합니다. 이 옵션은 더 빠르고 집중적인 스캔 프로세스를 제공하므로 반복 템플릿 개발에 적합합니다.

스캔이 완료되면 템플릿을 생성할 때 포함할 리소스 및 관련 리소스를 선택할 수 있습니다. 부분 스캔을 사용하는 경우 다음 중 하나에 해당할 때에만 템플릿 생성 중에 관련 리소스를 사용할 수 있습니다.

  • 스캔을 시작하기 전에 특별히 선택한 경우 또는

  • 선택한 리소스 유형을 검색하는 데 필요한 경우.

예를 들어 AWS::EKS::Cluster를 선택하지 않고 AWS::EKS::Nodegroup을 선택하는 경우 노드 그룹을 검색하려면 먼저 클러스터를 검색해야 하므로 IaC 생성기는 스캔에 AWS::EKS::Cluster 리소스를 자동으로 포함합니다. 다른 모든 경우 스캔에는 특별히 사용자가 선택한 리소스만 포함됩니다.

참고

계속 진행하기 전에 IaC 생성기를 사용하는 데 필요한 권한이 있는지 확인합니다. 자세한 내용은 리소스 스캔에 필요한 IAM 권한 섹션을 참조하세요.

리소스 스캔 시작(콘솔)

모든 리소스 유형의 리소스 스캔을 시작하는 방법(전체 스캔)
  1. CloudFormation 콘솔의 IaC 생성기 페이지를 엽니다.

  2. 화면 상단의 탐색 모음에서 스캔할 리소스가 포함된 AWS 리전을 선택합니다.

  3. 스캔 패널에서 새 스캔 시작을 선택한 다음 모든 리소스 스캔을 선택하세요.

특정 리소스 유형의 리소스 스캔을 시작하는 방법(부분 스캔)
  1. CloudFormation 콘솔의 IaC 생성기 페이지를 엽니다.

  2. 화면 상단의 탐색 모음에서 스캔할 리소스가 포함된 AWS 리전을 선택합니다.

  3. 스캔 패널에서 새 스캔 시작을 선택한 다음 특정 리소스 스캔을 선택하세요.

  4. 부분 스캔 시작 대화 상자에서 최대 100개의 리소스 유형을 선택한 다음 스캔 시작을 선택하세요.

리소스 스캔 시작(AWS CLI)

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

다음 start-resource-scan 명령을 사용합니다. 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 명령을 사용하여 홈 디렉터리에서 이름이 config.json인 JSON 파일에 스캔하려는 리소스 유형 및 식별자를 저장하세요. 다음은 Amazon EC2 인스턴스, 보안 그룹 및 모든 Amazon S3 리소스를 스캔하는 스캔 구성 예제입니다.

    $ cat > config.json [ { "Types":[ "AWS::EC2::Instance", "AWS::EC2::SecurityGroup", "AWS::S3::*" ] } ]
  2. 생성한 config.json 파일과 함께 --scan-filters 옵션을 포함해 start-resource-scan 명령을 사용하여 부분 스캔을 시작하세요. 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 명령을 사용합니다. --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을 참조하세요.