AWS-tilin luominen
Tarvittavat välineet
- Luottokortti
- Puhelinliittymä
AWS:n kokeilu on perusjutuissa ilmaista. Kannattaa silti olla tarkkana mihin tiliään käyttää ja minkä verran erilaisia resursseja varaa. Erityisen huolellinen pitää olla tunnusten ja avainten kanssa, koska niiden vuotaminen vääriin käsiin tulee kalliiksi. Ilmaisista palveluista tarkemmin täällä (AWS Free Usage Tier) http://aws.amazon.com/free/
AWS-tilin luonnin aikana joudut syöttämään luottokorttitietosi ja sitoutumaan AWS:n käyttöehtoihin. Tilin luonnin aikana puhelinnumero varmennetaan siten, että AWS soittaa antamaasi numeroon ja pyytää syöttämään selaimessa näkyvän numeron. En tiedä miten tämä parantaa tietoturvaa sinänsä (ei sulje pois esimerkiksi prepaid-numeron käyttöä), mutta näin AWS toimii.
Komentorivityökalujen käyttöönotto
EC2-instanssin (http://en.wikipedia.org/wiki/Amazon_EC2) voi luoda helposti AWS-konsolista selaimella. Hiirenheiluttelun asemesta voi saman tehdä myös näppäimiä takomalla. Alla kuvaus Ubuntu-pohjaisen palvelimen luonnista EC2 Micro -instanssina. Komennot toimivat sellaisenaan Ubuntu-koneessa (bash-shellillä), mutta jos käyttää esimerkiksi Windowsia, joutuu soveltamaan.
Ensiksi pitää hakea EC2-komentorivityökalut. Tämä hoituu helpoiten komentoriviltä: wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip. Komentorivityökalujen asennusohjeet löytyvät täältä: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?SettingUp_CommandLine.html, mutta myös tämän kuvauksen pitäisi riittää.
Komentorivityökalut tarvitsevat muutaman ympäristömuuttujan toimiakseen sulavasti. Ne tarvitsevat myös X.509-sertifikaatin, jotka voi luoda tai asettaa AWS:n konsolissa (yksityiskohtaiset ohjeet täällä: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-credentials.html#using-credentials-certificate). Luodaan sertifikaatti tässä kohtaa.
Oletetaan, että edellä luotiin private key tiedostoon nimellä pk-merkkijono.pem ja sertifikaatti tiedostoon nimellä cert-merkkijono.pem. Oletetaan myös, että ec2-api-tools.zip on purettu hakemistoon ~/aws/ec2-api-tools-1.5.0.1-2011.11.30. Luo tiedosto env.sh alla olevalla sisällöllä.
export EC2_HOME=~/aws/ec2-api-tools-1.5.0.1-2011.11.30 export PATH=$PATH:$EC2_HOME/bin export EC2_PRIVATE_KEY=~/aws/certs/pk-merkkijono.pem export EC2_CERT=~/aws/certs/cert-merkkijono.pem export JAVA_HOME=/usr/lib/jvm/java-6-sun export EC2_URL=https://ec2.eu-west-1.amazonaws.com
Ota env.sh-tiedoston asetukset käyttöön: source env.sh.
Kokeile komentorivityökalujen toimivuutta:
$ ec2-describe-regionsTuloksena pitäisi olla jotain alla olevan näköistä:
REGION eu-west-1 ec2.eu-west-1.amazonaws.com REGION us-east-1 ec2.us-east-1.amazonaws.com REGION ap-northeast-1 ec2.ap-northeast-1.amazonaws.com REGION us-west-2 ec2.us-west-2.amazonaws.com REGION us-west-1 ec2.us-west-1.amazonaws.com REGION ap-southeast-1 ec2.ap-southeast-1.amazonaws.comTulosteesta näkee, että env.sh-tiedostossa asetettu EC2_URL viittaa eu-west-1-regioonaan. EC2_URL-muuttuja määrittää komentorivityökalujen oletus-regionin.
Pääsyoikeuksien määrittäminen
Kun komentorivityökalut toimivat, voidaan alkaa määrittämään EC2-instanssin tarvitsemia palikoita. Ensimmäisenä pitää luoda pääsyoikeusmääritykset EC2-instanssin käyttämälle ryhmälle (security group). Luodaan avaimet, joilla instanssille pääsee kirjautumaan:
$ ec2-add-keypair testkeypair
Kirjautuneena olevan käyttäjän pitäisi nähdä AWS Management Consolessa juuri luotu avain: https://console.aws.amazon.com/ec2/home?region=eu-west-1&#s=KeyPairs. Talleta komennon koko tulostus tiedostoon lukuunottamatta ensimmäistä riviä, jolla on teksti KEYPAIR... (tämä on luodun avaimen private key).
Luodaan ryhmä, jolle sallitaan pääsy HTTP:n ja SSH:n yli mistä tahansa internetistä. Ensin tehdään pääsyoikeusryhmä, jolle määritellään pääsyoikeudet.
$ ec2-add-group public_access -d "Access from public Internet"Avataan SSH- ja HTTP-portit.
$ ec2-authorize public_access -P tcp -p 22 -s 0.0.0.0/0 $ ec2-authorize public_access -P tcp -p 80 -s 0.0.0.0/0Tuloksena syntyneen ryhmän (public_access) voi tarkastaa AWS-konsolista: https://console.aws.amazon.com/ec2/home?region=eu-west-1&#s=SecurityGroups. Huomaa, että ryhmä ei ole mitenkään sidonnainen EC2-instanssiin, mutta se on sidonnainen AWS:n regioniin.
EC2-instanssin luominen
Tavoitteena on luoda EBS image -pohjainen (Elastic Block Store) instanssi (toinen vaihtoehto on S3:lle talletettu image). Koska aiemmin päätettiin tehdä Ubuntu-pohjainen EC2-instanssi, käytetään asennuksessa Ubuntun tarjoamia AMI-tiedostoja (Amazon Machine Image). Ubuntun viimeisin LTS-versio (long term support) on kirjoitushetkellä 10.04, joten otetaan 64-bittinen 10.04 AMI EC2:n pohjaksi. Lista AMI-tiedostoista löytyy täältä: http://uec-images.ubuntu.com/releases/lucid/release/. Listan sopivin löytyy regionista eu-west-1, 64-bittisenä ja EBS-pohjaisena (id: ami-cc0e3cb8).
Alla olevalla komennolla luodaan micro-instanssi, joka käyttää aiemmin luotua avainta sekä pääsyoikeusryhmää.
$ ec2-run-instances ami-cc0e3cb8 --instance-count 1 --instance-type t1.micro --key testkeypair --group public_accessInstanssin käynnistäminen kestää hetken. Instanssin pitäisi ilmestyä AWS:n konsoliin hetken päästä: https://console.aws.amazon.com/ec2/home?region=eu-west-1&#s=Instances. Ajossa olevat instanssit ja niiden tilan näkee myös komentoriviltä.
$ ec2-describe-instances
Pelkän tilatiedon voi listata seuraavasti.
$ ec2-describe-instance-status
Kun instanssi on käynnissä, voi sinne kirjautua sisään testkeypair-avaimella (SSH vaatii, että avaintiedostoon ei ole pääsyä kuin käyttäjällä itsellään. Aja siis chmod go-rwx avaintiedostonimi!).
$ ssh -i certs/testkeypair_private.key ubuntu@ec2-46-51-156-208.eu-west-1.compute.amazonaws.com
Huomaa, että instanssin DNS-nimi on joka luomisella erilainen. Yllä oleva komento ei siis toimi ilman pientä muuttamista.
Apachen virittäminen instanssille
$ sudo apt-get update $ sudo apt-get install apache2Koska asennus käynnistää automaattisesti Apache-prosessin, voi selaimella todeta, että Apache todellakin on ajossa: http://ec2-46-51-156-208.eu-west-1.compute.amazonaws.com/
Instanssien poistaminen
Hae ensin instanssin tunnus jo aiemmin kuvatulla komennolla.
$ ec2-describe-instances --headers Type ReservationID Owner Groups Platform RESERVATION r-3f686049 093338577702 public_access INSTANCE i-62873b2b ami-cc0e3cb8 ec2-46-51-156-208.eu-west-1.compute.amazonaws.com ip-10-228-230-131.eu-west-1.compute.internal running testkeypair 0 t1.micro 2011-12-04T00:10:46+0000 eu-west-1c aki-4feec43b monitoring-disabled 46.51.156.208 10.228.230.131 ebs paravirtual xen sg-12ac4965 default BLOCKDEVICE /dev/sda1 vol-ddf5fcb4 2011-12-04T00:11:06.000Z
Pysäytä luotu instanssi.
$ ec2-stop-instances i-62873b2b
Tuhoa instanssi.
$ ec2-terminate-instances i-62873b2b
Instanssin mukana häviää myös instanssiin kiinnitetty EBS-levy. Kun tähän asti on päästy, ei Amazon laskuta mitään edellä kokeillusta. Tuhottu instanssi näkyy listoissa vielä hetken aikaa, mutta häviää kokoaan alle tunnissa.