-
Allas-asiakasohjelmat
-
Python S3-rajapinnalla
Allaksen käyttö Pythonilla S3-protokollan kautta
Voit käyttää AWS SDK for Pythonia
(boto3) Allaksen käyttämiseen S3-protokollan kautta.
boto3 on Python-kirjasto, joka on kehitetty
Amazon S3 -tallennuksen ja muiden AWS-palveluiden käyttöön.
Yleinen datan analysoinnin työnkulku
- Lataa syötedata palveluun Allakseen käyttäen
boto3:a tai toista asiakasohjelmaa. - Lataa data Allaksesta paikalliselle laitteelle
(esim. omalle työasemalle tai CSC:n supertietokoneelle) käyttäen
boto3:a. - Analysoi datan paikallinen kopio.
- Kirjoita analyysin tulokset paikalliseen tallennustilaasi.
- Lataa tulokset palveluun Allakseen käyttäen
boto3:a.
Jotkin Python-kirjastot tukevat suoraa lukemista ja kirjoittamista S3:n kautta, kuten AWS SDK for pandas ja GDAL-pohjaiset kirjastot (paikkatietodatan käsittelyyn).
Muista välttää samojen objektien käsittelyä sekä S3:lla että SWIFTillä, sillä ne toimivat eri tavoin suurten objektien kanssa.
Asennus
Asennus omalle työasemalle
boto3 on saatavilla Python-versioille 3.8 ja uudemmille.
Sen voi
asentaa omalle laitteelle
käyttäen pip:iä tai conda:a.
Asennus CSC:n supertietokoneelle
Valmiiksi asennetuissa geoconda- ja
biopythontools-moduuleissa boto3 on jo
asennettuna. Jos haluat käyttää kirjastoa toisessa Python-ympäristössä, voit
käyttää pip:iä
lisätäksesi sen olemassa olevan moduulin päälle.
Tunnistetiedot yhden CSC-projektin käyttämiseen
boto3 käyttää sisäisesti aws-kirjastoa, joten jos haluat kopioida tunnistetietosi supertietokoneen ulkopuolelle, noudata aws:n ohjeita.
Tunnistetiedot useiden CSC-projektien käyttämiseen
Komennon allas-conf -m S3 käyttö on suoraviivaista,
mutta se ylikirjoittaa olemassa olevan tunnistetiedoston aina suoritettaessa,
mikä tekee useiden projektien kanssa työskentelystä hieman työlästä.
Siksi on suositeltavaa käyttää
Cloud storage configuration
-sovellusta Puhdin tai Mahdin
selainkäyttöliittymässä S3-yhteyksien määrittämiseen, koska nämä määritykset
tallennetaan
yksittäisiin S3-profiileihin.
-
Käytä Cloud storage configuration -sovellusta S3-yhteyksien eli remotejen määrittämiseen niille projekteille, joiden Allas-tallennustilaa haluat käyttää. Määritykset tallennetaan tiedostoon
~/.config/rclone/rclone.confsiinä supertietokoneessa, jonka selainkäyttöliittymää käytit niiden luomiseen. -
S3-määritysten access key ID- ja secret access key -merkintöihin täytyy lisätä etuliite
aws_, jottaboto3tunnistaa ne S3-tunnistetiedoiksi, mutta emme halua tehdä muutoksia suoraan tiedostoon~/.config/rclone/rclone.conf, koska muut ohjelmat käyttävät sitä. Käytä sen sijaansed-apuohjelmaa lukemaan määritystiedoston sisältö, tekemään tarvittavat muutokset ja kirjoittamaan muokattu sisältö uuteen tiedostoon, esimerkiksi~/.boto3_credentials. Tämä onnistuu seuraavalla komennolla.
Kun olet suorittanut nämä vaiheet, boto3:n käyttöön tarkoitetut S3-tunnistetietosi
on tallennettu projektikohtaisiin S3-profiileihin vaiheessa 2 luomaasi tiedostoon. Profiilien nimet
ovat muotoa s3allas-<project>, esimerkiksi s3allas-project_2001234.
Voit nyt käyttää näitä tunnistetietoja
boto3-resurssin luomiseen.
boto3:n käyttö
Luo boto3-resurssi
Vain yhdelle projektille määritetyt S3-tunnistetiedot:
# Create resource using credentials from the default location
# With newer versions of aws-library:
# - defining endpoint here is not any more mandatory, if it is given in the config file.
# - two checksum settings must be added that moving objects to/from Allas would work
import boto3
os.environ["AWS_REQUEST_CHECKSUM_CALCULATION"] = "when_required"
os.environ["AWS_RESPONSE_CHECKSUM_VALIDATION"] = "when_required"
s3_resource = boto3.resource('s3', endpoint_url='https://a3s.fi')
# Create resource using credentials from a profile
import boto3
import os
s3_credentials = '<credentials-file>' # e.g. '~/.boto3_credentials'
s3_profile = 's3allas-<project>' # e.g. 's3allas-project_2001234'
os.environ['AWS_SHARED_CREDENTIALS_FILE'] = s3_credentials
os.environ["AWS_REQUEST_CHECKSUM_CALCULATION"] = "when_required"
os.environ["AWS_RESPONSE_CHECKSUM_VALIDATION"] = "when_required"
s3_session = boto3.Session(profile_name=s3_profile)
s3_resource = s3_session.resource('s3', endpoint_url='https://a3s.fi')
Jokainen seuraava vaihe olettaa, että boto3-resurssi on luotu.
Luo ämpäri
Luo uusi ämpäri seuraavalla skriptillä:
Listaa ämpärit ja objektit
Listaa kaikki projektiin kuuluvat ämpärit:
Listaa kaikki ämpäriin kuuluvat objektit:
my_bucket = s3_resource.Bucket('examplebucket')
for my_bucket_object in my_bucket.objects.all():
print(my_bucket_object.key)
Lataa objekti
Lataa objekti:
Lataa objekti palveluun
Lataa pieni tiedosto nimeltä my_snake.txt palveluun ämpäriin snakebucket:
Poista ämpäreitä ja objekteja
Poista kaikki objektit ämpäristä:
Poista ämpäri; sen on oltava tyhjä: