AWS配置Python Unicode混乱

2024-06-16 14:54:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

{u'configurationItems': [{u'configurationItemCaptureTime': datetime.datetime(2020, 6, 4, 21, 56, 31, 134000, tzinfo=tzlocal()), u'resourceCreationTime': datetime.datetime(2020, 5, 22, 16, 32, 55, 162000, tzinfo=tzlocal()), u'availabilityZone': u'Not Applicable', u'awsRegion': u'us-east-1', u'tags': {u'brassmonkeynew': u'tomtagnew'}, u'resourceType': u'AWS::DynamoDB::Table', u'resourceId': u'tj-test2', u'configurationStateId': u'1591307791134', 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'ContinuousBackupsDescription': u'{"continuousBackupsStatus":"ENABLED","pointInTimeRecoveryDescription":{"pointInTimeRecoveryStatus":"DISABLED"}}', u'Tags': u'[{"key":"brassmonkeynew","value":"tomtagnew"}]'}, u'resourceName': u'tj-test2', u'configuration': u'{"attributeDefinitions":[{"attributeName":"tj-test2","attributeType":"S"}],"tableName":"tj-test2","keySchema":[{"attributeName":"tj-test2","keyType":"HASH"}],"tableStatus":"ACTIVE","creationDateTime":1590165175162,"provisionedThroughput":{"numberOfDecreasesToday":0,"readCapacityUnits":5,"writeCapacityUnits":5},"tableArn":"arn:aws:dynamodb:us-east-1:896911201517:table/tj-test2","tableId":"816956d7-95d1-4d31-8d18-f11b18de4643"}', u'configurationItemStatus': u'OK', u'accountId': u'896911201517'}, {u'configurationItemCaptureTime': datetime.datetime(2020, 6, 1, 16, 27, 21, 316000, tzinfo=tzlocal()), u'resourceCreationTime': datetime.datetime(2020, 5, 22, 16, 32, 55, 162000, tzinfo=tzlocal()), u'availabilityZone': u'Not Applicable', u'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'ContinuousBackupsDescription': u'{"continuousBackupsStatus":"ENABLED","pointInTimeRecoveryDescription":{"pointInTimeRecoveryStatus":"DISABLED"}}', u'Tags': u'[{"key":"brassmonkeynew","value":"tomtagnew"},{"key":"backup-schedule","value":"daily"}]'}, 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

Tags: datetimeresponsearnusprinttzinfoeasttest2
1条回答
网友
1楼 · 发布于 2024-06-16 14:54:22

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

import boto3
import json
import pprint

config_client = boto3.client('config')

response = config_client.get_resource_config_history(
    resourceType='AWS::DynamoDB::Table',
    resourceId = 'stack-table'
)

for item in response['configurationItems']:
    configuration = item['configuration'] # Returns a JSON string
    config = json.loads(configuration) # Convert to Python object

    pprint.pprint(config) # Show what's in it
    print(config['tableArn'])  # Access elements in object

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

相关问题 更多 >