windows2020のブログ

AWSはじめました

describe_instancesの結果をJSON形式で

PythonのAWSCLIでインスタンスの情報をJSON形式で取得するため、以下のように実行しましたが、

import boto3
import collections
import json
ec2 = boto3.client('ec2')
r = ec2.describe_instances(Filters=[{'Name':'tag-key','Values':['Name']}])['Reservations']
json.dumps(r,indent=2)

とすると、以下のようなエラーがでました。

TypeError: datetime.datetime(2017, 6, 2, 22, 11, 31, tzinfo=tzutc()) is not JSON serializable

どうも、出力の中にdatetime(2017・・・といった関数が含まれることで、JSON形式として認識できないようです。

回避策としてはpymongoというモジュールをインストールして、出力形式を調整してやればよいようです。

まずは

sudo pip install pymongo

でインストールし、
pythonでは以下のようにしてやると
JSON形式で出力できるようになりました。