AWS配置Python Unicode混乱

AWS配置Python Unicode混乱,python,amazon-web-services,config,Python,Amazon Web Services,Config,我在尝试从这个输出中提取可用项时遇到了问题。我只是想从这个Unicode字符串中提取一个值,这非常有趣 我的打印(回复)返回:仅供参考,这比这个小片段长得多 {u'configurationItems':[{u'configurationItemCaptureTime':datetime.datetime(2020,6,4,21,56,31134000,tzinfo=tzlocal()),u'resourceCreationTime':datetime.datetime(2020,5,22,16

我在尝试从这个输出中提取可用项时遇到了问题。我只是想从这个Unicode字符串中提取一个值,这非常有趣

我的打印(回复)返回:仅供参考,这比这个小片段长得多

{u'configurationItems':[{u'configurationItemCaptureTime':datetime.datetime(2020,6,4,21,56,31134000,tzinfo=tzlocal()),u'resourceCreationTime':datetime.datetime(2020,5,22,16,32,55162000,tzinfo=tzlocal()),u'availabilityZone':u'NotApplied','awsRegion':u'us-east-1','u'tags':{u'Brassmonkynew':u'tomtagnew'}',u'resourceType':u'AWS::DynamoDB::Table',u'resourceId':u'tj-test2',u'configurationStateId':u'1591307791134',u'relatedEvents':[],u'relations':[],u'arn':u'arn:AWS:DynamoDB:us-east-1:896911201517:Table/tj-test2',u'version':u'1.3',u'configurationItemMD5Hash':u',u'supplementaryConfiguration':{continuousbackupdescription':u'{“ContinuousBackupStatus:“ENABLED”,“pointInTimeRecoveryDescription:”{“pointInTimeRecoveryStatus:“DISABLED”}}',u'Tags:“BrassMonkeNew”,“value:“tomtagnew”}]},u'resourceName:“u'tj-test2”,u'configuration:“{”attributeDefinitions:“[{”attributeName:“tj-test2”,“attributeType:“S”}],“tableName:“tj-test2”,“Keya:{”attributeName:“tj-test2”,“keyType:“HASH”}],“tableStatus:“ACTIVE”,“creationDateTime”:1590165175162,“provisionedThroughput:{“NumberOfDecreatesToDay”:0,“ReadCapacityInits”:5,“writeCapacityUnits”:5},“tableArn:“arn:aws:dynamodb:us-east-1:896911201517:table/tj-test2”,“tableId:“816956d7-95d1-4d31-8d18-F118DE4643}”“,u'configurationItemStatus':u'OK',u'accountId':u'896911201517'},{u'configurationItemCaptureTime':datetime.datetime(2020,6,1,16,27,21316000,tzinfo=tzlocal()),u'resourceCreationTime':datetime.datetime(2020,5,22,16,32,55162000,tzinfo=tzlocal()),u'availabilityZone':u'notapplicative','awsRegion':u'us-east-1','u'tags':{u'brassmonkeynew':u'tomtagnew',u'backup-schedule':u'daily',u'resourceType':u'AWS::DynamoDB::Table',u'resourceId':u'tj-test2',u'configurationStateId':u'1591028841316',u'relatedEvents':[],u'relationships':[],u'arn':u'arn:aws:dynamodb:us-east-1:896911201517:table/tj-test2',u'version:u'1.3',u'configurationItemMD5Hash:u',u'supplementaryConfiguration':{u'continuousbackupdescription':u'{“continuousbackupstatus”:“ENABLED”,“pointInTimeRecoveryDescription”:{“pointInTimeRecoveryStatus”:“DISABLED”}',u'Tags':u'[“key”:“brasmonkey”:“value”:tomtagnew“},{”key:“备份计划”,“值”:“每日”}]},u'resourceName:“u'tj-test2”,u'configuration:“u'{”attributeDefinitions:[{”attributeName:“tj-test2”,“attributeType:“S”}],“tableName:“tj-test2”,“keySchema:[{”attributeName:“tj”-

等等。我尝试了几种不同的方法来获取这些信息,但每次我都会遇到一个关键错误:

我还尝试将其转换为JSON,但由于顶部有日期/时间,因此出现以下错误:

“TypeError:[]不可JSON序列化

Failed attempts:

# print(response[0]["tableArn"])

print(response2)
print(response2['tableArn'])
print(response2.arn)
print(response2['configurationItems'][0]['tableArn'])
print(response2['configurationItems']['tableArn'])
print(response.configurationItems[0])
arn = response.configurationItems[0].arn



def lambda_handler(event, context):

# print("Received event: " + json.dumps(event, indent=2))

message = event['Records'][0]['Sns']['Message']

print("From SNS: " + message)

response = client.get_resource_config_history(

resourceType='AWS::DynamoDB::Table',

resourceId = message

)

response2 = dict(response)

print(response)

return message

下面是一些Python 3代码,展示了如何访问元素:

导入boto3
导入json
导入pprint
config\u client=boto3.client('config')
response=config\u client.get\u resource\u config\u history(
resourceType='AWS::DynamoDB::Table',
resourceId='堆栈表'
)
对于响应中的项['configurationItems']:
configuration=item['configuration']#返回一个JSON字符串
config=json.load(配置)#转换为Python对象
pprint.pprint(config)#显示其中的内容
打印(配置['tableArn'])#访问对象中的元素

诀窍在于
配置
字段包含一个JSON字符串,需要将其转换为Python对象以便于访问。

这是Python
dict
的表示格式,因此您应该能够访问该dict中的键。查看
pprint
模块以获得更好的输出。但是绝对没有必要解析它。另外,你使用Python 2有什么原因吗?没有。我使用了AWS Lambda SNS模板,它的默认版本是2.7。我将把它升级到3.8。谢谢你,John,这正是我想要得到的。我的问题措辞有点糟糕,因为我是Python新手。干杯。