使用AWS系統(tǒng)管理器運行命令功能

1. 前言

Run Command提供了一個任務(wù)批量下發(fā)的通道婴洼,我們可以通過AWS系統(tǒng)管理器的運行命令功能批量下發(fā)任務(wù)到EC2實例或托管在AWS上的主機吭服。本文主要記錄了使用該運行命令功能,并通過查看虛擬機上的日志跟蹤任務(wù)執(zhí)行的過程心褐。

AWS關(guān)于System Manager Run Command的介紹如下:

借助 AWS Systems Manager Run Command,您可以通過安全方式遠程管理托管實例的配置秒拔。托管實例 是混合環(huán)境中已經(jīng)針對 Systems Manager 配置的任意 Amazon EC2 實例或本地計算機婿脸。利用 Run Command粱胜,您可以自動完成常用管理任務(wù)以及大規(guī)模執(zhí)行臨時配置更改。您可以從 AWS 控制臺狐树、AWS Command Line Interface焙压、AWS Tools for Windows PowerShell或 AWS 開發(fā)工具包使用 Run Command。Run Command 不另外收費抑钟。
管理員使用 Run Command 可以在其托管實例上執(zhí)行以下類型的任務(wù):安裝或引導(dǎo)應(yīng)用程序涯曲,構(gòu)建部署管道,從 Auto Scaling 組終止實例時捕獲日志文件在塔,以及將實例加入 Windows 域等等幻件。

2. 前置條件

  1. 在AWS上創(chuàng)建好一臺實驗用的虛擬機
  2. 創(chuàng)建一個角色,授予AmazonEC2RoleforSSM權(quán)限蛔溃,并將該角色綁定到虛擬機上绰沥,參考:SSM權(quán)限配置
  3. 在虛擬機上安裝SSM代理,參考:安裝和配置 SSM 代理

3. 使用過程記錄

3.1 創(chuàng)建命令文檔

AWS Systems Manager 文檔(SSM 文檔)定義 Systems Manager 對托管實例執(zhí)行的操作贺待。Systems Manager 包括十多個預(yù)先配置的文檔徽曲,可以通過指定在運行時的參數(shù)進行使用。文檔使用 JavaScript Object Notation (JSON) 或 YAML麸塞,并包括您指定的步驟和參數(shù)秃臣。

EC2 System Manager中創(chuàng)建文檔時,有三種類型的文檔


三種SSM文檔類型
  • 命令文檔:結(jié)合Run Command使用
  • 策略文檔:結(jié)合State Manager使用
  • 自動化文檔:結(jié)合Automation使用

為了試用Run Command功能哪工,先創(chuàng)建一個最簡單的命令文檔——執(zhí)行shell命令hostname獲取主機名稱奥此。文檔內(nèi)容,參考SSM文檔語法

---
schemaVersion: '2.2'
description: Sample document
mainSteps:
- action: aws:runPowerShellScript
  name: runPowerShellScript
  inputs:
    runCommand:
    - hostname
創(chuàng)建文檔-選擇命令文檔類型

創(chuàng)建文檔-填寫文檔內(nèi)容

完成創(chuàng)建

3.2 運行命令

3.2.1 配置命令文檔

選擇命令文檔

注意:如果命令文檔類型只支持windows雁比,那么接下來選擇EC2實例時稚虎,非Windows類型的EC2實例會被過濾掉。


填寫命令文檔參數(shù)

3.2.2 配置目標

選擇目標托管實例

命令超時時間章贞、輸出祥绞、通知等保留默認配置非洲。在表單的末尾會根據(jù)當前配置生成與之對應(yīng)的命令行代碼:


命令行代碼
aws ssm send-command --document-name "Gather-OS-Information" --document-version "1" --targets "Key=instanceids,Values=i-0fb5527d1d10e85cd" --parameters '{"Message":["Hello World"]}' --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region us-east-2

3.2.3 運行結(jié)果

第一次嘗試運行命令失敗

運行命令失敗

查看命令執(zhí)行日志
命令執(zhí)行日志

為什么會使用pwsh這個命令呢鸭限,原來是因為創(chuàng)建命令文檔時,文檔內(nèi)容中指定了插件aws:runPowerShellScript两踏,這個插件是針對Windows環(huán)境的败京,在Linux環(huán)境應(yīng)該使用aws:runShellScript。SSM提供的文檔插件參考:SSM文檔插件

創(chuàng)建新版本的命令文檔梦染,修改文檔插件為aws:runShellScript后再嘗試運行命令赡麦,命令運行成功


命令運行成功

查看命令運行結(jié)果


命令運行結(jié)果

4. 日志采集

2019-03-04 09:56:03 INFO [MessagingDeliveryService] [messageID=aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd] Validating SSM parameters
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] document: 67278003-19bf-4e28-8c80-eea12a2f2910 worker started
2019-03-04 09:56:03 INFO [MessagingDeliveryService] Sending reply {
  "additionalInfo": {
    "agent": {
      "lang": "en-US",
      "name": "amazon-ssm-agent",
      "os": "",
      "osver": "1",
      "ver": ""
    },
    "dateTime": "2019-03-04T09:56:03.969Z",
    "runId": "",
    "runtimeStatusCounts": null
  },
  "documentStatus": "InProgress",
  "documentTraceOutput": "",
  "runtimeStatus": null
}
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] channel: 67278003-19bf-4e28-8c80-eea12a2f2910 found
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] inter process communication started
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] received plugin config message
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] {"DocumentInformation":{"DocumentID":"67278003-19bf-4e28-8c80-eea12a2f2910","CommandID":"67278003-19bf-4e28-8c80-eea12a2f2910","AssociationID":"","InstanceID":"i-0fb5527d1d10e85cd","MessageID":"aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd","RunID":"2019-03-04T09-56-03.952Z","CreatedDate":"2019-03-04T09:56:03.873Z","DocumentName":"Gather-OS-Information","DocumentVersion":"","DocumentStatus":"InProgress","RunCount":0,"ProcInfo":{"Pid":10539,"StartTime":"2019-03-04T09:56:04.053432773Z"},"ClientId":""},"DocumentType":"SendCommand","SchemaVersion":"2.2","InstancePluginsInformation":[{"Configuration":{"Settings":null,"Properties":{"runCommand":["hostname"]},"OutputS3KeyPrefix":"67278003-19bf-4e28-8c80-eea12a2f2910/i-0fb5527d1d10e85cd/awsrunShellScript","OutputS3BucketName":"","S3EncryptionEnabled":false,"CloudWatchLogGroup":"","CloudWatchEncryptionEnabled":false,"OrchestrationDirectory":"/var/lib/amazon/ssm/i-0fb5527d1d10e85cd/document/orchestration/67278003-19bf-4e28-8c80-eea12a2f2910/GetHostName","MessageId":"aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd","BookKeepingFileName":"67278003-19bf-4e28-8c80-eea12a2f2910","PluginName":"aws:runShellScript","PluginID":"GetHostName","DefaultWorkingDirectory":"","Preconditions":null,"IsPreconditionEnabled":true,"CurrentAssociations":null,"SessionId":"","ClientId":""},"Name":"aws:runShellScript","Result":{"pluginID":"","pluginName":"","status":"","code":0,"output":null,"startDateTime":"0001-01-01T00:00:00Z","endDateTime":"0001-01-01T00:00:00Z","outputS3BucketName":"","outputS3KeyPrefix":"","error":"","standardOutput":"","standardError":""},"Id":"GetHostName"}],"CancelInformation":{"CancelMessageID":"","CancelCommandID":"","Payload":"","DebugInfo":""},"IOConfig":{"OrchestrationDirectory":"/var/lib/amazon/ssm/i-0fb5527d1d10e85cd/document/orchestration/67278003-19bf-4e28-8c80-eea12a2f2910","OutputS3BucketName":"","OutputS3KeyPrefix":"67278003-19bf-4e28-8c80-eea12a2f2910/i-0fb5527d1d10e85cd","CloudWatchConfig":{"LogGroupName":"","LogStreamPrefix":"","LogGroupEncryptionEnabled":false}}}
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] Running plugin aws:runShellScript
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] [pluginName=aws:runShellScript] aws:runShellScript started with configuration {<nil> map[runCommand:[hostname]] 67278003-19bf-4e28-8c80-eea12a2f2910/i-0fb5527d1d10e85cd/awsrunShellScript  false  false /var/lib/amazon/ssm/i-0fb5527d1d10e85cd/document/orchestration/67278003-19bf-4e28-8c80-eea12a2f2910/GetHostName aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd 67278003-19bf-4e28-8c80-eea12a2f2910 aws:runShellScript GetHostName  map[] true []  }
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] [pluginName=aws:runShellScript] Unexpected 'TimeoutSeconds' value <nil> received. Setting 'TimeoutSeconds' to default value 3600
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] [pluginName=aws:runShellScript] 'TimeoutSeconds' value should be between 5 and 172800. Setting 'TimeoutSeconds' to default value 3600
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] Sending plugin GetHostName completion message
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] document execution complete
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] sending document complete response...
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] [DataBackend] stopping ipc worker...
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] requested shutdown, prepare to stop messaging
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] channel /var/lib/amazon/ssm/i-0fb5527d1d10e85cd/channels/67278003-19bf-4e28-8c80-eea12a2f2910 requested close
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] channel /var/lib/amazon/ssm/i-0fb5527d1d10e85cd/channels/67278003-19bf-4e28-8c80-eea12a2f2910 closed
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] ipc channel closed, stop messaging worker
2019-03-04 09:56:04 INFO [ssm-document-worker] [67278003-19bf-4e28-8c80-eea12a2f2910] document worker closed
2019-03-04 09:56:04 INFO [MessagingDeliveryService] SendReply Response{
  Description: "Reply 67057dcf-ab40-40a1-a3ed-ad287d12d723 was successfully sent.",
  MessageId: "aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd",
  ReplyId: "67057dcf-ab40-40a1-a3ed-ad287d12d723",
  ReplyStatus: "QUEUED"
}
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] [OutOfProcExecuter] [67278003-19bf-4e28-8c80-eea12a2f2910] channel: 67278003-19bf-4e28-8c80-eea12a2f2910 not found, creating a new file channel...
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] [OutOfProcExecuter] [67278003-19bf-4e28-8c80-eea12a2f2910] inter process communication started
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] [OutOfProcExecuter] [67278003-19bf-4e28-8c80-eea12a2f2910] requested terminate messaging worker, destroying the channel
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] [OutOfProcExecuter] [67278003-19bf-4e28-8c80-eea12a2f2910] channel /var/lib/amazon/ssm/i-0fb5527d1d10e85cd/channels/67278003-19bf-4e28-8c80-eea12a2f2910 requested close
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] [OutOfProcExecuter] [67278003-19bf-4e28-8c80-eea12a2f2910] Executer closed
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] sending reply for plugin update: GetHostName
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] sending document: 67278003-19bf-4e28-8c80-eea12a2f2910 complete response
2019-03-04 09:56:04 INFO [MessagingDeliveryService] received plugin: GetHostName result from Processor
2019-03-04 09:56:04 INFO [MessagingDeliveryService] Sending reply {
  "additionalInfo": {
    "agent": {
      "lang": "en-US",
      "name": "amazon-ssm-agent",
      "os": "",
      "osver": "1",
      "ver": ""
    },
    "dateTime": "2019-03-04T09:56:04.086Z",
    "runId": "",
    "runtimeStatusCounts": {
      "Success": 1
    }
  },
  "documentStatus": "InProgress",
  "documentTraceOutput": "",
  "runtimeStatus": {
    "GetHostName": {
      "status": "Success",
      "code": 0,
      "name": "aws:runShellScript",
      "output": "ip-172-31-47-223.us-east-2.compute.internal\n",
      "startDateTime": "2019-03-04T09:56:04.071Z",
      "endDateTime": "2019-03-04T09:56:04.077Z",
      "outputS3BucketName": "",
      "outputS3KeyPrefix": "",
      "standardOutput": "ip-172-31-47-223.us-east-2.compute.internal\n",
      "standardError": ""
    }
  }
}
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] [OutOfProcExecuter] [67278003-19bf-4e28-8c80-eea12a2f2910] channel /var/lib/amazon/ssm/i-0fb5527d1d10e85cd/channels/67278003-19bf-4e28-8c80-eea12a2f2910 closed
2019-03-04 09:56:04 INFO [MessagingDeliveryService] SendReply Response{
  Description: "Reply 52560d86-c2b9-499e-980c-7c32f567a452 was successfully sent.",
  MessageId: "aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd",
  ReplyId: "52560d86-c2b9-499e-980c-7c32f567a452",
  ReplyStatus: "QUEUED"
}
2019-03-04 09:56:04 INFO [MessagingDeliveryService] command: aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd complete
2019-03-04 09:56:04 INFO [MessagingDeliveryService] Sending reply {
  "additionalInfo": {
    "agent": {
      "lang": "en-US",
      "name": "amazon-ssm-agent",
      "os": "",
      "osver": "1",
      "ver": ""
    },
    "dateTime": "2019-03-04T09:56:04.161Z",
    "runId": "",
    "runtimeStatusCounts": {
      "Success": 1
    }
  },
  "documentStatus": "Success",
  "documentTraceOutput": "",
  "runtimeStatus": {
    "GetHostName": {
      "status": "Success",
      "code": 0,
      "name": "aws:runShellScript",
      "output": "ip-172-31-47-223.us-east-2.compute.internal\n",
      "startDateTime": "2019-03-04T09:56:04.071Z",
      "endDateTime": "2019-03-04T09:56:04.077Z",
      "outputS3BucketName": "",
      "outputS3KeyPrefix": "",
      "standardOutput": "ip-172-31-47-223.us-east-2.compute.internal\n",
      "standardError": ""
    }
  }
}
2019-03-04 09:56:04 INFO [MessagingDeliveryService] [EngineProcessor] execution of aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd is over. Removing interimState from current folder
2019-03-04 09:56:04 INFO [MessagingDeliveryService] SendReply Response{
  Description: "Reply ed0685af-f1a1-40cd-b1b0-d09dc10ccd3a was successfully sent.",
  MessageId: "aws.ssm.67278003-19bf-4e28-8c80-eea12a2f2910.i-0fb5527d1d10e85cd",
  ReplyId: "ed0685af-f1a1-40cd-b1b0-d09dc10ccd3a",
  ReplyStatus: "QUEUED"
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朴皆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泛粹,更是在濱河造成了極大的恐慌遂铡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晶姊,死亡現(xiàn)場離奇詭異扒接,居然都是意外死亡,警方通過查閱死者的電腦和手機们衙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門钾怔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒙挑,你說我怎么就攤上這事宗侦。” “怎么了忆蚀?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵矾利,是天一觀的道長。 經(jīng)常有香客問我馋袜,道長梦皮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任桃焕,我火速辦了婚禮剑肯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘观堂。我一直安慰自己让网,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布师痕。 她就那樣靜靜地躺著溃睹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胰坟。 梳的紋絲不亂的頭發(fā)上因篇,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音笔横,去河邊找鬼竞滓。 笑死,一個胖子當著我的面吹牛吹缔,可吹牛的內(nèi)容都是我干的商佑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厢塘,長吁一口氣:“原來是場噩夢啊……” “哼茶没!你這毒婦竟也來了肌幽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤抓半,失蹤者是張志新(化名)和其女友劉穎喂急,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笛求,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡煮岁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涣易。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片画机。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖新症,靈堂內(nèi)的尸體忽然破棺而出步氏,到底是詐尸還是另有隱情,我是刑警寧澤徒爹,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布荚醒,位于F島的核電站,受9級特大地震影響隆嗅,放射性物質(zhì)發(fā)生泄漏界阁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一胖喳、第九天 我趴在偏房一處隱蔽的房頂上張望泡躯。 院中可真熱鬧,春花似錦丽焊、人聲如沸较剃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽写穴。三九已至,卻和暖如春雌贱,著一層夾襖步出監(jiān)牢的瞬間啊送,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工欣孤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馋没,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓导街,卻偏偏與公主長得像披泪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子搬瑰,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353