启动实例时,您可以选择提供安全组。如果您省略 :security_groups 选项,那么它将默认为“默认”安全组(您无法在启动后更改实例的安全组)。在您的示例中,您应该将安全组指定为刚刚创建的安全组。
要考虑的另一件事是指定密钥对。如果您不设置它,它将默认为一个,但您可能需要它来登录公共 ami。
这是我刚刚运行的一个示例。我使用的 AMI 是 amazon linux ami。
AWS.config(:access_key_id => '...', :secret_access_key => '...')
ec2 = AWS::EC2.new(:ec2_endpoint => "ec2.sa-east-1.amazonaws.com")
# create a security group and authorize ssh
sg = ec2.security_groups.create('my-security-group')
sg.authorize_ingress(:tcp, 22)
# create a key pair and write it to disk
key_pair = ec2.key_pairs.create('my-key-pair')
File.open("#{ENV['HOME']}/.ssh/my-key-pair.pk", 'w') do |file|
file.write key_pair.private_key
end
require 'fileutils'
FileUtils.chmod(0600, "#{ENV['HOME']}/.ssh/my-key-pair.pk")
instance = ec2.instances.create(
:image_id => 'ami-3c3be421',
:key_name => key_pair.name,
:security_groups => [sg])
sleep 1 while instance.status == :pending
puts instance.ip_address
#=> '1.2.3.4'
现在您应该能够通过 ssh 进入实例(有时从实例状态为 :available 到响应 ssh 之间会有大约 30 秒的延迟)。
# some amis require you to login as root, others as ec2-user
$ ssh -i ~/.ssh/my-key-pair.pk ec2-user@1.2.3.4