Skip to content

Instantly share code, notes, and snippets.

@reitermarkus
Last active June 22, 2018 12:44
Show Gist options
  • Save reitermarkus/d6a898eb5274e578944c626ba6e158cb to your computer and use it in GitHub Desktop.
Save reitermarkus/d6a898eb5274e578944c626ba6e158cb to your computer and use it in GitHub Desktop.
AWS Snippets
```bash
aws configure set aws_access_key_id {access_key_id}
aws configure set aws_secret_access_key {secret_access_key}
aws configure set default.region {region}
aws s3 cp '{file}' 's3://{bucket.name}'
```
  bucket = Aws::S3::Bucket.new("bucket-#{SecureRandom.uuid}")
  bucket.create
  
  bucket.wait_until_exists
  
  bucket.delete!
  secrets = YAML.load(File.read("#{__dir__}/secrets.yml"))

  key_name = secrets['key_name']
  key_data = secrets['key_data']
  access_key_id = secrets['access_key_id']
  secret_access_key = secrets['secret_access_key']
  region = 'us-west-2'

  Aws.config.update({
    region: region,
    credentials: Aws::Credentials.new(access_key_id, secret_access_key)
  })
  response = ec2.run_instances({
    image_id: 'ami-e251209a', # Amazon Linux AMI 2018.03.0 (HVM)
    instance_type: 't2.micro',
    key_name: key_name,
    min_count: 1,
    max_count: 1,
  })

  instances = response.instances.map { |i| Aws::EC2::Instance.new(i.instance_id) }

  instance = instances[0]
  
  instance.wait_until_running
  
  instance.id
  instance.public_dns_name

  instance.terminate
require 'net/ping'

ping = Net::Ping::TCP.new(instance.public_dns_name, 22, 1)
raise ping.exception if 120.times.none? { ping.ping? }
scp = Net::SCP.new(ssh)

scp.upload! "#{__dir__}/file.ext", '.'
scp -o StrictHostKeyChecking=no -o LogLevel=ERROR -i key.pem 'user@host:file.ext' 'file.ext'
require 'net/ssh'

ssh = Net::SSH.start(instance.public_dns_name, ssh_user, key_data: key_data, keys_only: true)

puts ssh.exec! "echo 'Hello, world!'"

ssh.close
command time -f '%e'

image_id: 'ami-db710fa3'

sudo DEBIAN_FRONTEND=noninteractive apt-get -y -qq update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -qq install build-essential
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment