如何通过AWS CLI创建AWS Spot实例

时间:2018-01-23 14:43:05

标签: amazon-web-services amazon-ec2 aws-sdk aws-cli

我正在使用AWS CLI创建AWS Spot实例,但每次我收到以下错误。 “调用RequestSpotInstances操作时发生错误(UnauthorizedOperation):您无权执行此操作。”

注意: - 我能够成功地从EC2控制台(GUI)创建现场实例。 下面提到的是aws cli

aws ec2 request-spot-instances --spot-price“0.003” - instance-count 1 --type“persistent”--launch-specification file://param.json --instance-interruption-behavior“停止“--profile”“

param.json的内容

{
  "ImageId": "ami-0123456",
  "UserData":"file:://my_script.txt"
  "KeyName": "gistdev_default_rsa",
  "SecurityGroupIds": [ "sg-0123456" ],
  "InstanceType": "t2.medium",
  "Placement": {
    "AvailabilityZone": "us-west-2a"
  },

  "NetworkInterfaces": [
    {
      "DeviceIndex": 0,
      "SubnetId": "subnet-0123456",
      "Groups": [ "sg-0123456" ],
      "AssociatePublicIpAddress": true
    }
  ]
}

我没有在json文件中指定“IamInstanceProfile”参数。这是必须的吗?

〜阿希什

3 个答案:

答案 0 :(得分:2)

仅仅因为您可以使用控制台(GUI)创建专色实例并不意味着您可以使用CLI创建它们。什么可能出错?

  • 是否为用户启用了API / SDK访问权限?
  • 如何将凭据提供给CLI?使用访问/秘密或使用元数据服务器(IAMProfile)
  • 提供给CLI的凭据是否与使用控制台/ GUI的IAM用户的凭据不同? (最可能的原因
  • CLI是否以其他方式获取凭据?请参阅:Configuration Settings and Precedence

答案 1 :(得分:0)

缺少对AmazonEC2SpotFleetRole的iam用户的权限。请在将AWS管理的AmazonEC2SpotFleetRole政策附加到您的用户后尝试。

没有强制要求添加" IamInstanceProfile"在创建spot-instance时在json文件中。 IamInstanceProfile是一个角色,可以通过ec2实体作为受信任的实体进行访问。

答案 2 :(得分:0)

创建新用户时,您可以选择授予他们“编程访问权限”和/或“AWS托管控制台访问权限” New User Access Options

您需要确保为需要使用CLI的用户启用“程序化访问”。