步函数执行历史响应中未格式化的日期时间

Unformatted date time in response from step function execution history

我正在调用以下方法来获取 AWS 文档中提到的步进函数的执行历史记录。

https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html

当我调用传递 ARN 的相同方法时,我得到了响应,但日期时间格式不正确

client = boto3.client('stepfunctions')
response = client.get_execution_history(
executionArn=arn,
reverseOrder=True
)

我得到如下响应

部分回复

{
   "events":[
      {
         "timestamp":datetime.datetime(2022,
         5,
         13,
         4,
         50,
         13,
         947000,
         "tzinfo=tzlocal())",
         "type":"ExecutionSucceeded",
         "id":49,
         "previousEventId":48,
         "executionSucceededEventDetails":{

这就是为什么当我们尝试导入步进函数时它会抛出错误

有人可以帮助我们如何以正确的格式获得有效的 json 特别是时间戳部分吗?

get_execution_history returns 事件时间戳为 Python datetime 秒。使用 isoformat 方法将它们转换为 ISO 字符串:

def with_iso_ts(e):
  ts = {"timestamp": e["timestamp"].isoformat()}
  e.update(ts)
  return e

events = [with_iso_ts(e) for e in response["events"]]

json_encoded = json.dumps(events)

Returns 预期的字符串时间戳输出:

[{'timestamp': '2022-04-22T16:13:49.241000+02:00',
  'type': 'ExecutionSucceeded',
  'id': 14,
  'previousEventId': 13,