從 Amazon S3 執行 Ruby 指令碼 - AWS Systems Manager

從 Amazon S3 執行 Ruby 指令碼

本節所涵蓋的程序能協助您使用 AWS Systems Manager 主控台或 AWS Command Line Interface (AWS CLI),以便從 Amazon Simple Storage Service (Amazon S3) 執行 Ruby 指令碼。

從 Amazon S3 (主控台) 執行 Ruby 指令碼

從 Amazon S3 執行 Ruby 指令碼

  1. 開啟位於 AWS Systems Managerhttps://console.aws.amazon.com/systems-manager/ 的 主控台。https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Run Command

    -或-

    如果 AWS Systems Manager 首頁先開啟,選擇選單圖示 ( ) 以開啟導覽窗格,然後選擇 Run Command

  3. 選擇 Run command (執行命令)

  4. Command document (命令文件) 清單,請選擇 AWS-RunRemoteScript

  5. Command parameters (命令參數) 中,執行以下操作:

    • Source Type (來源類型) 中,選取 S3

    • Source Info (來源資訊) 文字方塊中,按照以下格式輸入所需資訊,藉此存取來源。

      {"path":"https://s3.amazonaws.com/path_to_script"}

      以下是範例。

      {"path":"https://s3.amazonaws.com/doc-example-bucket/scripts/ruby/helloWorld.rb"}
    • Command Line (命令列) 欄位中,輸入指令碼執行參數。請見此處範例。

      helloWorld.rb argument-1 argument-2
    • (選用) 在 Working Directory (工作目錄) 欄位中,輸入執行個體上的目錄名稱;您將下載指令碼至該目錄並予以執行。

    • (選用) 在 Execution Timeout (執行逾時) 中,指定指令碼命令執行失敗前,系統的等待時間 (秒)。

  6. Targets (目標) 中,指定標籤、手動選取執行個體或指定資源群組,以識別您要執行這項操作的執行個體。

    注意

    如果您預期看到的 Amazon EC2 執行個體未列出,請參閱 故障診斷 Amazon EC2 受管執行個體可用性 以取得故障診斷秘訣。

  7. 對於 Other parameters (其他參數)

    • Comment (註解) 中,輸入此命令的相關資訊。

    • Timeout (seconds) (逾時 (秒)) 中,指定在命令執行全面失敗之前,系統要等候的秒數。

  8. 對於 Rate control (比率控制):

    • Concurrency (並行) 中,指定可同時執行命令的執行個體數目或百分比。

      注意

      如果透過指定套用至受管執行個體的標籤或指定 AWS 資源群組選取了目標,且您不確定會以多少個執行個體為目標,則透過指定百分比限制可以同時執行文件之執行個體的數量。

    • Error threshold (錯誤閾值) 中,指定在特定數目或百分比之執行個體上的命令失敗之後,停止在其他執行個體上執行命令。例如,如果您指定三個錯誤,則 Systems Manager 會在收到第四個錯誤時停止傳送命令。仍在處理命令的執行個體也可能會傳送錯誤。

  9. (選用) 針對 Output options (輸出選項),若要將命令輸出儲存至檔案,請選取 Write command output to an S3 bucket (將命令輸出寫入至 S3 儲存貯體) 方塊。在方塊中輸入儲存貯體和字首 (資料夾) 名稱。

    注意

    授予能力以將資料寫入至 S3 儲存貯體的 S3 許可,會是指派給執行個體之執行個體描述檔的許可,而不是執行此工作之 IAM 使用者的許可。如需詳細資訊,請參閱建立 Systems Manager 的 IAM 執行個體描述檔。此外,若指定的 S3 儲存貯體位於不同的 AWS 帳戶 內,請確認與執行個體相關聯的執行個體描述檔具有寫入該儲存貯體的必要許可。

  10. SNS notifications (SNS 通知) 區段中,如果您要傳送有關命令執行狀態的通知,請選取 Enable SNS notifications (啟用 SNS 通知) 核取方塊。

    如需為 Run Command 設定 Amazon SNS 通知的詳細資訊,請參閱 使用 Amazon SNS 通知監控 Systems Manager 狀態變更

  11. 選擇 Run (執行)

使用 AWS CLI 從 Amazon S3 執行 Ruby 指令碼

  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或升級 AWS 命令列工具

  2. 執行下列命令。

    Linux & macOS
    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --targets "Key=instanceids,Values=instance-IDs" \ --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_script\"}"],"commandLine":["script_name_and_arguments"]}'

    請見此處範例。

    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" \ --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/doc-example-bucket/scripts/ruby/helloWorld.rb\"}"],"commandLine":["helloWorld.rb argument-1 argument-2"]}'
    Windows
    aws ssm send-command ^ --document-name "AWS-RunRemoteScript" ^ --targets "Key=instanceids,Values=instance-IDs" ^ --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/path_to_script\"}',"commandLine"="script_name_and_arguments"

    請見此處範例。

    aws ssm send-command ^ --document-name "AWS-RunRemoteScript" ^ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" ^ --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/doc-example-bucket/scripts/ruby/helloWorld.rb\"}',"commandLine"="helloWorld.rb argument-1 argument-2"