CloudFormation IaC 생성기로 리소스 스캔 시작
기존 리소스에서 템플릿을 생성하기 전에 먼저 리소스 스캔을 시작하여 현재 리소스 및 해당 관계를 검색해야 합니다.
다음 옵션 중 하나를 사용하여 리소스 스캔을 시작할 수 있습니다. IaC 생성기를 처음 사용하는 경우 첫 번째 옵션을 권장합니다.
-
모든 리소스 스캔(전체 스캔) - 현재 계정 및 리전의 모든 기존 리소스를 스캔합니다. 이 스캔 프로세스는 1,000개의 리소스를 스캔하는 데 최대 10분이 걸릴 수 있습니다.
-
특정 리소스 스캔(부분 스캔) - 현재 계정 및 리전에서 스캔할 리소스 유형을 수동으로 선택합니다. 이 옵션은 더 빠르고 집중적인 스캔 프로세스를 제공하므로 반복 템플릿 개발에 적합합니다.
스캔이 완료되면 템플릿을 생성할 때 포함할 리소스 및 관련 리소스를 선택할 수 있습니다. 부분 스캔을 사용하는 경우 다음 중 하나에 해당할 때에만 템플릿 생성 중에 관련 리소스를 사용할 수 있습니다.
-
스캔을 시작하기 전에 특별히 선택한 경우 또는
-
선택한 리소스 유형을 검색하는 데 필요한 경우.
예를 들어 AWS::EKS::Cluster
를 선택하지 않고 AWS::EKS::Nodegroup
을 선택하는 경우 노드 그룹을 검색하려면 먼저 클러스터를 검색해야 하므로 IaC 생성기는 스캔에 AWS::EKS::Cluster
리소스를 자동으로 포함합니다. 다른 모든 경우 스캔에는 특별히 사용자가 선택한 리소스만 포함됩니다.
참고
계속 진행하기 전에 IaC 생성기를 사용하는 데 필요한 권한이 있는지 확인합니다. 자세한 내용은 리소스 스캔에 필요한 IAM 권한 섹션을 참조하세요.
리소스 스캔 시작(콘솔)
모든 리소스 유형의 리소스 스캔을 시작하는 방법(전체 스캔)
-
CloudFormation 콘솔의 IaC 생성기 페이지
를 엽니다. -
화면 상단의 탐색 모음에서 스캔할 리소스가 포함된 AWS 리전을 선택합니다.
-
스캔 패널에서 새 스캔 시작을 선택한 다음 모든 리소스 스캔을 선택하세요.
특정 리소스 유형의 리소스 스캔을 시작하는 방법(부분 스캔)
-
CloudFormation 콘솔의 IaC 생성기 페이지
를 엽니다. -
화면 상단의 탐색 모음에서 스캔할 리소스가 포함된 AWS 리전을 선택합니다.
-
스캔 패널에서 새 스캔 시작을 선택한 다음 특정 리소스 스캔을 선택하세요.
-
부분 스캔 시작 대화 상자에서 최대 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
"
}
특정 리소스 유형의 리소스 스캔을 시작하는 방법(부분 스캔)
-
cat
명령을 사용하여 홈 디렉터리에서 이름이 config.json
인 JSON 파일에 스캔하려는 리소스 유형 및 식별자를 저장하세요. 다음은 Amazon EC2 인스턴스, 보안 그룹 및 모든 Amazon S3 리소스를 스캔하는 스캔 구성 예제입니다.$ cat >
config.json
[ { "Types":[ "AWS::EC2::Instance
", "AWS::EC2::SecurityGroup
", "AWS::S3::*
" ] } ] -
생성한
config.json
파일과 함께--scan-filters
옵션을 포함해 start-resource-scan 명령을 사용하여 부분 스캔을 시작하세요.us-east-1
을 스캔할 리소스가 포함된 AWS 리전으로 바꿉니다.aws cloudformation start-resource-scan --scan-filters
file://config.json
--regionus-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-idarn: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을 참조하세요.