(暫存) AWS Step Function

名詞
  • terminal state:代表會讓流程結束的 State。具體有三種表現方式:
    1. State 具有 “End”: true 這個屬性。
    2. State 的種類是 “Type”: “Succeed” 或者 “Type”: “Fail”
訊息傳遞

在 Step Function 的每個 State 之間,預設狀況是呼叫一個 Task 時,Task 的回覆會成為 State 的 Output
然後原因是因為預設的 OutputPath 是 ‘$’。這裡 OutputPath 代表的是 Task 回覆的東西,要覆蓋到哪裡去。
如果 OutputPath 設為 null,表示回覆的內容不覆蓋,此時 State 的 Output 就會是 State 的 Input。
但如果 OutputPath 設定為像是 ‘$.result’ 的話,那麼 State 的 Output 就會是原本的 Input 再加上 result 這個 key。

參考資料
  1. Iterating with AWS Step Functions
  2. Forum: AWS Step Functions >Thread: Dynamic number of parallel tasks
  3. Amazon States Language

2018年1月10日 星期三

Python 的時間處理

字串轉時間

假設字串是「Wed, 10 Jan 2018 08:09:13 +0000」,可以使用這樣的 Pattern 來解析:

from datetime import datetime

time_text = 'Wed, 10 Jan 2018 08:09:13 +0000'
datetime.strptime(time_text, '%a, %d %b %Y %H:%M:%S %z')

其中 Pattern 的寫法可以參考官方的文件 [1]。

取得帶有時區資訊的現在時間
需要特別這麼做的原因,是因為如果是直接使用 datetime.now() 的話,得到的時間是沒有時區的
這在需要做時間比較時有可能會有問題,尤其在要比較的時間本身就有時區資訊的話,Python 會回傳錯誤訊息。

from datetime import datetime, timezone

datetime.now(timezone.utc)
計算時間
取得三小時前的時間

from datetime import datetime, timedelta, timezone

datetime.now(timezone.utc) - timedelta(hours=3)
參考資料
  1. strptime
  2. Python get current time in right timezone [duplicate]

2018年1月9日 星期二

AWS DynamoDB SDK v2 基礎使用(三):寫入資料

DynamoDB 不得不說,其實表達的格式相當囉唆~
所以想要存取 DynamoDB,無論如何程式碼都會寫得有點冗長。
而其中因為 Java 又是格式嚴謹的語言,於是又比別的語言再更囉唆一些……。

2018年1月3日 星期三

Python 的日誌

Python 內建就有個 logging 的套件 [1],可以使用設定檔來控制 log 的輸出。
不過實務上有一點小地方需要注意。