연습: Windows Server AMI에 패치 적용 - AWS Systems Manager

연습: Windows Server AMI에 패치 적용

AWS-UpdateWindowsAmi 문서를 사용하면 JSON 또는 YAML로 워크플로를 만들지 않고도 Amazon Windows AMI를 기반으로 이미지 유지 관리 작업을 자동화할 수 있습니다. 이 문서는 Windows Server 2008 R2 이상에 지원됩니다. 다음과 같은 유형의 작업을 수행하는 데 AWS-UpdateWindowsAmi 문서를 사용할 수 있습니다.

  • 모든 Windows 업데이트를 설치하고 Amazon 소프트웨어를 업그레이드합니다(기본 동작).

  • 특정 Windows 업데이트를 설치하고 Amazon 소프트웨어를 업그레이드합니다.

  • 스크립트를 이용해 AMI를 사용자 지정합니다.

시작하기 전에

자동화 문서로 작업을 시작하기 전에 역할을 구성하고, 선택적으로 자동화를 위한 CloudWatch Events를 구성합니다. 자세한 정보는 Automation 시작하기 단원을 참조하십시오. 또한 이 연습에서는 AWS Identity and Access Management(IAM) 인스턴스 프로파일의 이름을 지정해야 합니다. IAM 인스턴스 프로파일의 생성에 대한 자세한 내용은 Systems Manager에 대한 IAM 인스턴스 프로파일 생성 단원을 참조하십시오.

참고

SSM 에이전트 업데이트는 일반적으로 서로 다른 시점에 여러 리전에 배포됩니다. AMI를 사용자 지정하거나 업데이트하려면 작업 중인 리전에 게시된 소스 AMI만 사용합니다. 그러면 해당 리전에 릴리스된 최신 SSM 에이전트로 작업하고 호환성 문제를 피할 수 있습니다.

AWS-UpdateWindowsAmi 문서는 다음 입력 파라미터를 수락합니다.

파라미터 유형 설명

SourceAmiId

문자열

(필수) 소스 AMI ID입니다. Systems Manager 파라미터 스토어 public 파라미터를 사용하여 자동으로 최신 Windows Server AMI ID를 참조할 수 있습니다. 자세한 내용은 AWS Systems Manager Parameter Store를 사용하여 최신 Windows AMI ID 쿼리를 참조하십시오.

IamInstanceProfileName

문자열

(필수) Systems Manager에 대한 IAM 인스턴스 프로파일 생성에서 만든 IAM 인스턴스 프로파일 역할의 이름입니다. 인스턴스 프로파일 역할은 인스턴스에 대해 명령 실행 또는 서비스 시작 및 중지와 같은 작업을 수행할 권한을 자동화 서비스에 부여합니다. 자동화 문서에서는 이 인스턴스 프로파일 역할의 이름만 사용합니다. Amazon 리소스 이름(ARN)을 지정하면 자동화가 실행되지 않습니다.

AutomationAssumeRole

문자열

(필수) Automation 시작하기에서 만든 IAM 서비스 역할의 이름입니다. 서비스 역할(assume role)은 IAM 역할을 수임하여 사용자 대신 작업을 수행할 권한을 자동화 서비스에 부여합니다. 예를 들어, 서비스 역할은 자동화 문서에서 aws:createImage 작업을 실행할 때 자동화 서비스가 새로운 AMI를 생성할 수 있도록 합니다. 이 파라미터의 경우, 전체 ARN을 지정해야 합니다.

TargetAmiName

문자열

(선택 사항) 새로 만든 AMI의 이름입니다. 기본 이름은 원본 AMI ID, 생성 시간 및 날짜가 포함된 시스템 생성 문자열입니다.

InstanceType

문자열

(선택 사항) 작업 영역의 호스트로 시작할 인스턴스의 유형입니다. 인스턴스 유형은 리전마다 다릅니다. 기본 형식은 t2.medium입니다.

PreUpdateScript

문자열

(선택 사항) AMI를 업데이트하기 전에 실행할 스크립트. 자동화 문서에 스크립트를 입력하거나 런타임 시 파라미터로 입력합니다.

PostUpdateScript

문자열

(선택 사항) AMI를 업데이트한 후에 실행할 스크립트. 자동화 문서에 스크립트를 입력하거나 런타임 시 파라미터로 입력합니다.

IncludeKbs

문자열

(선택 사항) 포함시킬 하나 이상의 Microsoft Knowledge Base(KB) 문서 ID를 지정합니다. 쉼표로 분리된 값을 사용하여 여러 ID를 설치할 수 있습니다. 유효한 형식: KB9876543 또는 9876543.

ExcludeKbs

문자열

(선택 사항) 제외할 하나 이상의 Microsoft Knowledge Base(KB) 문서 ID를 지정합니다. 쉼표로 분리된 값을 사용하여 여러 ID를 제외할 수 있습니다. 유효한 형식: KB9876543 또는 9876543.

범주

문자열

(선택 사항)하나 이상의 업데이트 범주를 지정합니다. 쉼표로 분리된 값을 사용하여 범주를 필터링할 수 있습니다. 옵션: 중요 업데이트, 보안 업데이트, 정의 업데이트, 업데이트 롤업, 서비스 팩, 도구, 업데이트 또는 드라이버. 유효한 형식에는 중요 업데이트 등 단일 입력이 포함됩니다. 또는 중요 업데이트,보안 업데이트,정의 업데이트처럼 쉼표로 구분된 목록을 지정할 수 있습니다.

SeverityLevels

문자열

(선택 사항) 업데이트와 연결되는 하나 이상의 MSRC 심각도를 지정합니다. 쉼표로 분리된 값을 사용하여 심각도를 필터링할 수 있습니다. 옵션: 심각, 중요, 낮음, 보통 또는 비지정. 유효한 형식에는 심각 등 단일 입력이 포함됩니다. 또는 심각,중요,낮음처럼 쉼표로 구분된 목록을 지정할 수 있습니다.

자동화 단계

AWS-UpdateWindowsAmi 문서에는 기본적으로 다음과 같은 자동화 단계가 포함됩니다.

1단계: launchInstance(aws:runInstances 작업)

이 단계는 지정된 SourceAmiID의 IAM 인스턴스 프로파일 역할을 사용하여 인스턴스를 시작합니다.

2단계: runPreUpdateScript(aws:runCommand 작업)

이 단계에서는 업데이트가 설치되기 전에 실행되는 문자열로 스크립트를 지정할 수 있습니다.

3단계: updateEC2Config(aws:runCommand 작업)

이 단계는 AWS-InstallPowerShellModule 퍼블릭 문서를 사용하여 AWS 퍼블릭 PowerShell 모듈을 다운로드합니다. Systems Manager는 SHA-256 해시를 사용해 모듈의 무결성을 확인합니다. 그런 다음 Systems Manager는 운영 체제를 확인하여 EC2Config와 EC2Launch 중 무엇을 업데이트할지 결정합니다. EC2Config는 Windows Server 2008 R2에서 Windows Server 2012 R2까지 실행됩니다. EC2Launch는 Windows Server 2016에서 실행됩니다.

4단계: updateSSMAgent(aws:runCommand 작업)

이 단계는 AWS-UpdateSSMAgent 퍼블릭 문서를 사용하여 SSM 에이전트를 업데이트합니다.

5단계: updateAWSPVDriver(aws:runCommand 작업)

이 단계는 AWS-ConfigureAWSPackage 퍼블릭 문서를 사용해 AWS PV 드라이버를 업데이트합니다.

6단계: updateAwsEnaNetworkDriver (aws:runCommand 작업)

이 단계는 AWS-ConfigureAWSPackage 퍼블릭 문서를 사용해 AWS ENA 네트워크 드라이버를 업데이트합니다.

7단계: installWindowsUpdates(aws:runCommand 작업)

이 단계는 AWS-InstallWindowsUpdates 퍼블릭 문서를 사용해 Windows 업데이트를 설치합니다. 기본적으로 Systems Manager는 누락된 모든 업데이트를 검색하고 설치합니다. 파라미터 IncludeKbs, ExcludeKbs, Categories 또는 SeverityLevels 중 하나를 지정하여 기본 동작을 변경할 수 있습니다.

8단계: runPostUpdateScript(aws:runCommand 작업)

이 단계에서는 업데이트가 설치된 후에 실행되는 문자열로 스크립트를 지정할 수 있습니다.

9단계: runSysprepGeneralize(aws:runCommand 작업)

이 단계는 AWS-InstallPowerShellModule 퍼블릭 문서를 사용하여 AWS 퍼블릭 PowerShell 모듈을 다운로드합니다. Systems Manager는 SHA-256 해시를 사용해 모듈의 무결성을 확인합니다. 그런 다음 Systems Manager는 EC2Launch(Windows Server 2016) 또는 EC2Config(Windows Server 2008 R2부터 2012 R2까지)에 대한 AWS 지원 방법을 사용하여 sysprep을 실행합니다.

10단계: stopInstance(aws:changeInstanceState 작업)

이 단계에서는 업데이트된 인스턴스를 중지합니다.

11단계: createImage(aws:createImage 작업)

이 단계에서는 원본 ID 및 생성 시간과 링크할 수 있는 설명 이름으로 새 AMI를 만듭니다. 예를 들면 "EC2 자동화가 {{global:DATE_TIME}}에 {{SourceAmiId}}에서 생성한 AMI"와 같습니다. 여기서 DATE_TIME 및 SourceID는 자동화의 변수를 나타냅니다.

12단계: TerminateInstance(aws:changeInstanceState 작업)

이 단계에서는 실행 중인 인스턴스를 종료하여 실행 작업을 정리합니다.

출력

이 섹션에서는 다양한 단계의 출력 또는 원하는 파라미터의 값을 자동화 출력으로 지정할 수 있습니다. 기본적으로 출력은 실행에 의해 생성되어 업데이트된 Windows AMI의 ID입니다.

참고

기본적으로 자동화가 AWS-UpdateWindowsAmi 문서를 실행하고 임시 인스턴스를 생성하면 시스템이 기본 VPC를 사용합니다(172.30.0.0/16). 기본 VPC를 삭제했다면 다음 오류 메시지를 받게 됩니다.

VPC not defined 400

이 문제를 해결하려면 AWS-UpdateWindowsAmi 문서의 사본을 만들고 서브넷 ID를 지정해야 합니다. 자세한 내용은 VPC not defined 400 단원을 참조하십시오.

자동화를 이용해 패치가 적용된 Windows AMI를 생성하는 방법

  1. 아직 하지 않은 경우 AWS CLI를 설치하고 구성합니다.

    자세한 정보는 AWS 명령줄 도구 설치 또는 업그레이드 단원을 참조하십시오.

  2. 다음 명령을 실행하여 AWS-UpdateWindowsAmi 문서를 실행합니다. 파라미터 섹션에서 AMI 소스 ID, EC2 인스턴스 프로파일 역할, Automation 서비스 역할을 지정합니다. 아래 예제 명령은 최신 Amazon EC2 AMI를 사용하여 적용해야 하는 패치의 개수를 최소화합니다. 이 명령을 두 번 이상 실행하면 targetAMIname에 고유한 값을 지정해야 합니다. AMI 이름은 고유해야 합니다.

    aws ssm start-automation-execution --document-name="AWS-UpdateWindowsAmi" --parameters SourceAmiId='ami-0246f4914689c475f',IamInstanceProfileName='ManagedInstanceProfile',AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

    이 명령으로 실행 ID가 반환됩니다. 클립보드에 이 ID를 복사합니다. 이 ID를 사용하여 워크플로의 상태를 확인합니다.

    {
        "AutomationExecutionId": "ID"
    }
  3. AWS CLI를 사용하여 워크플로 실행을 보려면 다음 명령을 실행합니다.

    aws ssm describe-automation-executions
  4. 실행 진행 상황에 대한 세부 정보를 보려면 다음 명령을 실행합니다.

    aws ssm get-automation-execution --automation-execution-id ID
참고

적용된 패치 수에 따라 이 샘플 워크플로에서 실행된 Windows 패치 적용 프로세스가 완료되는 데 30분 이상의 시간이 소요될 수 있습니다.