연습: 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 세션 설정 구성
- 사용할 수 있는 모든 문서 나열
- PowerShell 명령 또는 스크립트 실행
- AWS-InstallApplication 문서를 사용하여 애플리케이션 설치
- AWS-InstallPowerShellModule JSON 문서를 사용하여 PowerShell 모듈 설치
- AWS-JoinDirectoryServiceDomain JSON 문서를 사용하여 도메인에 관리형 노드 조인
- AWS-ConfigureCloudWatch 문서를 사용하여 Amazon CloudWatch Logs로 Windows 지표 전송
- AWS-UpdateEC2Config 문서를 사용하여 EC2Config 업데이트
- AWS-ConfigureWindowsUpdate 문서를 사용하여 Windows 자동 업데이트 설정 또는 해제
- Run Command를 사용하여 Windows 업데이트 관리
AWS Tools for Windows PowerShell 세션 설정 구성
자격 증명 지정
로컬 컴퓨터에서 Tools for Windows PowerShell을 열고 다음 명령을 실행하여 자격 증명을 지정합니다. 구성할 관리형 노드에 대한 관리자 권한이 있거나 AWS Identity and Access Management(IAM)에서 적절한 권한을 부여받아야 합니다. 자세한 내용은 AWS Systems Manager에 대한 관리형 노드 설정 단원을 참조하십시오.
Set-AWSCredentials –AccessKey
key-name
–SecretKeykey-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')} ` -OutputS3BucketNameamzn-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
')} ` -OutputS3BucketNameamzn-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 업데이트 관리 작업을 수행하는 방법을 보여 줍니다.
누락된 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'}