연결할 수 없는 인스턴스에서 EC2Rescue 도구 실행 - AWS Systems Manager

연결할 수 없는 인스턴스에서 EC2Rescue 도구 실행

EC2Rescue를 사용하면 Linux 및 Windows Server용 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 대한 문제를 진단하고 해결할 수 있습니다. Linux Server용 EC2Rescue 사용Windows Server용 EC2Rescue 사용에서 설명한 대로 이 도구를 직접 실행할 수 있습니다. 또는 Systems Manager Automation 및 AWSSupport-ExecuteEC2Rescue 실행서를 사용하여 도구를 자동으로 실행할 수 있습니다. Automation은 AWS Systems Manager의 기능입니다. AWSSupport-ExecuteEC2Rescue 실행서는 EC2Rescue를 사용하는 데 일반적으로 필요한 단계를 자동화하는 Systems Manager 작업, AWS CloudFormation 작업 및 Lambda 함수를 조합하여 수행하도록 설계되었습니다.

AWSSupport-ExecuteEC2Rescue 실행서를 사용하여 다양한 유형의 운영 체제(OS) 문제를 해결하고, 수정할 수도 있습니다. 루트 볼륨이 암호화된 인스턴스는 지원되지 않습니다. 전체 목록은 다음 항목을 참조하십시오.

Windows: 명령줄에서 EC2Rescue for Windows Server 사용복구 작업을 참조하세요.

LinuxmacOS: 일부 Linux용 EC2Rescue 모듈은 문제를 감지하여 수정을 시도합니다. 자세한 내용은 GitHub에서 각 모델에 대한 aws-ec2rescue-linux 설명서를 참조하세요.

작동 방식

Automation과 AWSSupport-ExecuteEC2Rescue 실행서를 사용한 인스턴스 문제 해결은 다음과 같이 수행됩니다.

  • 연결할 수 없는 인스턴스의 ID를 지정하고 자동화를 시작합니다.

  • 시스템에서 임시 VPC를 만든 다음, 일련의 Lambda 함수를 실행하여 VPC를 구성합니다.

  • 시스템에서 원본 인스턴스와 동일한 가용 영역에 있는 임시 VPC의 서브넷을 식별합니다.

  • 시스템에서 SSM이 활성화된 임시 헬퍼 인스턴스를 시작합니다.

  • 시스템에서 원본 인스턴스를 중지한 후 백업을 만듭니다. 그런 다음 헬퍼 인스턴스에 원본 루트 볼륨을 연결합니다.

  • 시스템에서 Run Command를 사용하여 헬퍼 인스턴스에서 EC2Rescue를 실행합니다. EC2Rescue는 연결된 원본 루트 볼륨의 문제를 확인하고 수정하려 시도합니다. 마치면 EC2Rescue가 원본 인스턴스에 루트 볼륨을 다시 연결합니다.

  • 시스템에서 원본 인스턴스를 다시 시작하고, 임시 인스턴스를 종료합니다. 또한 자동화가 시작될 때 생성된 Lambda 함수와 임시 VPC를 종료합니다.

시작하기 전 준비 사항

다음 자동화를 실행하기 전에 다음을 수행합니다.

  • 연결할 수 없는 인스턴스의 인스턴스 ID를 복사합니다. 절차에서 이 ID를 지정할 것입니다.

  • 원할 경우, 연결할 수 없는 인스턴스와 동일한 가용 영역에 있는 서브넷 ID를 수집할 수도 있습니다. 이 서브넷에 EC2Rescue 인스턴스가 생성됩니다. 서브넷을 지정하지 않으면 Automation 프로세스에 따라 AWS 계정에 새로운 임시 VPC가 생성됩니다. AWS 계정에 사용 가능한 VPC가 하나 이상 있는지 확인합니다. 기본적으로 리전 하나에 VPC를 다섯 개 만들 수 있습니다. 리전에 이미 VPC를 다섯 개 만든 경우, 자동화가 인스턴스를 변경하지 않고 실패합니다. Amazon VPC 할당량에 대한 자세한 내용은 Amazon VPC 사용 설명서VPC 및 서브넷을 참조하세요.

  • 필요에 따라 Automation의 AWS Identity and Access Management(IAM) 역할을 생성하고 지정할 수 있습니다. 이 역할을 지정하지 않으면 자동화가 자동화를 실행한 사용자의 맥락에서 실행됩니다.

AWSSupport-EC2Rescue에 인스턴스에서 작업을 수행할 권한 부여

EC2Rescue는 자동화 중에 인스턴스에서 일련의 작업을 수행할 권한이 필요합니다. 이러한 작업은 AWS Lambda, IAM 및 Amazon EC2 서비스를 호출하여 인스턴스 관련 문제를 안전하게 해결하려고 시도합니다. AWS 계정 및/또는 VPC에서 관리자 수준 권한이 있는 경우 이 섹션의 설명과 같이 권한을 구성하지 않고 자동화를 실행할 수 있습니다. 관리자 수준 권한이 없는 경우, 사용자 또는 관리자가 다음 옵션 중 하나를 사용하여 권한을 구성해야 합니다.

IAM 정책을 사용하여 권한 부여

사용자, 그룹 또는 역할에 다음 IAM 정책을 인라인 정책으로 연결하거나, 새 IAM 관리형 정책을 생성하고 이를 사용자, 그룹 또는 역할에 연결할 수 있습니다. 사용자, 그룹 또는 역할에 인라인 정책 추가에 대한 자세한 내용은 인라인 정책 작업을 참조하세요. 새 관리형 정책 만들기에 대한 자세한 내용은 관리형 정책 작업을 참조하십시오.

참고

새 IAM 관리형 정책을 생성하는 경우 인스턴스가 Systems Manager API와 통신할 수 있도록 AmazonSSMAutomationRole 관리형 정책도 여기에 연결해야 합니다.

AWSSupport-EC2Rescue의 IAM 정책

계정 ID를 자신의 정보로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*: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::account ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::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" } ] }

AWS CloudFormation 템플릿을 사용하여 권한 부여

AWS CloudFormation은 미리 구성된 템플릿을 사용하여 IAM 역할과 정책을 만드는 과정을 자동화합니다. 다음 절차에 따라 AWS CloudFormation을 사용하여 EC2Rescue Automation에 필요한 IAM 역할과 정책을 생성합니다.

EC2Rescue에 필요한 IAM 역할과 정책을 생성하려면
  1. AWSSupport-EC2RescueRole.zip을 다운로드하여 로컬 시스템의 디렉터리에 AWSSupport-EC2RescueRole.json 파일의 압축을 풉니다.

  2. AWS 계정가 특수 파티션인 경우 템플릿을 편집하여 ARN 값을 파티션 값으로 변경합니다.

    예를 들어 중국 리전의 경우 arn:aws의 모든 사례를 arn:aws-cn으로 변경합니다.

  3. AWS Management Console에 로그인하여 https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 엽니다.

  4. 스택 생성(Create stack), 새 리소스 사용(표준)(With new resources (standard))를 선택합니다.

  5. 스택 생성 페이지에서 Prerequisite - Prepare template(사전 조건 - 템플릿 준비)에 대해 Template is ready(템플릿 준비됨)를 선택합니다.

  6. 템플릿 지정에서 템플릿 파일 업로드를 선택합니다.

  7. 파일 선택을 선택한 다음 압축을 푼 디렉터리에서 AWSSupport-EC2RescueRole.json 파일을 찾아 선택합니다.

  8. Next(다음)를 선택합니다.

  9. Specify stack details(스택 세부 정보 지정) 페이지의 스택 이름 필드에 이 스택을 식별할 이름을 입력하고 다음을 선택합니다.

  10. (선택 사항) 태그 영역에서 하나 이상의 태그 키 이름/값 쌍을 스택에 적용합니다.

    태그는 리소스에 할당하는 선택적 메타데이터입니다. 태그를 사용하면 용도, 소유자 또는 환경을 기준으로 하는 등 리소스를 다양한 방식으로 분류할 수 있습니다. 예를 들어, 스택에 태그를 지정하여 실행되는 작업 유형, 대상 유형이나 기타 관련 리소스, 해당 스택이 실행되는 환경을 식별할 수 있습니다.

  11. 다음(Next)을 선택합니다.

  12. 검토 페이지에서 스택 세부 정보를 검토하고 아래로 스크롤하여 AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 승인합니다 옵션을 선택합니다.

  13. 스택 생성을 선택합니다.

    AWS CloudFormation에 몇 분간 CREATE_IN_PROGRESS 상태가 표시됩니다. 스택이 생성된 후 상태가 CREATE_COMPLETE로 바뀝니다. 새로 고침 아이콘을 선택하여 생성 프로세스의 상태를 확인할 수도 있습니다.

  14. 스택 목록에서 방금 생성한 스택 옆의 옵션 버튼을 선택한 후 출력 탭을 선택합니다.

  15. 을 기록해 둡니다. 이는 AssumeRole의 ARN입니다. 자동화 실행 단원에 나온 절차에서 자동화를 실행할 때 이 ARN을 지정합니다.

자동화 실행

중요

다음 자동화는 연결할 수 없는 인스턴스를 중지합니다. 인스턴스가 중지되면 연결된 인스턴스 스토어 볼륨(있는 경우)의 데이터가 손실될 수 있습니다. 또한 인스턴스가 중지되면 연결된 탄력적 IP가 없는 경우 퍼블릭 IP가 변경될 수도 있습니다.

AWSSupport-ExecuteEC2Rescue Automation을 실행하려면
  1. AWS Systems Manager 콘솔(https://console.aws.amazon.com/systems-manager/)을 엽니다.

  2. 왼쪽 탐색 창에서 Automation을 선택합니다.

  3. 자동화 실행(Execute automation)을 선택합니다.

  4. 자동화 문서 섹션의 목록에서 Owned by Amazon(Amazon 소유)을 선택합니다.

  5. 실행서 목록에서 [AWSSupport-ExecuteEC2Rescue]의 카드에 있는 버튼을 선택하고 [다음(Next)]을 선택합니다.

  6. Execute automation document(자동화 문서 실행) 페이지에서 Simple execution(단순 실행)을 선택합니다.

  7. 문서 세부 정보 섹션에서 문서 버전이 가장 높은 기본 버전으로 설정되어 있는지 확인합니다. 예를 들어, $DEFAULT 또는 3(기본값)입니다.

  8. 입력 파라미터 섹션에서 다음 파라미터를 지정합니다.

    1. UnreachableInstanceId에서 연결할 수 없는 인스턴스의 ID를 지정합니다.

    2. (선택 사항) EC2RescueInstanceType에서 EC2Rescue 인스턴스의 인스턴스 유형을 지정합니다. 기본 인스턴스 유형은 t2.medium입니다.

    3. AutomationAssumeRole의 경우 이 주제의 앞부분에서 설명한 AWS CloudFormation 절차를 사용하여 이 자동화에 대한 역할을 생성한 경우 AWS CloudFormation 콘솔에서 생성한 AssumeRole의 ARN을 선택합니다.

    4. (선택 사항) LogDestination에서 인스턴스의 문제를 해결하는 동안 운영 체제 수준 로그를 수집하려면 S3 버킷을 지정합니다. 지정된 버킷으로 로그가 자동으로 업로드됩니다.

    5. SubnetId에서, 연결할 수 없는 인스턴스와 동일한 가용 영역에 있는 기존 VPC의 서브넷을 지정합니다. 기본적으로 Systems Manager는 새로운 VPC를 생성하지만, 원하는 사용자는 기존 VPC의 서브넷을 지정할 수 있습니다.

      참고

      버킷이나 서브넷 ID를 지정하는 옵션이 표시되지 않는 경우 실행서의 최신 기본 버전을 사용하고 있는지 확인합니다.

  9. (옵션) [태그(Tags)] 영역에서 하나 이상의 태그 키 이름/값 페어(예: Key=Purpose,Value=EC2Rescue)를 적용하여 자동화를 식별할 수 있습니다.

  10. 실행을 선택합니다.

실행서가 자동화의 일부로 백업 AMI를 생성합니다. 자동화에 의해 생성된 다른 모든 리소스는 자동으로 삭제되지만, 이 AMI는 계정에 계속 유지됩니다. 다음 명명 규칙을 사용하여 AMI 이름이 지정됩니다.

백업 AMI: AWSSupport-EC2Rescue:UnreachableInstanceId

Automation 실행 ID를 검색하여 Amazon EC2 콘솔에 있는 이 AMI를 찾을 수 있습니다.