# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 # Purpose: # ec2-ruby-example-create-key-pair.rb demonstrates how to # create a key pair in Amazon Elastic Compute Cloud (Amazon EC2) and # saves the resulting RSA private key file locally in the calling # user's home directory. # snippet-start:[ec2.Ruby.createKeyPair] require 'aws-sdk-ec2' # @param ec2_client [Aws::EC2::Client] An initialized EC2 client. # @param key_pair_name [String] The name for the key pair and private # key file. # @return [Boolean] true if the key pair and private key file were # created; otherwise, false. # @example # exit 1 unless key_pair_created?( # Aws::EC2::Client.new(region: 'us-west-2'), # 'my-key-pair' # ) def key_pair_created?(ec2_client, key_pair_name) key_pair = ec2_client.create_key_pair(key_name: key_pair_name) puts "Created key pair '#{key_pair.key_name}' with fingerprint " \ "'#{key_pair.key_fingerprint}' and ID '#{key_pair.key_pair_id}'." filename = File.join(Dir.home, "#{key_pair_name}.pem") File.open(filename, 'w') { |file| file.write(key_pair.key_material) } puts "Private key file saved locally as '#{filename}'." true rescue StandardError => e puts "Error creating key pair or saving private key file: #{e.message}" false end # Example usage: def run_me key_pair_name = '' region = '' # Print usage information and then stop. if ARGV[0] == '--help' || ARGV[0] == '-h' puts 'Usage: ruby ec2-ruby-example-create-key-pair.rb ' \ 'KEY_PAIR_NAME REGION' # Replace us-west-2 with the AWS Region you're using for Amazon EC2. puts 'Example: ruby ec2-ruby-example-create-key-pair.rb ' \ 'my-key-pair us-west-2' exit 1 # If no values are specified at the command prompt, use these default values. elsif ARGV.count.zero? key_pair_name = 'my-key-pair' # Replace us-west-2 with the AWS Region you're using for Amazon EC2. region = 'us-west-2 ' # Otherwise, use the values as specified at the command prompt. else key_pair_name = ARGV[0] region = ARGV[1] end ec2_client = Aws::EC2::Client.new(region: region) if key_pair_created?(ec2_client, key_pair_name) puts 'Key pair created and private key file saved.' else puts 'Key pair not created or private key file not saved.' end end run_me if $PROGRAM_NAME == __FILE__ # snippet-end:[ec2.Ruby.createKeyPair]