这是我的代码。这段代码有什么问题吗?它显示了一些错误!
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'结合使用
答案 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'
},
这就是说您不能同时指定 Arn
和Name
。
原因是ARN唯一标识资源,因此不需要名称。但是,我承认文档中没有对此进行说明。
因此,只需删除Name
条目。
答案 2 :(得分:0)
错误消息指出,您只能在Arn
字典中传递Name
或IamInstanceProfile
参数。不幸的是,Boto3文档在这里有点误导,并给人留下了可以(甚至必须)在通话中传递的印象。