我的目标是让lambda解析cloudformation堆栈漂移资源,然后打印出已修改的所有安全组的列表
以下内容将返回特定堆栈的所有已修改资源的列表:
import boto3
cfn_client = boto3.client('cloudformation')
drifts = cfn_client.describe_stack_resource_drifts(
StackName='my_stack>',
StackResourceDriftStatusFilters=[
'MODIFIED',
],
MaxResults=100
)
返回dict响应,其中包含(我只包含与问题相关的字段):
{
'ResponseMetadata': {
'RetryAttempts': 0,
'HTTPStatusCode': 200,
'RequestId': '12b1f618-722e-4b08-9534-123',
'HTTPHeaders': {
'content-type': 'text/xml',
'content-length': '118369',
'vary': 'accept-encoding',
'date': 'Tue, 18 Aug 2020 11:11:38 GMT'
}
},
u 'StackResourceDrifts': [{
u 'StackId': 'arn:aws:cloudformation:eu-west-1:12345678:stack/my_stack/12345,
u 'ResourceType': 'AWS::EC2::SecurityGroup',
u 'PhysicalResourceId': 'sg-987654321xyz',
u 'StackResourceDriftStatus': 'MODIFIED',
u 'LogicalResourceId': 'MySecGrp1'
}, {
u 'StackId': 'arn:aws:cloudformation:eu-west-1:12345678:stack/my_stack/12345,
u 'ResourceType': 'AWS::ElasticLoadBalancingV2::TargetGroup',
u 'PhysicalResourceId': 'arn:aws:elasticloadbalancing:eu-west-1:12345678:targetgroup/my_resource_id',
u 'StackResourceDriftStatus': 'MODIFIED',
u 'LogicalResourceId': 'NyTargerGroup1'
}, {
u 'StackId': 'arn:aws:cloudformation:eu-west-1:12345678:stack/my_stack/12345,
u 'ResourceType': 'AWS::EC2::Instance',
u 'PhysicalResourceId': 'i-123456789xyz',
u 'StackResourceDriftStatus': 'MODIFIED',
u 'LogicalResourceId': 'MyServer1'
}, {
u 'StackId': 'arn:aws:cloudformation:eu-west-1:12345678:stack/my_stack/12345,
u 'ResourceType': 'AWS::EC2::SecurityGroup',
u 'PhysicalResourceId': 'sg-123456789xyz',
u 'StackResourceDriftStatus': 'MODIFIED',
u 'LogicalResourceId': 'MySecGrp2'
}]
}
我试图打印出PhysicalResourceId
和LogicalResourceId
,其中ResourceType
==AWS::EC2::SecurityGroup
。一个响应中可能有多个这样的响应
我只知道如何返回一个特定的值,但这离我仍然需要的还很远:print (drifts ['StackResourceDrifts'][0]['ResourceType'])
我是Python新手,因此希望您能帮助我实现这一点
试试这个。最终将是字典列表
相关问题 更多 >
编程相关推荐