AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager 자동화 런북 참조

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

AWSSupport-StartEC2RescueWorkflow

설명

AWSSupport-StartEC2RescueWorkflow 실행서는 인스턴스를 복구하기 위해 생성된 헬퍼 인스턴스에서 제공된 base64로 인코딩된 스크립트(Bash 또는 Powershell)를 실행합니다. 인스턴스의 루트 볼륨은 인스턴스라고도 하는 도우미 인스턴스에 연결되고 마운트됩니다. EC2Rescue 인스턴스가 Windows이면 Powershell 스크립트를 제공합니다. 그렇지 않은 경우 Bash를 사용합니다. 이 실행서는 스크립트에서 사용할 수 있는 환경 변수를 설정합니다. 환경 변수에는 제공된 입력에 대한 정보와 오프라인 루트 볼륨에 대한 정보가 포함됩니다. 오프라인 볼륨이 이미 탑재되었고 사용할 수 있습니다. 예를 들면 원하는 상태 구성 파일을 오프라인 Windows 루트 볼륨에 저장하거나 chroot를 오프라인 Linux 루트 볼륨에 저장하고 오프라인 수정을 수행할 수 있습니다.

이 자동화 실행(콘솔)

중요

Marketplace Amazon 머신 이미지 (AMIs) 에서 생성된 Amazon EC2 인스턴스는 이 자동화에 의해 지원되지 않습니다.

추가 정보

스크립트를 base64로 인코딩하려는 경우 Powershell 또는 Bash를 사용할 수 있습니다. Powershell:

[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes([System.IO.File]::ReadAllText('PATH_TO_FILE')))

Bash:

base64 PATH_TO_FILE

다음은 대상 OS에 따라 오프라인 스크립트에서 사용할 수 있는 환경 변수의 목록입니다.

Windows:

변수 설명 예시 값

$env: _ _ID EC2RESCUE ACCOUNT

{{글로벌: ACCOUNT _ID}}

123456789012

$env: _ EC2RESCUE DATE

{{글로벌:DATE}}

2018-09-07

$env: _ _ EC2RESCUE DATE TIME

{{글로벌: DATE _TIME}}

2018-09-07_18.09.59

$env: _ _ EC2RESCUE EC2RW DIR

EC2Rescue윈도우용 설치 경로

C:\Program 파일\ 아마존\ EC2Rescue

$env: _ _ EC2RESCUE EC2RW DIR

EC2Rescue윈도우용 설치 경로

C:\Program 파일\ 아마존\ EC2Rescue

$env: _ _ID EC2RESCUE EXECUTION

{{자동화: EXECUTION _ID}}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

$env: EC2RESCUE _ _ _ _ OFFLINE CURRENT CONTROL SET

오프라인 Windows 현재 제어 설정 경로

HKLM:\AWSTempSystem\ControlSet001

$env: _ _ EC2RESCUE OFFLINE DRIVE

오프라인 Windows 드라이브 문자

D:\

$env: _ _ _ EC2RESCUE OFFLINE EBS DEVICE

오프라인 루트 볼륨 디바이스 EBS

xvdf

$env: EC2RESCUE _ _ _ OFFLINE KERNEL VER

오프라인 Windows 커널 버전

6.1.7601.24214

$env: _ _OS_ EC2RESCUE OFFLINE ARCHITECTURE

오프라인 Windows 아키텍처

AMD64

$env: _ _OS_ EC2RESCUE OFFLINE CAPTION

오프라인 Windows 캡션

Windows Server 2008 R2 Datacenter

$env: _ _OS_ EC2RESCUE OFFLINE TYPE

오프라인 Windows OS 유형

Server

$env: _ _ _ _ EC2RESCUE OFFLINE PROGRAM FILES DIR

오프라인 Windows 프로그램 파일 디렉터리 경로

D:\Program Files

$env: EC2RESCUE _ _ _ _X86_ OFFLINE PROGRAM FILES DIR

오프라인 Windows 프로그램 파일 x86 디렉터리 경로

D:\Program Files (x86)

$env: _ _ _ EC2RESCUE OFFLINE REGISTRY DIR

오프라인 Windows 레지스트리 디렉터리 경로

D:\Windows\System32\config

$env: _ _ _ EC2RESCUE OFFLINE SYSTEM ROOT

오프라인 Windows 시스템 루트 디렉터리 경로

D:\Windows

$env: _ EC2RESCUE REGION

{{글로벌:REGION}}

us-west-1

$env: _S3_ EC2RESCUE BUCKET

{{S3}} BucketName

amzn-s3-데모 버킷

$env: _S3_ EC2RESCUE PREFIX

{{ S3Prefix }}

myprefix/

$env: EC2RESCUE _ _ SOURCE INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

$스크립트: _ _ _ EC2RESCUE OFFLINE WINDOWS INSTALL

오프라인 Windows 설치 메타데이터

고객 Powershell 객체

Linux:

변수 설명 예시 값

EC2RESCUE_ _아이디 ACCOUNT

{{글로벌: ACCOUNT _ID}}

123456789012

EC2RESCUE_DATE

{{글로벌:DATE}}

2018-09-07

EC2RESCUE_DATE_TIME

{{글로벌: DATE _TIME}}

2018-09-07_18.09.59

EC2RESCUE_EC2RL_DIR

EC2Rescue리눅스용 설치 경로

/usr/local/ec2rl-1.1.3

EC2RESCUE_ EXECUTION _ID

{{자동화: EXECUTION _ID}}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

EC2RESCUE_OFFLINE_DEVICE

오프라인 디바이스 이름

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

오프라인 루트 볼륨 디바이스 EBS

/dev/sdf

EC2RESCUE_OFFLINE_SYSTEM_ROOT

오프라인 루트 볼륨 탑재 지점

/mnt/mount

EC2RESCUE_PYTHON

Python 버전

python2.7

EC2RESCUE_REGION

{{글로벌:REGION}}

us-west-1

EC2RESCUE_S3_ BUCKET

{{S3}} BucketName

amzn-s3-데모 버킷

EC2RESCUE_S3_ PREFIX

{{ S3Prefix }}

myprefix/

EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

문서 유형

자동화

소유자

Amazon

플랫폼

Linux, macOS, Windows

Parameters

  • AMIPrefix

    유형: 문자열

    기본값: AWSSupport-EC2Rescue

    설명: (선택 사항) 백업 이름의 접두사. AMI

  • AutomationAssumeRole

    유형: 문자열

    설명: (선택 사항) Systems Manager Automation이 사용자를 대신하여 작업을 수행할 수 있도록 하는 AWS Identity and Access Management (IAM) 역할의 Amazon 리소스 이름 (). ARN 역할을 지정하지 않은 경우, Systems Manager Automation에서는 이 실행서를 시작하는 사용자의 권한을 사용합니다.

  • CreatePostEC2RescueBackup

    유형: 문자열

    유효한 값: true | false

    기본값: false

    설명: (선택 사항) 스크립트를 실행한 AMI InstanceId 후 시작하기 전에 of를 true 생성하도록 설정합니다. 자동화가 완료된 후에도 AMI 지속됩니다. 에 대한 액세스를 보호하거나 삭제하는 것은 사용자의 책임입니다. AMI

  • CreatePreEC2RescueBackup

    유형: 문자열

    유효한 값: true | false

    기본값: false

    설명: (선택 사항) 스크립트를 InstanceId 실행하기 전에 AMI of를 true 생성하도록 설정합니다. 자동화가 완료된 후에도 AMI 지속됩니다. 에 대한 액세스를 보호하거나 삭제하는 것은 사용자의 책임입니다. AMI

  • EC2RescueInstanceType

    유형: 문자열

    유효한 값: t2.small | t2.medium | t2.large

    기본값: t2.small

    설명: (선택 사항) EC2 인스턴스의 EC2Rescue 인스턴스 유형.

  • InstanceId

    유형: 문자열

    설명: (필수) EC2 인스턴스의 ID. IMPORTANT: AWS Systems Manager 자동화로 이 인스턴스가 중지됩니다. 인스턴스 스토어 볼륨에 저장되어 있는 데이터가 손실됩니다. 탄력적 IP를 사용하지 않는 경우 퍼블릭 IP 주소가 변경됩니다.

  • OfflineScript

    유형: 문자열

    설명: (필수) 헬퍼 인스턴스에 대해 실행할 Base64로 인코딩된 스크립트입니다. 소스 인스턴스가 Linux이고 Windows인 PowerShell 경우 Bash를 사용하십시오.

  • S3 BucketName

    유형: 문자열

    설명: (선택 사항) 문제 해결 로그를 업로드할 계정의 S3 버킷 이름입니다. 버킷 정책에서 수집된 로그에 액세스할 필요가 없는 당사자에 대해 불필요한 읽기/쓰기 권한을 부여하지 않도록 해야 합니다.

  • S3Prefix

    유형: 문자열

    기본값: AWSSupport-EC2Rescue

    설명: (선택 사항) S3 로그의 접두사입니다.

  • SubnetId

    유형: 문자열

    기본값: SelectedInstanceSubnet

    설명: (선택 사항) EC2Rescue 인스턴스의 서브넷 ID. 기본적으로 제공된 인스턴스가 상주하는 동일 서브넷이 사용됩니다. IMPORTANT: 사용자 지정 서브넷을 제공하는 경우 해당 서브넷은 동일한 가용 영역에 있어야 InstanceId 하며 엔드포인트에 대한 액세스를 허용해야 합니다. SSM

  • UniqueId

    유형: 문자열

    기본값: {{자동화: EXECUTION _ID}}

    설명: (선택 사항) 자동화의 고유한 식별자입니다.

필수 권한 IAM

실행서를 성공적으로 사용하려면 AutomationAssumeRole 파라미터에 다음 작업이 필요합니다.

자동화를 실행하는 사용자는 A mazonSSMAutomation Role IAM 관리 정책을 연결하는 것이 좋습니다. 해당 정책 외에도, 사용자에게 다음이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:An-AWS-Account-ID:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::An-AWS-Account-ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::An-AWS-Account-ID:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*" ], "Resource": "*", "Effect": "Allow" } ] }

문서 단계

  1. aws:executeAwsApi - 제공된 인스턴스를 설명합니다.

  2. aws:executeAwsApi - 제공된 인스턴스의 루트 볼륨을 설명합니다.

  3. aws:assertAwsResourceProperty- 루트 볼륨 디바이스 유형이 다음과 같은지 확인하세요. EBS

  4. aws:assertAwsResourceProperty - 루트 볼륨이 암호화되지 않았는지 확인합니다.

  5. aws:assertAwsResourceProperty- 제공된 서브넷 ID를 확인합니다.

    1. (현재 인스턴스 서브넷 사용) - SelectedInstanceSubnet * SubnetId = *인 경우 aws:createStack 실행하여 스택을 배포합니다. EC2Rescue CloudFormation

    2. (새로 생성VPC) - CreateNew VPC * SubnetId = *인 경우 aws:createStack 실행하여 스택을 배포합니다. EC2Rescue CloudFormation

    3. (사용자 지정 서브넷 사용) - 그 밖의 모든 경우:

      aws:assertAwsResourceProperty - 제공된 서브넷이 제공된 인스턴스와 동일한 가용 영역에 있는지 확인합니다.

      aws:createStack- EC2Rescue CloudFormation 스택 배포

  6. aws:invokeLambdaFunction - 추가 입력 검증을 수행합니다.

  7. aws:executeAwsApi- EC2Rescue CloudFormation 스택을 업데이트하여 EC2Rescue 헬퍼 인스턴스를 생성합니다.

  8. aws:waitForAwsResourceProperty- EC2Rescue CloudFormation 스택 업데이트가 완료될 때까지 기다립니다.

  9. aws:executeAwsApi- EC2Rescue CloudFormation 스택 출력을 설명하여 EC2Rescue 헬퍼 인스턴스 ID를 얻습니다.

  10. aws:waitForAwsResourceProperty- EC2Rescue 도우미 인스턴스가 관리형 인스턴스가 될 때까지 기다립니다.

  11. aws:changeInstanceState - 제공된 인스턴스를 중지합니다.

  12. aws:changeInstanceState - 제공된 인스턴스를 중지합니다.

  13. aws:changeInstanceState - 제공된 인스턴스를 강제 중지합니다.

  14. aws:assertAwsResourceProperty- CreatePre EC2RescueBackup 입력 값 확인

    1. (사전 EC2Rescue 백업 생성) - *가 true인 CreatePre EC2RescueBackup 경우*

    2. aws:executeAwsApi- 제공된 인스턴스의 AMI 백업 생성

    3. aws:createTags- AMI 백업에 태그 지정

  15. aws:runCommand- EC2Rescue 헬퍼 인스턴스에 설치 EC2Rescue

  16. aws:executeAwsApi - 제공된 인스턴스의 루트 볼륨을 분리합니다.

  17. aws:assertAwsResourceProperty - 제공된 인스턴스 플랫폼을 확인합니다.

    1. (인스턴스가 Windows인 경우):

      aws:executeAwsApi- 루트 볼륨을 EC2Rescue 헬퍼 인스턴스에 *xvdf*로 연결

      aws:sleep - 10초 동안 대기 상태로 유지합니다.

      aws:runCommand - Powershell에서 제공된 오프라인 스크립트를 실행합니다.

    2. (인스턴스가 Linux인 경우):

      aws:executeAwsApi- 루트 볼륨을*/dev/sdf*로 헬퍼 인스턴스에 연결 EC2Rescue

      aws:sleep - 10초 동안 대기 상태로 유지합니다.

      aws:runCommand - Bash에서 제공된 오프라인 스크립트를 실행합니다.

  18. aws:changeInstanceState- 헬퍼 인스턴스 중지 EC2Rescue

  19. aws:changeInstanceState- EC2Rescue 헬퍼 인스턴스 강제 중지

  20. aws:executeAwsApi- 헬퍼 인스턴스에서 루트 볼륨 분리 EC2Rescue

  21. aws:executeAwsApi - 루트 볼륨을 제공된 인스턴스에 다시 연결합니다.

  22. aws:assertAwsResourceProperty- 입력 값 CreatePost EC2RescueBackup 확인

    1. (사후 EC2Rescue 백업 생성) - *가 true인 CreatePost EC2RescueBackup 경우*

    2. aws:executeAwsApi- 제공된 인스턴스의 AMI 백업 생성

    3. aws:createTags- AMI 백업에 태그 지정

  23. aws:executeAwsApi - 제공된 인스턴스의 루트 볼륨에 대해 초기 종료 시 삭제 상태를 복원합니다.

  24. aws:changeInstanceState - 제공된 인스턴스의 초기 상태(running/stopped)를 복원합니다.

  25. aws:deleteStack- EC2Rescue CloudFormation 스택 삭제

출력

runScriptFor리눅스. 아웃풋

runScriptFor윈도우. 출력

preScriptBackup.ImageId

postScriptBackup.ImageId