我正在尝试在创建 EC2 实例时设置安全组 ID。如果我有特定的安全组 ID 列表,我可以这样做:
boto3.resource(resource, region_name=self.region)
ec2 = self.resource
instances = ec2.create_instances(
ImageId=image_id,
MinCount=minCount,
MaxCount=maxCount,
InstanceType=instance_type,
SubnetId=subnet_id,
KeyName=key_pair,
SecurityGroupIds=security_groups)
如果我没有安全组 ID,我想使用与launch-wizard-#
安全组关联的默认安全组 ID(如果我没有传递SecurityGroupIds
参数)ec2.create_instances
。有没有办法将某些内容传递给SecurityGroupIds
参数,告诉 boto3 使用默认安全组 ID?更具体地说:
instances = ec2.create_instances(
ImageId=image_id,
MinCount=minCount,
MaxCount=maxCount,
InstanceType=instance_type,
SubnetId=subnet_id,
KeyName=key_pair,
SecurityGroupIds= <"What do I pass here so that boto3 takes in defaults?">)
这样我就得到了与下面相同的行为(使用前面的代码片段):
instances = ec2.create_instances(
ImageId=image_id,
MinCount=minCount,
MaxCount=maxCount,
InstanceType=instance_type,
SubnetId=subnet_id,
KeyName=key_pair)
答案1
这些launch-wizard-#
SG 是由控制台启动向导创建的,它们绝不是“默认”的。
另一方面,每个 VPC 都有一个default
可以分配给实例的 SG,但它用处不大。例如,它不允许来自外部的入站访问。
我建议不要依赖任何隐式默认值。最好在创建实例之前在 boto3 脚本中创建一个新的 SG,然后将其分配给实例。
看在 boto3 中使用安全组了解详情。