我已经阅读了这个问题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
中解决这个问题?
答案 0 :(得分:2)
您没有足够的权限(iam::PassRole
)将IAM角色附加到实例。因此,请附上授予您特权的政策。只有当您是IAM管理员或具有足够的权限将策略附加到用户时,才能将策略附加到用户。
PassRole
的政策文件。请参阅:How to give ec2 instance access to s3 using boto3 答案 1 :(得分:0)
我会检查 - 1.如果您正确地向AWS验证 - 您可以在客户端中明确指定访问密钥和密钥。
client = boto3.client(
'ec2',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
)
ec2:runInstances
IAM权限。