使用Boto3启动具有IAM角色的EC2实例时,会发生未经授权的操作错误

时间:2017-10-30 10:08:31

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

我已经阅读了这个问题How do I use Boto3 to launch an EC2 instance with an IAM role?并尝试在python脚本中启动具有IAM角色的实例。这是代码:

instance = ec2.create_instances(
    ImageId='ami-1a7f6d7e',
    KeyName='MyKeyPair',
    MinCount=1,
    MaxCount=1,
    SecurityGroups=['launch-wizard-3'],
    InstanceType='t2.micro',
    IamInstanceProfile={
        'Arn': 'arn:aws:iam::627714603946:instance-profile/SSMforCC'}
)

但是,运行脚本botocore.exceptions.ClientError: An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation.后出现此错误我发现此问题how do I launch ec2-instance with iam-role?Ruby提供了解决问题的解决方案。任何人都可以告诉我是否有办法在python Boto3中解决这个问题?

2 个答案:

答案 0 :(得分:2)

您没有足够的权限(iam::PassRole)将IAM角色附加到实例。因此,请附上授予您特权的政策。只有当您是IAM管理员或具有足够的权限将策略附加到用户时,才能将策略附加到用户。

答案 1 :(得分:0)

我会检查 -  1.如果您正确地向AWS验证 - 您可以在客户端中明确指定访问密钥和密钥。

client = boto3.client(
    'ec2',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
)
  1. 如果用户对您尝试创建的资源拥有ec2:runInstances IAM权限。