У меня есть список групп безопасности, которые я хочу добавить в некоторые экземпляры, используя метод boto3 client modify_instance_attribute
.
Используя следующий код:
def attach_sg_list(ec2_client, sg_list, instance_id):
sg_list = str(sg_list).replace(' ', '').replace('[','').replace(']','').replace('\'','')
print(f"SG List: {sg_list}")
try:
attach_sg_response = ec2_client.modify_instance_attribute(
InstanceId=instance_id,
Groups=[
sg_list,
]
)
except Exception as e:
print(f"An error has occurred: {e}")
Я получаю следующий вывод:
SG List: sg-0d0ddf3117d23cadb,sg-0e4b5fc1d40185fc3,sg-031ac185d029cd5fd,sg-0afa867f9029bb468,sg-2cad407c
An error has occurred: An error occurred (InvalidGroup.NotFound) when calling the ModifyInstanceAttribute operation: The security group 'sg-0d0ddf3117d23cadb,sg-0e4b5fc1d40185fc3,sg-031ac185d029cd5fd,sg-0afa867f9029bb468,sg-2cad407c' does not exist
Описание группы для modify_instance_attribute таково:
Groups (list) --
[EC2-VPC] Changes the security groups of the instance. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name.
(string) --
Он говорит, что группы - это список, а затем говорит, что нужно указать строку. Если я пытаюсь дать ему list
, я получаю сообщение об ошибке, говорящее, что оно хочет string
. Это ошибка, которую я получаю, если я сделаю это:
Parameter validation failed:
Invalid type for parameter Groups[0], value: [' sg-031ac185d029cd5fd', ' sg-0d0ddf3117d23cadb', ' sg-05ef09508245e56bc', ' sg-0e4b5fc1d40185fc3', ' sg-2cad407c'], type: <class 'list'>, valid types: <class 'str'>
Также говорится, что вы можете добавить «хотя бы одну группу безопасности».
Как я могу назначить список идентификаторов групп безопасности экземпляру ec2 с помощью boto3?