【发布时间】:2019-01-18 23:31:52
【问题描述】:
我正在尝试创建一个安全组并使用 boto3 获取安全组 ID 作为输出。我想要这样的东西:
如果安全组存在,则获取/返回/输出 groud id。
如果安全组不存在,则使用给定规则创建和授权组并输出组 id
这是我目前的代码:
ec2 = boto3.client('ec2', region_name='us-east-1')
for rds_security_group in ec2.describe_security_groups()['SecurityGroups']:
if rds_security_group['GroupName'] == 'testgroup':
print(rds_security_group['GroupId'])
return (rds_security_group['GroupId'])
else:
rds_security_group_name = ec2.create_security_group(
GroupName='testgroup',
Description='rds-security-group',
VpcId='vpc-12345')
client.authorize_security_group_ingress(
CidrIp=10.10.10.10/11,
IpProtocol='tcp',
FromPort=90,
ToPort=90,
GroupId=rds_security_group_name['GroupId'])
print(rds_security_group_name['GroupId'])
return(rds_security_group_name['GroupId'])
如果安全组不存在,代码通过创建组并返回组 ID 可以完美运行。但如果安全组已存在并抛出现有错误,则无法返回组 ID。
botocore.exceptions.ClientError: An error occurred (InvalidGroup.Duplicate) when calling the CreateSecurityGroup operation: The security group 'testgroup' already exists for VPC 'vpc-12345'
请帮我解决这个问题?
【问题讨论】:
标签: python amazon-web-services boto3 amazon-vpc aws-security-group