RunInstances操作:不能将参数'iamInstanceProfile.name'与'iamInstanceProfile.arn'结合使用

时间:2018-07-03 08:23:00

标签: python amazon-web-services amazon-ec2 boto3

这是我的代码。这段代码有什么问题吗?它显示了一些错误!

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,operation_name)   botocore.exceptions.ClientError:调用RunInstances操作时发生错误(InvalidParameterCombination):参数'iamInstanceProfile.name'不能与'iamInstanceProfile.arn'结合使用

3 个答案:

答案 0 :(得分:2)

当我参考Boto3文档时,我在这里也遇到了同样的问题。因为尚未明确提及,所以我们必须使用ARN或Name。

我们不能在代码中同时使用两者。

我更改了如下代码。对我来说很好。

"user,tty/pts,connection_from,login_time,state,logoff_time,total_time"

答案 1 :(得分:1)

它对此抱怨:

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

这就是说您不能同时指定 ArnName

原因是ARN唯一标识资源,因此不需要名称。但是,我承认文档中没有对此进行说明。

因此,只需删除Name条目。

答案 2 :(得分:0)

错误消息指出,您只能在Arn字典中传递NameIamInstanceProfile参数。不幸的是,Boto3文档在这里有点误导,并给人留下了可以(甚至必须)在通话中传递的印象。