AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager 自動化 Runbook 參考

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWSSupport-StartEC2RescueWorkflow

Description

運行手AWSSupport-StartEC2RescueWorkflow冊運行提供的 base64 編碼腳本(Bash 或 Powershell)上創建的幫助程序實例來營救您的實例。執行個體的根磁碟區會連接並掛接至輔助程式執行個體,也稱為EC2Rescue執行個體。如果您的執行個體是 Windows,請提供 Powershell 指令碼。否則,請使用 Bash。runbook 設置一些環境變量,你可以在你的腳本中使用。環境變數包含您提供之輸入的資訊,以及離線根磁碟區的資訊。離線磁碟區已掛載並可使用。例如,您可以將 Desired State Configuration 檔案儲存至離線的 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

以下為您可在離線指令碼中使用的環境變數清單 (取決於目標作業系統)

Windows:

變數 描述 範例值

$ 環境:EC2RESCUE_ ID ACCOUNT

{{全球:ACCOUNT_ID}}

123456789012

$ 環境:_ EC2RESCUE DATE

{{全球:DATE}}

2018-09-07

$ 環境:EC2RESCUE_ _ DATE TIME

{{全球:DATE_TIME}}

2018-09-07_18.09.59

$ 環境:EC2RESCUE_ _ EC2RW DIR

EC2Rescue適用於視窗安裝路徑

C:\Program 文件\ Amazon\ EC2Rescue

$ 環境:EC2RESCUE_ _ EC2RW DIR

EC2Rescue適用於視窗安裝路徑

C:\Program 文件\ Amazon\ EC2Rescue

$ 環境:EC2RESCUE_ ID EXECUTION

{{自動化:EXECUTION_ID}}

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

$ 環境:EC2RESCUE_ _ OFFLINE _ CURRENT _ CONTROL SET

離線 Windows 目前控制集路徑

HKLM:\AWSTempSystem\ControlSet001

$ 環境:EC2RESCUE_ _ OFFLINE DRIVE

離線 Windows 磁碟機字母

D:\

$ 環境:EC2RESCUE_ _ OFFLINE _ EBS DEVICE

離線根磁碟區EBS裝置

xvdf

$ 環境:EC2RESCUE_ _ OFFLINE _ KERNEL VER

離線 Windows 核心版本

6.1.7601.24214

$ 環境:EC2RESCUE_ 作業系統 _ OFFLINE ARCHITECTURE

離線 Windows 架構

AMD64

$ 環境:EC2RESCUE_ 作業系統 _ OFFLINE CAPTION

離線 Windows 字幕

Windows Server 2008 R2 Datacenter

$ 環境:EC2RESCUE_ 作業系統 _ OFFLINE TYPE

離線 Windows 作業系統類型

Server

$ 環境:EC2RESCUE_ _ OFFLINE _ PROGRAM _ FILES DIR

離線 Windows 程式檔案目錄路徑

D:\Program Files

$ 環境:EC2RESCUE_ _ _ OFFLINE _ X 86 PROGRAM _ FILES DIR

離線 Windows 程式檔案 x86 目錄路徑

D:\Program Files (x86)

$ 環境:EC2RESCUE_ _ OFFLINE _ REGISTRY DIR

離線 Windows 登錄檔目錄路徑

D:\Windows\System32\config

$ 環境:EC2RESCUE_ _ OFFLINE _ SYSTEM ROOT

離線 Windows 系統根目錄路徑

D:\Windows

$ 環境:_ EC2RESCUE REGION

{{全球:REGION}}

us-west-1

$ 環境:EC2RESCUE_S3 _ BUCKET

{{S3BucketName }}

安贊-S3-演示桶

$ 環境:EC2RESCUE_S3 _ PREFIX

{{ S3Prefix }}

myprefix/

$ 環境:EC2RESCUE_ _ SOURCE INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

$ 腳本:EC2RESCUE_ _ OFFLINE _ WINDOWS INSTALL

離線 Windows 安裝中繼資料

客戶 Powershell 物件

Linux︰

變數 描述 範例值

EC2RESCUEACCOUNT_ 身份證

{{全球:ACCOUNT_ID}}

123456789012

EC2RESCUE_DATE

{{全球:DATE}}

2018-09-07

EC2RESCUE_DATE_TIME

{{全球:DATE_TIME}}

2018-09-07_18.09.59

EC2RESCUE_EC2RL_DIR

EC2Rescue適用於 Linux 安裝路徑

/usr/local/ec2rl-1.1.3

EC2RESCUEEXECUTION_ 身份證

{{自動化: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

{{S3BucketName }}

安贊-S3-演示桶

EC2RESCUE_S3 PREFIX

{{ S3Prefix }}

myprefix/

EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

文件類型

 自動化

擁有者

Amazon

平台

Linux,macOS, Windows

參數

  • AMIPrefix

    類型:字串

    預設:AWSSupport-EC2Rescue

    說明:(選擇性) 備份AMI名稱的前置詞。

  • AutomationAssumeRole

    類型:字串

    描述:(選用) 允許 Systems Manager 自動化代表您執行動作的 AWS Identity and Access Management (IAM) 角色的 Amazon 資源名稱 ()。ARN如果未指定角色,Systems Manager 自動化會使用啟動此 runbook 的使用者的權限。

  • CreatePostEC2RescueBackup

    類型:字串

    有效值:true | false

    預設:false

    說明:(選擇性) 將其設定true為在執行指令碼AMI之 InstanceId後建立的,然後再啟動指令碼。自動化完成後,AMI將持續存在。您有責任安全地存取AMI或刪除它。

  • CreatePreEC2RescueBackup

    類型:字串

    有效值:true | false

    預設:false

    說明:(選擇性) 將其設定true為 InstanceId在執行指令碼AMI之前建立的。自動化完成後,AMI將持續存在。您有責任安全地存取AMI或刪除它。

  • EC2RescueInstanceType

    類型:字串

    有效值:2. 小 | 2. 中等

    預設: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參數需要執行下列動作,才能成功使用 Runbook。

建議執行自動化操作的使用者附加 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. (使用當前實例子網)-如果 * SubnetId = SelectedInstanceSubnet * 則運行aws:createStack以部署EC2Rescue CloudFormation堆棧

    2. (創建新的VPC)-如果 * SubnetId = CreateNew VPC * 則運行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-檢查 CreatePreEC2RescueBackup輸入值

    1. (創建預EC2Rescue備份)-如果 * 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-以 *xvdf* 形式將根磁碟區連接至EC2Rescue輔助程式執行個體

      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-檢查 CreatePostEC2RescueBackup輸入值

    1. (創建後EC2Rescue備份)-如果 * CreatePost EC2RescueBackup = 真 *

    2. aws:executeAwsApi-創建提供實例的AMI備份

    3. aws:createTags-標記AMI備份

  23. aws:executeAwsApi-針對所提供執行個體的根磁碟區,還原終止狀態的初始刪除

  24. aws:changeInstanceState-恢復所提供實例的初始狀態(運行/停止)

  25. aws:deleteStack-刪除EC2Rescue CloudFormation 堆疊

輸出

runScriptFor輸出

runScriptFor視窗輸出

preScriptBackup.ImageId

postScriptBackup.ImageId