You are currently viewing Amazonin AWS ja S3: awscli

Amazonin AWS ja S3: awscli

Amazonin tarjoamat pilvipalvelut, jotka tunnetaan nimellä AWS, ovat kohtuullisen hyvin tunnettuja. On vaikea tehdä mitään webhommia, jossa ei olisi ainakin törmännyt merkintään S3. Se on AWS:n tiedostosäilö ja sitä voi käyttää CDN:nä, varastona tai backuppien kohteena. Tosin backupeille löytyy oma ja edullisempi ratkaisu, S3 Glacier. Itsellä CDN toimii AWS:n S3-bucketin ja CloudFrontin avulla, backupit menevät toiseen bucketiin (AWS:n nimi tiedostosäilölle), kolmas jakaa vapaita linkityksiä, neljännessä bucketissa on yksityisiä tiedostoja ja sähköpostit liikkuvat SES:n ja MailWorkin avulla.

Monet pyörittävät virtuaaliserveriään EC-palvelussa, mutta minä koin sen aivan liian kalliiksi ja jopa vaikeaksi. Saman saa edullisemmin ja vähemmällä vaivalla DigitalOceanin kautta.

Ylipäätään AWS:n hinnoittelun kanssa kannattaa olla hieman hereillä. Se on puhtaasti käyttöperusteista eikä aina ihan selvää. Amazon tarjoaa kulutuslaskureita, mutta niiden käyttö voi olla joskus einen haastavaa, kun ei esimerkiksi tiedä montako kutsua joku websivusto tekee ja saa. Mutta peruspalvelut – täysin oma luokitus – kuten juurikin S2, CloudFront ja SES ovat edullisia. Toki edullisuuskin on suhteellista. Jos kymppi tai kaksi kuukaudessa ei ole maksukyvyn tai -halun raameissa, niin kannattaa unohtaa Amazonin AWS-palvelut. Mutta jos maksat jotain tiedostojen siirrosta. CD:stä, postituslistoista, sähköpostista… niin kannattaa ehdottomasti vilkaista mitä AWS tarjoaa.

Jokainen noista palveluista toimii jonkun muun kautta. Sähköpostien liikuttamiseen serveriltä tarvitaan esimerkiksi postfix ja sen lisäksi WordPress vaatii oman lisäosan osatakseen keskutella serverin kanssa mailien liikuttamisesta. Backupit hoitaa usein joku erillinen ohjelma. Omien sähköpostien lukemiseen ja lähettämiseen käytetään omaa ohjelmaansa, on se sitten webmail, Outlook tai Thunderbird. Niille vain kerrotaan miten ne pääsevät tarvitsemaansa AWS:n palveluun.

Silloin tällöin, tai useasti, täytyisi päästä suoraan ainakin S3-tiedostosäilöön käsiksi. Yksi tapa on käyttää webhallintaa selaimella, mutta se ei ole kovinkaan käyttäjäystävällinen tapa, jos haluaisi siirtää rsyncillä tavaraa serveriltä S:3seen tai päinvastoin. AWS ei nimittäin puhu bashia eikö linuxia, vaan sillä on oma komentorivityökalunsa: awscli.

aswcli: asennus

awscli asentuu sen suurempia riitelemättä Ubuntu 2o.04:een, tai vastaavalla paketin asentavalla komennolla mihin tahansa linux-jakeluun. Mutta ennenkuin aloitetaan, niin on kaksi olettamusta:

  • sinulla on käyttäjätili AWS:ssä; jos ei ole, niin et sinä mitään tee awscli:llä
  • kirjaudu omassa Ubuntun shellissä rootin bashiin komennolla sudo -s

Asennukseen on kaksi vaihtoehtoa. Joko asentaa ykkösversion suoraan reposta tai sitten käsipelillä kakkosversion. Minä en ole koskaan vaivautunut selvittämään mikä noiden kahden aito käyttöön liittyvä ero on – ainakin tuetuissa python-versioissa oli jokin juttu. Mutta koska ykkönen myös päivittyy suoraan repon myötä ja koska kakkonen vaatii siihenkin käsitöitä, niin olen mennyt aina version 1 asennuksella. Eiköhän se jossain välissä päivity versioon 2, koska se ei ole täysin valmis muutenkaan vielä.

Taianomainen komento on:

apt install awscli

Jos mieluummin suosit pip-komentoa, niin tuoreimman saat tällä:

pip3 install awscli --upgrade --user

  • Minä en kylläkään saanut koskaan mitään toimimaan tuolla ja järjestelmä ilmoitti, että komentoa aws ei ole, mutta sen saa asennettua aptilla.

 

Tuo ei vielä riitä, koska täytyy kertoa AWS:n tunnistautumistiedot. awscli:n käytössä ei liikuteta tunnuksia ja salasanoja komentojen mukana, joka on arjessa vain helpotus – ne ovat nimittäin pitkiä merkkisarjoja ja aivan mahdottomia opetalla ulkoa.

Kirjautumistiedot asennetaan komennolla:

aws configure

Ensin kysytään AWS Access Key , joka on 20 merkkiä pitkä, ja 40 merkkiä pitkän AWS Secret Key. Ne olet saanut ja laittanut talteen luodessasi IAM-käyttäjän.

Sen jälkeen kysytään oletusaluetta ja vastaus hieman riippuu. Koska kyse on oletuksesta, niin se vaikuttaa enemmälti uusien asioiden luomisen helppouteen kuin varsinaiseen käyttöön. Alue, region, tarkoittaa käytettävää datakeskusta. Aiemmin käytin Irlantia (eu-west-1) koska muita ei ollut. Sitten siirryin käyttämään Saksan Frankfurtia (eu-central-1), koska siellä on myös käyttämäni DigitalOceanin palvelinkeskus plus se oli taas lähimpänä Suomea. Nykyään avaan uudet aina Tukholmaan (eu-north-1) ilmiselvistä syistä.

Viimeisenä halutaan tietää mikä on default output format. Minulla ei ole koskaan ollut minkäänlaista näkemystä tai käsitystä tuohon, joten olen aina vastannut json – koska niin kaikki neuvovat.

Jos jossain vaiheessa tulee tunne, että olisi halunnut valita jotain muuta, niin ei muutoksiin muuta tarvita kuin että ajaa aws configure uudestaan.

Asennus Windowsiin

awscli kannattaa asentaa myös windowsiin. Sen voi tehdä kahta kautta. Joko asentaa WSL:n ja Ubuntu-appin ja asentaa sinne linux-tapaan, tai asentaa sen tosiaan Windowsiin. Tai sitten tekee molemmat, kuten minä asian ratkaisin. Silloin ei ole väliä missä järjestelmässä on tekemässä töitään, aina onnistuu.

Kuten aina, niin tässäkin on useampi tapa asentaa. Helpointa on ladata MSI-paketti ja asentaa sillä. Työläämpi tie on asentaa ensin python3 ja sitten pipillä awscli.

Mennään helpoimmalla tavalla, koska minulle asennukset eivät ole itseisarvo, vaan että pääsen tekemään jotain. Lataa täältä MSI-paketti, klikkaa käyntiin ja seuraa ohjeita. Avast hermostui pariinkiin otteeseen ja halusi tarkistaa mitä ajetaan. Ei siinä mitään, se on Avastin tehtävä – mutta siitä aiheutuva paussi katkaisee asennuksen. Joten Avast on syytä hiljentää hetkeksi.

Kun asennus on valmis, niin avataan komentokehoite – tavallinen tai PowerShell – ja annetaan linux-asennuksen tapaan komennolla aws configure tarvittavat tiedot.

awscli ja käyttö

Asennus on se helpoin vaihe. Sen jälkeen pitäisi opetella hyödyntämään awscli:tä ja se onkin sitten oma juttunsa. Kannattaa varmaan aloittaa Amazonin ohjeista ja katsoa mitä komentoja awscli osaa. Tietysti aws help printtaa myös tietoa, mutta on enemmäkin komentolistaus, kuin sisällysluettelo. Kun hakeekin palvelun nimellä, niin tietoa tulee reippaammin:

aws s3 help

 

Jos haluat synkata paikallisen kansio S3:een, vaikka backupin takia, niin komento olisi:

aws s3 sync /lähtö/hakemisto s3://bucket/kansio/

  • käytän tätä moneen, mutta usein esimerkiksi eräänlaiseen valokuvien on-demand kopiointiin S3:seen (aliakset on elämää helpottava keksintö…)

Tavallinen kopiointi onnistuu vastaavan kaltaisella komennolla:

aws s3 cp /lähtö/hakemisto s3://bucket/kansio/

 

Jakke Lehtonen

Teen B2B-markkinoille sisällöntuottoa sekä UX-testauksia. Samaan liittyy myös koulutukset yrityksille ja webmaailman kanssa muutoin painiville. Serverien sielunelämää on joutunut ohessa opettelmaan. Toinen puoli toiminnasta on koirien ravitsemuksen ja ruokinnan suunnittelua sekä varsinkin omistajien kouluttamista hoitamaan koiriaan oikein ja vielä paremmin. Profiili: Jakke Lehtonen

Keskustele foorumilla Meta/KATISKA