Как использовать Boto3 для запуска экземпляра EC2 с ролью IAM?

Я не могу понять, как запустить экземпляр EC2 в Boto3 с указанной ролью IAM.

Вот какой код sampe, как я смог успешно создать экземпляр:

import boto3
ec2 = boto3.resource('ec2', region_name='us-west-2')
ec2.create_instances(ImageId='ami-1e299d7e', InstanceType='t2.micro',\
MinCount=1, MaxCount=1, SecurityGroupIds=['Mysecuritygroup'], KeyName='mykeyname')

Ответ 1

Примечание: Некоторые версии Boto3 принимают либо Arn или Name, но все версии принимают Name. Я предлагаю использовать только имя роли.

IamInstanceProfile={
    'Arn': 'string',
    'Name': 'string'
}

Если имя вашего профиля - ExampleInstanceProfile а ARN - arn:aws:iam::123456789012:instance-profile/ExampleInstanceProfile

ec2.create_instances(ImageId='ami-1e299d7e',
                     InstanceType='t2.micro',
                     MinCount=1, MaxCount=1,
                     SecurityGroupIds=['Mysecuritygroup'],
                     KeyName='mykeyname',
                     IamInstanceProfile={
                            'Arn': 'arn:aws:iam::123456789012:instanceprofile/ExampleInstanceProfile'
                            'Name': 'ExampleInstanceProfile'
                     })

Ответ 2

Просто дополнение к отличному ответу от helloV (я не могу комментировать из-за ограничений репутации). Я обнаружил одно и то же сообщение об ошибке: "Параметр iamInstanceProfile.name нельзя использовать в сочетании с iamInstanceProfile.arn. Поэтому разрешен только один ключ. Я экспериментировал с обоими и использовал

IamInstanceProfile={ 'Name': 'ExampleInstanceProfile' }

работает у меня, но не использует

IamInstanceProfile={'Arn':'arn:aws:iam::123456789012:instanceprofile/ExampleInstanceProfile'}

Я использую Boto3 версии 1.4.4