本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 目前控制集路徑 |
|
$ 環境: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" } ] }
文件步驟
-
aws:executeAwsApi
-描述提供的實例 -
aws:executeAwsApi
-描述提供的執行個體的根磁碟區 -
aws:assertAwsResourceProperty
-檢查根磁碟區裝置類型是否為 EBS -
aws:assertAwsResourceProperty
-檢查根磁碟區是否未加密 -
aws:assertAwsResourceProperty
-檢查提供子網 ID-
(使用當前實例子網)-如果 * SubnetId = SelectedInstanceSubnet * 則運行
aws:createStack
以部署EC2Rescue CloudFormation堆棧 -
(創建新的VPC)-如果 * SubnetId = CreateNew VPC * 則運行
aws:createStack
以部署EC2Rescue CloudFormation堆棧 -
(使用自訂子網路) - 所有其他情況:
aws:assertAwsResourceProperty
-檢查提供的子網路是否與提供的執行個體位於相同的可用區域aws:createStack
-部署EC2Rescue CloudFormation堆疊
-
-
aws:invokeLambdaFunction
-執行其他輸入驗證 -
aws:executeAwsApi
-更新EC2Rescue CloudFormation 堆疊以建立EC2Rescue輔助程式執行個體 -
aws:waitForAwsResourceProperty
-等待EC2Rescue CloudFormation 堆疊更新完成 -
aws:executeAwsApi
-描述EC2Rescue CloudFormation 堆疊輸出以取得EC2Rescue協助程式執行個體 ID -
aws:waitForAwsResourceProperty
-等待EC2Rescue協助程式執行個體成為代管執行個體 -
aws:changeInstanceState
-停止提供的實例 -
aws:changeInstanceState
-停止提供的實例 -
aws:changeInstanceState
-強制停止提供的實例 -
aws:assertAwsResourceProperty
-檢查 CreatePreEC2RescueBackup輸入值-
(創建預EC2Rescue備份)-如果 * CreatePre EC2RescueBackup = 真 *
-
aws:executeAwsApi
-創建提供實例的AMI備份 -
aws:createTags
-標記AMI備份
-
-
aws:runCommand
-在EC2Rescue輔助實例EC2Rescue上安裝 -
aws:executeAwsApi
-將根磁碟區從提供的執行個體分離 -
aws:assertAwsResourceProperty
-檢查提供的實例平台-
(執行個體為 Windows):
aws:executeAwsApi
-以 *xvdf* 形式將根磁碟區連接至EC2Rescue輔助程式執行個體aws:sleep
-睡眠 10 秒鐘aws:runCommand
-在 PowerShell 中運行提供的離線腳本 -
(執行個體為 Linux):
aws:executeAwsApi
-以 */dev/sdf* 形式將根磁碟區連接至EC2Rescue輔助程式執行個體aws:sleep
-睡眠 10 秒鐘aws:runCommand
-在 Bash 中運行提供的離線腳本
-
-
aws:changeInstanceState
-停止EC2Rescue協助程式執行個體 -
aws:changeInstanceState
-強制停止EC2Rescue協助程式執行個體 -
aws:executeAwsApi
-從EC2Rescue輔助程式執行個體中分離根磁碟區 -
aws:executeAwsApi
-將根磁碟區連接回提供的執行個體 -
aws:assertAwsResourceProperty
-檢查 CreatePostEC2RescueBackup輸入值-
(創建後EC2Rescue備份)-如果 * CreatePost EC2RescueBackup = 真 *
-
aws:executeAwsApi
-創建提供實例的AMI備份 -
aws:createTags
-標記AMI備份
-
-
aws:executeAwsApi
-針對所提供執行個體的根磁碟區,還原終止狀態的初始刪除 -
aws:changeInstanceState
-恢復所提供實例的初始狀態(運行/停止) -
aws:deleteStack
-刪除EC2Rescue CloudFormation 堆疊
輸出
runScriptFor輸出
runScriptFor視窗輸出
preScriptBackup.ImageId
postScriptBackup.ImageId