Run Command에 대한 Amazon CloudWatch Logs 구성 - AWS Systems Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Run Command에 대한 Amazon CloudWatch Logs 구성

AWS Systems Manager의 기능인 Run Command를 사용하여 명령을 전송할 때는 명령 출력을 전송할 위치를 지정할 수 있습니다. 기본적으로 Systems Manager는 명령 출력의 첫 48,000자만 반환합니다. 명령 출력의 전체 세부 정보를 보려면 Amazon Simple Storage Service(Amazon S3) 버킷을 지정할 수 있습니다. 또는 Amazon CloudWatch Logs를 지정할 수 있습니다. CloudWatch Logs를 지정할 경우 Run Command가 모든 명령 출력과 오류 로그를 CloudWatch Logs에 주기적으로 전송합니다. 거의 실시간으로 출력 로그를 모니터링하고, 특정 구문, 값 또는 패턴을 검색하며, 검색을 기반으로 경보를 생성할 수 있습니다.

AWS Identity and Access Management(IAM) 관리형 정책 AmazonSSMManagedInstanceCoreCloudWatchAgentServerPolicy를 사용하도록 관리형 노드를 구성한 경우 CloudWatch Logs로 출력을 보낼 추가 노드 구성이 필요하지 않습니다. 콘솔에서 명령을 전송하는 경우 이 옵션을 선택합니다. 혹은 AWS Command Line Interface (AWS CLI), AWS Tools for Windows PowerShell 또는 API 작업을 사용하는 경우 cloud-watch-output-config 섹션과 CloudWatchOutputEnabled 파라미터를 추가합니다. cloud-watch-output-config 섹션과 CloudWatchOutputEnabled 파라미터에 대해서는 나중에 이 주제 안에서 자세히 설명합니다.

EC2 인스턴스용 인스턴스 프로파일에 정책 추가에 대한 자세한 내용은 Systems Manager에 대한 인스턴스 권한 구성을 참조하세요. 관리형 노드로 사용할 계획인 온프레미스 서버 및 가상 머신에 대한 서비스 역할에 정책을 추가하는 것에 대한 정보는 하이브리드 환경용 IAM 서비스 역할 생성을 참조하세요.

노드에 사용자 정의 정책을 사용하는 경우라면 Systems Manager가 CloudWatch Logs에 출력 및 로그를 전송하는 것을 허용하도록 각 노드의 정책을 업데이트합니다. 사용자 지정 정책에 다음 정책 객체를 추가하십시오. IAM 정책 업데이트에 대한 자세한 내용은 IAM User GuideEditing IAM policies를 참조하세요.

{ "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "*" }, { "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource":"arn:aws:logs:*:*:log-group:/aws/ssm/*" },

명령을 전송할 때 CloudWatch Logs 지정

AWS Management Console에서 명령을 보낼 때 CloudWatch Logs를 출력으로 지정하려면 [출력 옵션(Output options)] 섹션에서 [CloudWatch 출력(CloudWatch Output)]을 선택합니다. 선택에 따라 명령 출력을 전송할 CloudWatch Logs 그룹의 이름을 지정할 수 있습니다. 그룹 이름을 지정하지 않으면 Systems Manager에서 로그 그룹을 자동으로 생성합니다. 로그 그룹은 /aws/ssm/SystemsManagerDocumentName 명명 형식을 사용합니다.

AWS CLI를 사용하여 명령을 실행하는 경우 명령에서 cloud-watch-output-config 섹션을 지정합니다. 이 섹션에서 CloudWatchOutputEnabled 파라미터를 지정할 수 있고, 선택에 따라 CloudWatchLogGroupName 파라미터도 지정할 수 있습니다. 의 예는 다음과 같습니다.

Linux & macOS
aws ssm send-command \ --instance-ids "instance ID" \ --document-name "AWS-RunShellScript" \ --parameters "commands=echo helloWorld" \ --cloud-watch-output-config "CloudWatchOutputEnabled=true,CloudWatchLogGroupName=log group name"
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --parameters commands=["echo helloWorld"] ^ --targets "Key=instanceids,Values=an instance ID” ^ --cloud-watch-output-config '{"CloudWatchLogGroupName":"log group name","CloudWatchOutputEnabled":true}'

CloudWatch Logs에서 명령 출력 보기

명령 실행을 시작하자마자 Systems Manager는 거의 실시간으로 CloudWatch Logs로 출력을 보냅니다. CloudWatch Logs에서 출력은 다음 형식을 사용합니다.

CommandID/InstanceID/PluginID/stdout

CommandID/InstanceID/PluginID/stderr

30초마다 혹은 버퍼가 200KB를 초과할 때, 어느 것에든 먼저 도달하면 실행에서 출력을 업로드합니다.

참고

출력 데이터를 사용할 수 있을 때에만 로그 스트림이 생성됩니다. 예를 들어 실행에 대한 오류 데이터가 없는 경우 stderr 스트림이 생성되지 않습니다.

다음은 CloudWatch Logs에 표시되는 명령 출력의 예입니다.

Group - /aws/ssm/AWS-RunShellScript
Streams – 
1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stdout
24/1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stderr