Операция RunInstances: параметр «iamInstanceProfile.name» нельзя использовать в сочетании с «iamInstanceProfile.arn» - PullRequest
0 голосов
/ 03 июля 2018

Это мой код. Есть ли проблемы с этим кодом? Это показывает некоторую ошибку!

import boto3
ec2 = boto3.resource('ec2', region_name = 'us-east-2')
instance = ec2.create_instances(
    BlockDeviceMappings=[
        {
            'DeviceName': '/dev/sdh',
            'VirtualName': 'ephemeral1',
            'Ebs': {
                'Encrypted': False,     
                'Iops': 500,
                'VolumeSize': 100,
                'VolumeType': 'io1'
            },
        },
    ],
    ImageId='ami-XXXXXXXXX',
    InstanceType='t2.micro',
    KeyName='KeyName',
    MaxCount=1,
    MinCount=1,
    IamInstanceProfile={
        'Arn': 'arn:aws:iam::000000000000:user/instance',
        'Name': 'instance'
    },
    InstanceInitiatedShutdownBehavior='stop',
    PrivateIpAddress='XXX.XX.XX.XX'
)

Показывает ошибку:

повысить error_class (parsed_response, имя_операции) botocore.exceptions.ClientError: Произошла ошибка (InvalidParameterCombination) при вызове операции RunInstances: параметр «iamInstanceProfile.name» нельзя использовать в сочетании с «iamInstanceProfile.arn»

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

жалуется на это:

IamInstanceProfile={
    'Arn': 'arn:aws:iam::000000000000:user/instance',
    'Name': 'instance'
},

Это говорит о том, что вы не можете указать и Arn и Name.

Причина в том, что ARN однозначно идентифицирует ресурс, поэтому имя не требуется. Тем не менее, я признаю, что в документации этого не говорится.

Итак, просто удалите запись Name.

0 голосов
/ 03 июля 2018

Как говорится в сообщении об ошибке, в словаре IamInstanceProfile можно передать только параметр Arn или Name. К сожалению, документы Boto3 немного вводят в заблуждение и создают впечатление, что оба могут (или даже должны быть) переданы в вызове.

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