インスタンスを起動するときに、オプションでセキュリティ グループを指定できます。:security_groups オプションを省略すると、デフォルトで「デフォルト」のセキュリティ グループになります (起動後にインスタンスのセキュリティ グループを変更することはできません)。あなたの例では、セキュリティグループを作成したばかりのものに指定する必要があります。
考慮すべきもう 1 つのことは、キー ペアの指定です。設定しない場合はデフォルトで 1 つになりますが、パブリック 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