簡體   English   中英

AWS SSM 自動化:如何在 aws:executeScript 調用的腳本中正常失敗

[英]AWS SSM Automation: How to gracefully fail in script invoked by aws:executeScript

我正在通過 AWS Systems Manger 在自動化文檔(也稱為運行手冊)中運行 Python 腳本。 該腳本通過操作aws:executeScript調用,所選運行時為 python3.7。

所有可用示例僅顯示如何從腳本返回數據。 我怎么能表明腳本已經失敗了? 這似乎是無證的。

我試圖sys.exit(1)raise Exception('oh noes') 兩者都使執行程序崩潰。 不幸的是,這完全隱藏了腳本的所有標准輸出/標准錯誤,並給我留下了以下信息:

當輪詢操作狀態為完成時,步驟失敗。 Traceback(最近一次調用最后一次):文件“/tmp/some-path/customer_script.py”,第 23 行,在 main sys.exit(1) SystemExit - 1。有關更多診斷詳細信息,請參閱自動化服務故障排除指南。

處理程序方法需要兩個 arguments ( eventscontext )。 同樣,這些對象的內容可能是什么似乎完全沒有記錄。 events似乎是一個將 arguments 傳遞給腳本的字典。 context是一些 object,但根據 do dir(context)沒有有用的方法可以讓我返回失敗的 state:

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

raise Exception 應該可以工作。 看下面的例子。

description: ''
schemaVersion: '0.3'
outputs:
  - script.output
mainSteps:
  - name: script
    action: 'aws:executeScript'
    outputs:
      - Name: output
        Selector: '$.Payload[0]'
        Type: String
    inputs:
      Runtime: python3.7
      Handler: script_handler
      Script: |-
        def script_handler(events, context):          
          array = ['a','b','d']
          if 'c' in array:
            return True
          else: 
            raise Exception("c is not there in array")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM