연습: Run Command에서 AWS Tools for Windows PowerShell 사용 - AWS Systems Manager

연습: Run Command에서 AWS Tools for Windows PowerShell 사용

다음 예에서는 AWS Tools for Windows PowerShell를 사용하여 명령 및 명령 파라미터에 대한 정보를 보는 방법, 명령을 실행하는 방법, 해당 명령의 상태를 보는 방법을 보여 줍니다. 이 연습에는 각 사전 정의 AWS Systems Manager 문서의 예가 포함되어 있습니다.

중요

신뢰할 수 있는 관리자만 이번 주제에서 언급하는 Systems Manager 사전 구성 문서를 사용할 수 있도록 허용해야 합니다. Systems Manager 문서에서 지정하는 명령 또는 스크립트는 관리형 노드에 대한 관리자 권한으로 실행됩니다. 미리 정의된 Systems Manager 문서(AWS로 시작하는 모든 문서)를 실행할 권한이 있는 사용자는 해당 노드에 대한 관리자 권한도 보유합니다. 그 밖의 모든 사용자들에 대해서는 제한된 문서를 생성하여 그 문서를 특정 사용자와 공유해야 합니다.

AWS Tools for Windows PowerShell 세션 설정 구성

자격 증명 지정

로컬 컴퓨터에서 Tools for Windows PowerShell을 열고 다음 명령을 실행하여 자격 증명을 지정합니다. 구성할 관리형 노드에 대한 관리자 권한이 있거나 AWS Identity and Access Management(IAM)에서 적절한 권한을 부여받아야 합니다. 자세한 내용은 AWS Systems Manager에 대한 관리형 노드 설정 단원을 참조하십시오.

Set-AWSCredentials –AccessKey key-name –SecretKey key-name
기본 AWS 리전 설정

다음 명령을 실행하여 PowerShell 세션의 리전을 설정합니다. 예제에서는 미국 동부(오하이오) 리전(us-east-2)을 사용합니다. Run Command는 Amazon Web Services 일반 참조의 Systems Manager 서비스 엔드포인트에 나열된 AWS 리전에서 사용할 수 있습니다.

Set-DefaultAWSRegion ` -Region us-east-2

사용할 수 있는 모든 문서 나열

이 명령을 실행하면 계정에 사용 가능한 모든 문서가 나열됩니다.

Get-SSMDocumentList

PowerShell 명령 또는 스크립트 실행

Run Command 및 AWS-RunPowerShell 문서를 사용하면 로컬로 로그인한 것처럼 관리형 노드에서 명령이나 스크립트를 실행할 수 있습니다. 명령을 내리거나 로컬 스크립트의 경로를 입력하여 명령을 실행할 수 있습니다.

참고

Run Command를 사용할 때 서버와 관리형 노드를 재부팅하여 스크립트를 호출하는 방법은 명령 실행 시 재부팅 처리 섹션을 참조하세요.

설명 및 사용 가능한 파라미터 보기

Get-SSMDocumentDescription ` -Name "AWS-RunPowerShellScript"

파라미터에 대한 자세한 내용 보기

Get-SSMDocumentDescription ` -Name "AWS-RunPowerShellScript" | Select -ExpandProperty Parameters

AWS-RunPowerShellScript 문서를 사용하여 명령 전송

다음 명령은 두 개의 관리형 노드에 대해 "C:\Users" 디렉터리의 내용과 "C:\" 디렉터리의 내용을 보여줍니다.

$runPSCommand = Send-SSMCommand ` -InstanceIds @("instance-ID-1", "instance-ID-2") ` -DocumentName "AWS-RunPowerShellScript" ` -Comment "Demo AWS-RunPowerShellScript with two instances" ` -Parameter @{'commands'=@('dir C:\Users', 'dir C:\')}
명령 요청 세부 정보 가져오기

다음 명령은 CommandId를 사용하여 두 관리형 노드에서 명령 실행 상태를 가져옵니다. 이 예에서는 이전 명령에서 반환된 CommandId를 사용합니다.

Get-SSMCommand ` -CommandId $runPSCommand.CommandId

이 예에서 명령 상태는 성공, 보류 중 또는 진행 중일 수 있습니다.

관리형 노드당 명령 정보 가져오기

다음 명령은 이전 명령의 CommandId를 사용하여 관리형 노드 단위로 명령 실행 상태를 가져옵니다.

Get-SSMCommandInvocation ` -CommandId $runPSCommand.CommandId
특정 관리형 노드에 대한 응답 데이터로 명령 정보 가져오기

다음 명령은 특정 관리형 노드에 대한 원래 Send-SSMCommand 출력을 반환합니다.

Get-SSMCommandInvocation ` -CommandId $runPSCommand.CommandId ` -Details $true ` -InstanceId instance-ID | Select -ExpandProperty CommandPlugins

명령 취소

다음 명령은 AWS-RunPowerShellScript 문서에 대한 Send-SSMCommand를 취소합니다.

$cancelCommand = Send-SSMCommand ` -InstanceIds @("instance-ID-1","instance-ID-2") ` -DocumentName "AWS-RunPowerShellScript" ` -Comment "Demo AWS-RunPowerShellScript with two instances" ` -Parameter @{'commands'='Start-Sleep –Seconds 120; dir C:\'} Stop-SSMCommand -CommandId $cancelCommand.CommandId
명령 상태 확인

다음 명령은 Cancel 명령의 상태를 확인합니다.

Get-SSMCommand ` -CommandId $cancelCommand.CommandId

AWS-InstallApplication 문서를 사용하여 애플리케이션 설치

Run Command 및 AWS-InstallApplication 문서를 사용하면 관리형 노드에 애플리케이션을 설치, 복구 또는 제거할 수 있습니다. 이 명령에는 MSI 경로 또는 주소가 필요합니다.

참고

Run Command를 사용할 때 서버와 관리형 노드를 재부팅하여 스크립트를 호출하는 방법은 명령 실행 시 재부팅 처리 섹션을 참조하세요.

설명 및 사용 가능한 파라미터 보기

Get-SSMDocumentDescription ` -Name "AWS-InstallApplication"

파라미터에 대한 자세한 내용 보기

Get-SSMDocumentDescription ` -Name "AWS-InstallApplication" | Select -ExpandProperty Parameters

AWS-InstallApplication 문서를 사용하여 명령 전송

다음 명령은 무인 모드로 관리형 노드에 Python 버전을 설치하고 C: 드라이브의 로컬 텍스트 파일에 출력을 로깅합니다.

$installAppCommand = Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallApplication" ` -Parameter @{'source'='https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi'; 'parameters'='/norestart /quiet /log c:\pythoninstall.txt'}
관리형 노드당 명령 정보 가져오기

다음 명령은 CommandId를 사용하여 명령 실행 상태를 가져옵니다.

Get-SSMCommandInvocation ` -CommandId $installAppCommand.CommandId ` -Details $true
특정 관리형 노드에 대한 응답 데이터로 명령 정보 가져오기

다음 명령은 Python 설치 결과를 반환합니다.

Get-SSMCommandInvocation ` -CommandId $installAppCommand.CommandId ` -Details $true ` -InstanceId instance-ID | Select -ExpandProperty CommandPlugins

AWS-InstallPowerShellModule JSON 문서를 사용하여 PowerShell 모듈 설치

Run Command를 사용하여 관리형 노드에 PowerShell 모듈을 설치할 수 있습니다. PowerShell 모듈에 대한 자세한 내용은 Windows PowerShell Modules 섹션을 참조하세요.

설명 및 사용 가능한 파라미터 보기

Get-SSMDocumentDescription ` -Name "AWS-InstallPowerShellModule"

파라미터에 대한 자세한 내용 보기

Get-SSMDocumentDescription ` -Name "AWS-InstallPowerShellModule" | Select -ExpandProperty Parameters

PowerShell 모듈 설치

다음 명령은 EZOut.zip 파일을 다운로드하여 설치한 다음, 명령을 추가로 실행하여 XPS 뷰어를 설치합니다. 마지막으로 이 명령의 출력이 “amzn-s3-demo-bucket”이라는 S3 버킷으로 업로드됩니다.

$installPSCommand = Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallPowerShellModule" ` -Parameter @{'source'='https://gallery.technet.microsoft.com/EZOut-33ae0fb7/file/110351/1/EZOut.zip';'commands'=@('Add-WindowsFeature -name XPS-Viewer -restart')} ` -OutputS3BucketName amzn-s3-demo-bucket
관리형 노드당 명령 정보 가져오기

다음 명령은 CommandId를 사용하여 명령 실행 상태를 가져옵니다.

Get-SSMCommandInvocation ` -CommandId $installPSCommand.CommandId ` -Details $true
특정 관리형 노드에 대한 응답 데이터로 명령 정보 가져오기

다음 명령은 특정 CommandId에 대한 원래 Send-SSMCommand 출력을 반환합니다.

Get-SSMCommandInvocation ` -CommandId $installPSCommand.CommandId ` -Details $true | Select -ExpandProperty CommandPlugins

AWS-JoinDirectoryServiceDomain JSON 문서를 사용하여 도메인에 관리형 노드 조인

Run Command를 사용하여 AWS Directory Service 도메인에 관리형 노드를 빠르게 조인할 수 있습니다. 이 명령을 실행하기 전에 디렉터리를 생성합니다. 또한 AWS Directory Service에 대해 자세히 알아보는 것이 좋습니다. 자세한 내용은 AWS Directory Service 관리 안내서를 참조하세요.

도메인에 관리형 노드를 조인하는 것만 가능합니다. 도메인에서 노드를 제거할 수는 없습니다.

참고

Run Command를 사용하여 스크립트를 호출할 관리형 노드에 대한 자세한 내용은 명령 실행 시 재부팅 처리 섹션을 참조하세요.

설명 및 사용 가능한 파라미터 보기

Get-SSMDocumentDescription ` -Name "AWS-JoinDirectoryServiceDomain"

파라미터에 대한 자세한 내용 보기

Get-SSMDocumentDescription ` -Name "AWS-JoinDirectoryServiceDomain" | Select -ExpandProperty Parameters

관리형 노드를 도메인에 조인

다음 명령은 관리되는 노드를 지정된 AWS Directory Service 도메인에 조인하고, 생성된 모든 아웃풋을 예시 Amazon Simple Storage Service(Amazon S3) 버킷에 업로드합니다.

$domainJoinCommand = Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-JoinDirectoryServiceDomain" ` -Parameter @{'directoryId'='d-example01'; 'directoryName'='ssm.example.com'; 'dnsIpAddresses'=@('192.168.10.195', '192.168.20.97')} ` -OutputS3BucketName amzn-s3-demo-bucket
관리형 노드당 명령 정보 가져오기

다음 명령은 CommandId를 사용하여 명령 실행 상태를 가져옵니다.

Get-SSMCommandInvocation ` -CommandId $domainJoinCommand.CommandId ` -Details $true
특정 관리형 노드에 대한 응답 데이터로 명령 정보 가져오기

이 명령은 특정 CommandId에 대한 원래 Send-SSMCommand의 출력을 반환합니다.

Get-SSMCommandInvocation ` -CommandId $domainJoinCommand.CommandId ` -Details $true | Select -ExpandProperty CommandPlugins

AWS-ConfigureCloudWatch 문서를 사용하여 Amazon CloudWatch Logs로 Windows 지표 전송

Windows용 이벤트 추적(ETW) 로그 및 시스템, 보안, 애플리케이션의 Windows Server 메시지를 Amazon CloudWatch Logs로 보낼 수 있습니다. 로그 기록을 처음 활성화하면 Systems Manager는 애플리케이션, 보안, ETW 로그를 업로드하기 시작한 시간부터 1분 내에 생성된 모든 로그를 전송합니다. 시작한 시간보다 1분 전에 발생한 로그는 포함되지 않습니다. 로깅을 해제했다가 나중에 다시 설정하면 Systems Manager는 중단된 시간부터 로그를 전송합니다. 사용자 정의 로그 파일 및 인터넷 정보 서비스(IIS) 로그의 경우 Systems Manager는 시작 지점부터 로그 파일을 읽습니다. 또한 Systems Manager는 성능 카운터 데이터를 CloudWatch Logs로 전송할 수도 있습니다.

이전에 EC2Config에서 CloudWatch 통합을 설정한 경우 Systems Manager 설정이 C:\Program Files\Amazon\EC2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json 파일의 관리형 노드에 로컬로 저장된 모든 설정을 재정의합니다. EC2Config를 사용하여 단일 관리형 노드에서 성능 카운터 및 로그를 관리하는 방법에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서CloudWatch 에이전트를 사용하여 Amazon EC2 인스턴스 및 온프레미스 서버로부터 지표 및 로그 수집을 참조하세요.

설명 및 사용 가능한 파라미터 보기

Get-SSMDocumentDescription ` -Name "AWS-ConfigureCloudWatch"

파라미터에 대한 자세한 내용 보기

Get-SSMDocumentDescription ` -Name "AWS-ConfigureCloudWatch" | Select -ExpandProperty Parameters

CloudWatch로 애플리케이션 로그 전송

다음 명령은 관리형 노드를 구성하고 Windows 애플리케이션 로그를 CloudWatch로 이동합니다.

$cloudWatchCommand = Send-SSMCommand ` -InstanceID instance-ID ` -DocumentName "AWS-ConfigureCloudWatch" ` -Parameter @{'properties'='{"engineConfiguration": {"PollInterval":"00:00:15", "Components":[{"Id":"ApplicationEventLog", "FullName":"AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters":{"LogName":"Application", "Levels":"7"}},{"Id":"CloudWatch", "FullName":"AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch", "Parameters":{"Region":"region", "LogGroup":"my-log-group", "LogStream":"instance-id"}}], "Flows":{"Flows":["ApplicationEventLog,CloudWatch"]}}}'}
관리형 노드당 명령 정보 가져오기

다음 명령은 CommandId를 사용하여 명령 실행 상태를 가져옵니다.

Get-SSMCommandInvocation ` -CommandId $cloudWatchCommand.CommandId ` -Details $true
특정 관리형 노드에 대한 응답 데이터로 명령 정보 가져오기

다음 명령은 Amazon CloudWatch 구성 결과를 반환합니다.

Get-SSMCommandInvocation ` -CommandId $cloudWatchCommand.CommandId ` -Details $true ` -InstanceId instance-ID | Select -ExpandProperty CommandPlugins

AWS-ConfigureCloudWatch 문서를 사용하여 CloudWatch로 성능 카운터 전송

다음 명령 예는 CloudWatch로 성능 카운터를 업로드합니다. 자세한 내용은 Amazon CloudWatch 사용 설명서를 참조하세요.

$cloudWatchMetricsCommand = Send-SSMCommand ` -InstanceID instance-ID ` -DocumentName "AWS-ConfigureCloudWatch" ` -Parameter @{'properties'='{"engineConfiguration": {"PollInterval":"00:00:15", "Components":[{"Id":"PerformanceCounter", "FullName":"AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters":{"CategoryName":"Memory", "CounterName":"Available MBytes", "InstanceName":"", "MetricName":"AvailableMemory", "Unit":"Megabytes","DimensionName":"", "DimensionValue":""}},{"Id":"CloudWatch", "FullName":"AWS.EC2.Windows.CloudWatch.CloudWatch.CloudWatchOutputComponent,AWS.EC2.Windows.CloudWatch", "Parameters":{"AccessKey":"", "SecretKey":"","Region":"region", "NameSpace":"Windows-Default"}}], "Flows":{"Flows":["PerformanceCounter,CloudWatch"]}}}'}

AWS-UpdateEC2Config 문서를 사용하여 EC2Config 업데이트

Run Command 및 AWS-EC2ConfigUpdate 문서를 사용하면 Windows Server 관리형 노드에서 실행 중인 EC2Config 서비스를 업데이트할 수 있습니다. 이 명령은 EC2Config 서비스를 최신 버전 또는 사용자가 지정하는 버전으로 업데이트할 수 있습니다.

설명 및 사용 가능한 파라미터 보기

Get-SSMDocumentDescription ` -Name "AWS-UpdateEC2Config"

파라미터에 대한 자세한 내용 보기

Get-SSMDocumentDescription ` -Name "AWS-UpdateEC2Config" | Select -ExpandProperty Parameters

EC2Config를 최신 버전으로 업데이트

$ec2ConfigCommand = Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-UpdateEC2Config"
특정 관리형 노드에 대한 응답 데이터로 명령 정보 가져오기

이 명령은 이전의 Send-SSMCommand에서 지정된 명령의 출력을 반환합니다.

Get-SSMCommandInvocation ` -CommandId $ec2ConfigCommand.CommandId ` -Details $true ` -InstanceId instance-ID | Select -ExpandProperty CommandPlugins

EC2Config를 특정 버전으로 업데이트

다음 명령은 인스턴스에서 EC2Config를 이전 버전으로 다운그레이드합니다.

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-UpdateEC2Config" ` -Parameter @{'version'='4.9.3519'; 'allowDowngrade'='true'}

AWS-ConfigureWindowsUpdate 문서를 사용하여 Windows 자동 업데이트 설정 또는 해제

Run Command 및 AWS-ConfigureWindowsUpdate 문서를 사용하면 Windows Server 관리형 노드에서 Windows 자동 업데이트를 설정 또는 해제할 수 있습니다. 이 명령은 Windows Update 에이전트를 구성하여 사용자가 지정하는 요일과 시간에 Windows Update를 다운로드 및 설치합니다. 업데이트에 재부팅이 필요한 경우, 업데이트가 설치되고 15분 후 관리형 노드가 자동으로 재부팅됩니다. 이 명령을 사용하여 업데이트 설치가 아닌 확인을 위해 Windows Update를 구성할 수도 있습니다. AWS-ConfigureWindowsUpdate 문서는 Windows Server 2008, 2008 R2, 2012, 2012 R2 및 2016과 호환됩니다.

설명 및 사용 가능한 파라미터 보기

Get-SSMDocumentDescription ` –Name "AWS-ConfigureWindowsUpdate"

파라미터에 대한 자세한 내용 보기

Get-SSMDocumentDescription ` -Name "AWS-ConfigureWindowsUpdate" | Select -ExpandProperty Parameters

Windows 자동 업데이트 설정

다음 명령은 Windows Update를 구성하여 매일 오후 10시에 업데이트를 자동으로 다운로드하고 설치합니다.

$configureWindowsUpdateCommand = Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-ConfigureWindowsUpdate" ` -Parameters @{'updateLevel'='InstallUpdatesAutomatically'; 'scheduledInstallDay'='Daily'; 'scheduledInstallTime'='22:00'}
Windows 자동 업데이트 허용을 위한 명령 상태 보기

다음 명령은 CommandId를 사용하여 Windows 자동 업데이트 허용을 위한 명령 실행 상태를 가져옵니다.

Get-SSMCommandInvocation ` -Details $true ` -CommandId $configureWindowsUpdateCommand.CommandId | Select -ExpandProperty CommandPlugins

Windows 자동 업데이트 해제

다음 명령은 시스템에서 업데이트를 확인하지만 관리형 노드를 자동으로 업데이트하지 않도록 Windows 업데이트 알림 수준을 낮춥니다.

$configureWindowsUpdateCommand = Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-ConfigureWindowsUpdate" ` -Parameters @{'updateLevel'='NeverCheckForUpdates'}
Windows 자동 업데이트 해제를 위한 명령 상태 보기

다음 명령은 CommandId를 사용하여 Windows 자동 업데이트 해제를 위한 명령 실행 상태를 가져옵니다.

Get-SSMCommandInvocation ` -Details $true ` -CommandId $configureWindowsUpdateCommand.CommandId | Select -ExpandProperty CommandPlugins

Run Command를 사용하여 Windows 업데이트 관리

Run Command 및 AWS-InstallWindowsUpdates 문서를 사용하면 Windows Server 관리형 노드에 대한 업데이트를 관리할 수 있습니다. 이 명령은 관리형 노드에 누락된 업데이트를 스캔하거나 설치하고 다음 설치를 선택적으로 재부팅합니다. 또한 사용자 환경에 설치할 업데이트에 대한 적절한 분류 및 심각도 수준을 지정할 수 있습니다.

참고

Run Command를 사용할 때 서버와 관리형 노드를 재부팅하여 스크립트를 호출하는 방법은 명령 실행 시 재부팅 처리 섹션을 참조하세요.

다음 예제에서는 지정된 Windows 업데이트 관리 작업을 수행하는 방법을 보여 줍니다.

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Scan'}

특정 Windows 업데이트 설치

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Install';'IncludeKbs'='kb-ID-1,kb-ID-2,kb-ID-3';'AllowReboot'='True'}

누락된 중요 Windows 업데이트 설치

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Install';'SeverityLevels'='Important';'AllowReboot'='True'}

누락된 Windows 업데이트를 특정 항목을 배제하고 설치

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Install';'ExcludeKbs'='kb-ID-1,kb-ID-2';'AllowReboot'='True'}