[英]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 ( events
和context
)。 同樣,這些對象的內容可能是什么似乎完全沒有記錄。 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.