연습: AWS CLI에서 Run Command 사용 - AWS 시스템 관리자

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

연습: AWS CLI에서 Run Command 사용

다음 예제 연습에서는 AWS CLI를 사용하여 명령 및 명령 파라미터에 대한 정보를 보는 방법, 명령을 실행하는 방법, 해당 명령의 상태를 보는 방법을 보여줍니다.

중요

신뢰할 수 있는 관리자만 이번 주제에서 언급하는 시스템 관리자 사전 구성 문서를 사용할 수 있도록 허용해야 합니다. 시스템 관리자 문서에서 지정하는 명령 또는 스크립트는 인스턴스에 대한 관리자 권한으로 실행됩니다. 미리 정의된 시스템 관리자 문서(AWS-로 시작하는 모든 문서)를 실행할 권한이 있는 사용자는 해당 인스턴스에 대한 관리자 권한도 보유합니다. 그 밖의 모든 사용자들에 대해서는 제한된 문서를 생성하여 그 문서를 특정 사용자와 공유해야 합니다. 에 대한 액세스 제한에 대한 자세한 내용은 Run Command단원을 시스템 관리자의 관리자가 아닌 IAM 사용자 및 그룹 생성참조하십시오.

1단계: 시작하기

구성할 인스턴스에 대한 관리자 권한이 있거나 에서 적절한 권한을 부여 받아야 합니다.IAM. 이 예에서는 미국 동부(오하이오) 리전(us-east-2)을 사용합니다. Run Command은 Amazon Web Services 일반 참조시스템 관리자 서비스 엔드포인트.에 나열된 AWS 리전에서 현재 사용할 수 있습니다. 자세한 내용은 단원을 참조하십시오.시스템 관리자 사전 조건.

을 사용하여 명령을 실행하려면AWS CLI

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

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

  2. 사용 가능한 모든 문서를 나열합니다.

    이 명령을 실행하면 IAM 권한에 따라 계정에 사용할 수 있는 문서를 모두 나열합니다.

    aws ssm list-documents
  3. 인스턴스가 명령을 수신할 준비가 되었는지 확인합니다.

    다음 명령의 출력은 인스턴스가 온라인 상태인지 여부를 보여 줍니다.

    Linux
    aws ssm describe-instance-information \ --output text --query "InstanceInformationList[*]"
    Windows
    aws ssm describe-instance-information ^ --output text --query "InstanceInformationList[*]"
  4. 다음 명령을 사용하여 특정 인스턴스에 대한 세부 정보를 봅니다.

    참고

    이 연습에서 명령을 실행하려면 인스턴스 및 명령 를 바꿔야 합니다IDs. 명령 ID는 에 대한 응답으로 반환됩니다send-command. 인스턴스 ID는 Amazon EC2 콘솔에서 확인할 수 있습니다.

    Linux
    aws ssm describe-instance-information \ --instance-information-filter-list key=InstanceIds,valueSet=instance-ID
    Windows
    aws ssm describe-instance-information ^ --instance-information-filter-list key=InstanceIds,valueSet=instance-ID

2단계: 셸 스크립트를 실행하여 리소스 세부 정보 보기

Run Command 및 AWS-RunShellScript 문서를 사용하면 로컬로 로그인한 것처럼 EC2 인스턴스에서 명령이나 스크립트를 실행할 수 있습니다.

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

다음 명령을 사용하여 시스템 관리자 JSON 문서에 대한 설명을 봅니다.

Linux
aws ssm describe-document \ --name "AWS-RunShellScript" \ --query "[Document.Name,Document.Description]"
Windows
aws ssm describe-document ^ --name "AWS-RunShellScript" ^ --query "[Document.Name,Document.Description]"

다음 명령을 사용하여 사용 가능한 파라미터 및 해당 파라미터에 대한 세부 정보를 봅니다.

Linux
aws ssm describe-document \ --name "AWS-RunShellScript" \ --query "Document.Parameters[*]"
Windows
aws ssm describe-document ^ --name "AWS-RunShellScript" ^ --query "Document.Parameters[*]"

3단계: AWS-RunShellScript 문서를 사용하여 간단한 명령 전송

다음 명령을 사용하여 인스턴스에 대한 IP 정보를 가져옵니다.

Linux
aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "IP config" \ --parameters commands=ifconfig \ --output text
참고

대상 인스턴스의 운영 체제 유형이 인 경우 명령을 에서 Windows Server 로 ifconfig변경합니다ipconfig.

Windows
aws ssm send-command ^ --instance-ids "instance-ID" ^ --document-name "AWS-RunShellScript" ^ --comment "IP config" ^ --parameters commands=ifconfig ^ --output text
참고

대상 인스턴스의 운영 체제 유형이 인 경우 명령을 에서 Windows Server 로 ifconfig변경합니다ipconfig.

응답 데이터와 함께 명령 정보 가져오기

다음 명령은 이전 명령에서 반환된 명령 ID를 사용하여 명령 실행의 세부 정보와 응답 데이터를 가져옵니다. 명령이 완료되면 시스템에서 응답 데이터가 반환됩니다. 명령 실행에서 "Pending" 또는 "InProgress"가 표시되는 경우, 이 명령을 다시 실행하여 응답 데이터를 확인하십시오.

Linux
aws ssm list-command-invocations \ --command-id $sh-command-id \ --details
Windows
aws ssm list-command-invocations ^ --command-id $sh-command-id ^ --details

사용자 계정 식별

다음 명령은 명령을 실행하는 기본 사용자 계정을 표시합니다.

Linux
sh_command_id=$(aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "Demo run shell script on Linux Instance" \ --parameters commands=whoami \ --output text \ --query "Command.CommandId")

명령 상태 가져오기

다음 명령은 명령 ID를 사용하여 인스턴스에서 명령 실행 상태를 가져옵니다. 이 예에서는 이전 명령에서 반환된 명령 ID를 사용합니다.

Linux
aws ssm list-commands \ --command-id "command-ID"
Windows
aws ssm list-commands ^ --command-id "command-ID"

명령 세부 정보 가져오기

다음 명령은 이전 명령의 명령 ID를 사용하여 인스턴스 단위로 명령 실행 상태를 가져옵니다.

Linux
aws ssm list-command-invocations \ --command-id "command-ID" \ --details
Windows
aws ssm list-command-invocations ^ --command-id "command-ID" ^ --details

특정 인스턴스에 대한 응답 데이터로 명령 정보 가져오기

다음 명령은 특정 인스턴스에 대한 원래 aws ssm send-command 요청을 반환합니다.

Linux
aws ssm list-command-invocations \ --instance-id instance-ID \ --command-id "command-ID" \ --details
Windows
aws ssm list-command-invocations ^ --instance-id instance-ID ^ --command-id "command-ID" ^ --details

Python 버전 표시

다음 명령은 인스턴스에서 실행되는 Python의 버전을 반환합니다.

Linux
sh_command_id=$(aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "Demo run shell script on Linux Instances" \ --parameters commands='python -V' \ --output text --query "Command.CommandId") sh -c 'aws ssm list-command-invocations \ --command-id "$sh_command_id" \ --details \ --query "CommandInvocations[].CommandPlugins[].{Status:Status,Output:Output}"'

4단계: 을 사용하여 간단한 Python 스크립트 실행Run Command

다음 명령은 을 사용하여 간단한 Python “Hello World” 스크립트를 실행합니다.Run Command.

Linux
sh_command_id=$(aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "Demo run shell script on Linux Instances" \ --parameters '{"commands":["#!/usr/bin/python","print \"Hello world from python\""]}' \ --output text \ --query "Command.CommandId") sh -c 'aws ssm list-command-invocations \ --command-id "$sh_command_id" \ --details \ --query "CommandInvocations[].CommandPlugins[].{Status:Status,Output:Output}"'

5단계: 를 사용하여 Bash 스크립트 실행 Run Command

이 단원의 예제는 를 사용하여 다음 bash 스크립트를 실행하는 방법을 보여줍니다Run Command.

Run Command 를 사용하여 원격 위치에 저장된 스크립트를 실행하는 예제는 에서 스크립트 실행Amazon S3 및 단원을 참조하십시오에서 스크립트 실행GitHub.

#!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install chmod +x ./install ./install auto

이 스크립트는 AWS CodeDeployAmazon Linux Red Hat Enterprise Linux의 용 RHEL 인스턴스 생성에 설명된 대로 Amazon EC2 및 CodeDeploy () 인스턴스AWS CodeDeploy User Guide에 에이전트를 설치합니다.

스크립트는 CodeDeploy (us-east-2의 AWS 관리형 Amazon S3 버킷에서 미국 동부(오하이오) 리전 에이전트를 설치합니다aws-codedeploy-us-east-2.

AWS CLI 명령에서 bash 스크립트 실행

다음 샘플은 --parameters 옵션을 사용하여 CLI 명령에 bash 스크립트를 포함하는 방법을 보여줍니다.

Linux
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --targets '[{"Key":"InstanceIds","Values":["instance-id"]}]' \ --parameters '{"commands":["#!/bin/bash","yum -y update","yum install -y ruby","cd /home/ec2-user","curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install","chmod +x ./install","./install auto"]}'

JSON 파일에서 bash 스크립트 실행

다음 예제에서 bash 스크립트의 내용은 JSON 파일에 저장되고, 파일은 --cli-input-json 옵션을 사용하여 명령에 포함됩니다.

명령:

Linux
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --targets "Key=InstanceIds,Values=instance-id" \ --cli-input-json file://installCodeDeployAgent.json
Windows
aws ssm send-command ^ --document-name "AWS-RunShellScript" ^ --targets "Key=InstanceIds,Values=instance-id" ^ --cli-input-json file://installCodeDeployAgent.json

참조된 파일의 내용installCodeDeployAgent.json:

{ "Parameters": { "commands": [ "#!/bin/bash", "yum -y update", "yum install -y ruby", "cd /home/ec2-user", "curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install", "chmod +x ./install", "./install auto" ] } }