Невозможно добавить тег к экземпляру python - PullRequest
0 голосов
/ 17 января 2020

Я создаю экземпляр ec2 в python boto3 с этим кодом:

image_id = input("Enter the image id: ")
max_count = input("Enter the number of instances you want: ")
instance_type = input("Enter the instance type: ")
key_name = input("Enter the key name you want to use: ")
name_tag = input("Enter the host name: ")
instance = ec2_resource.create_instances(
    ImageId=image_id,
    MinCount=1,
    MaxCount=max_count,
    InstanceType=instance_type,
    KeyName=key_name
)

Но когда я пытаюсь применить тег имени с этим кодом:

instance.add_tag('Name', name_tag)

Я получаю сообщение об ошибке:

Traceback (most recent call last):
  File ".\aws_create_ec2_simple.py", line 134, in <module>
    main()
  File ".\aws_create_ec2_simple.py", line 130, in main
    create_instances()
  File ".\aws_create_ec2_simple.py", line 125, in create_instances
    instance.add_tag('Name', name_tag)
AttributeError: 'list' object has no attribute 'add_tag'

Как я могу сделать это правильно?

1 Ответ

1 голос
/ 17 января 2020

Класс boto3 Instance не имеет метода add_tags().

Вы должны использовать create_tags () . Например:

instances = ec2_resource.create_instances(
    ImageId=image_id,
    MinCount=1,
    MaxCount=max_count,
    InstanceType=instance_type,
    KeyName=key_name
)

for instance in instances:
    tag = instance.create_tags(
        Tags=[
            {
                'Key': 'Environment',
                'Value': 'QA'
            },
            {
                'Key': 'Owner',
                'Value': 'Jason'
            }
        ]
    )

Также обратите внимание, что create_instances () возвращает список экземпляров, а не один экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...