amazon-s3Aan de slag met amazon-s3


Opmerkingen

Samenvatting van de documentatie

Van http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html

Amazon Simple Storage Service is opslag voor internet. Het is ontworpen om web-schaal computing gemakkelijker te maken voor ontwikkelaars.

Amazon S3 heeft een eenvoudige interface voor webservices die u kunt gebruiken om elke gewenste hoeveelheid gegevens op te slaan en op te halen, altijd en overal op internet. Het geeft elke ontwikkelaar toegang tot dezelfde zeer schaalbare, betrouwbare, snelle, goedkope infrastructuur voor gegevensopslag die Amazon gebruikt om zijn eigen wereldwijde netwerk van websites te runnen. De service is bedoeld om schaalvoordelen te maximaliseren en deze voordelen door te geven aan ontwikkelaars.

Ondersteuning voor taal en scripts

S3 is geen ontwikkeltaal als zodanig, maar een cloudplatform dat webservice-aanvragen ondersteunt. Er is een assortiment hulpmiddelen en SDK's die worden gepubliceerd door Amazon. De taal-SDK's bieden transparante toegang tot S3 door taken zoals webserviceaanvragen, authenticatie, sessiebeheer, token-vernieuwing, etc. af te handelen. Er zijn ook opdrachtregelinterfaces voor bash / windows / ios en powershell .

De S3 API

De S3-webservices-API is ondersteund door concurrerende leveranciers . Dit onderwerp behandelt de API momenteel niet rechtstreeks, dus de voorbeelden hier zijn niet nuttig voor het bouwen van applicaties die verbinding maken met concurrerende systemen die gebruikmaken van de S3 API.

versies

Vanaf 28 maart 2017 heeft de AWS CLI 174 versies, die netjes zijn gedocumenteerd in de CLI Release Notes . Amazon S3 heeft 66 versies, waarvan sommige de toevoeging van een nieuwe regio moeten aankondigen, en anderen moeten functionaliteit toevoegen. Deze zijn gedocumenteerd in de release-opmerkingen van S3 .

De voorbeelden

Met betrekking tot de voorbeelden die tot nu toe in deze sectie "Aan de slag" zijn getoond, is Amazon S3 nuttig voor ontwikkelaars voor de volgende gebruiksgevallen:

  • Bewaar of maak een back-up van bestanden in een krachtig, duurzaam systeem, waardoor deze taak wordt ontlast van niet-cloudarchitecturen: Linux- en Windows-bestandssystemen. Het is duur om de duurzaamheid en prestaties van S3 na te bootsen met behulp van lokale servers of EC2-exemplaren.
  • Wanneer netwerkbandbreedte een probleem is, bijvoorbeeld in gevallen waarin meerdere gelijktijdige gebruikers grote bestanden moeten downloaden, kan het verplaatsen van gegevens naar S3 worden gebruikt als een manier voor een toepassing om bandbreedtetekorten naar een datacenter of een lokale server te verminderen . Dit is een manier om een grote coderepository, afbeeldingen van virtuele machines, video of software-installatieprogramma's te distribueren. Uploadtijden van gebruikers en downloadtijden van gebruikers kunnen worden verbeterd. [Voor extra prestaties in zeer grote gebruikersscenario's kan een systeem voor het leveren van inhoud, zoals cloudfront, worden gebruikt om bestanden dichter bij de gebruikers te cachen.]
  • Uw applicatie moet een groot bestand maken of consumeren en u moet een manier hebben om gebruikers toegang te geven of te deponeren.
  • Uw applicatiedistributie is erg groot en u moet deze delen met gebruikers.
  • U stelt een pijplijn voor continue levering samen en host bijvoorbeeld delen van uw website op Amazon S3.

Op dit punt laten de voorbeelden niet zien hoe het volgende te doen:

  • De voorbeelden, hoewel sneller en duidelijker dan het typen van aws s3 help, do not mention some of the commands covered in help, such as aws s3 website`.
  • Hoe gebruikerstoegang te delen of te beperken. Zonder expliciete beperking zouden de voorbeelden alleen werken voor gebruikers die hetzelfde AWS-account delen.
  • Hoe gegevens te beveiligen via codering. Merk op dat AWS positie S3 als een hoger beveiligingsniveau heeft dan gegevens die zijn opgeslagen in EC2. AWS Security Best Practices, augustus 2016, p. 27

Veiligheid

AWS beveelt aan om S3 als een veilig platform te bekijken:

Tenzij u strengere bedrijfs- of nalevingsvereisten heeft, hoeft u geen extra beschermingslagen te introduceren die verder gaan dan die welke worden geboden door de beveiligde wereldwijde infrastructuur van AWS. ibid. p.2

In hun beveiligingsgids beveelt AWS aan om AWS-authenticatie te gebruiken als geschikt voor S3. ibid. p. 27

Bovendien biedt S3 server-side encryptie of client-side encryptie. Codering aan clientzijde wordt transparant geboden door de AWS Java SDK; sleutels hoeven niet op AWS te worden opgeslagen. ibid. p. 28

versies

versienaam Beschrijving aantekeningen Publicatiedatum
Amazon S3 op 13-12-2016 Voegt regio Londen toe aantekeningen 2016/12/13

AWS CLI S3-opdrachtenlijst

Lijst met veelgebruikte S3 AWS CLI-opdrachten

Maak een emmer

aws s3 mb s3://bucket-name
 

Verwijder de emmer

aws s3 rb s3://bucket-name
 

Lijst emmers

aws s3 ls
 

Lijst inhoud in de emmer

aws s3 ls s3://bucket-name
 

Lijstemmer met een pad

aws s3 ls s3://bucket-name/path
 

Kopieer bestand

aws s3 cp file.txt s3://my-bucket/ 
 

Bestanden synchroniseren

aws s3 sync . s3://my-bucket/path
 

Verwijder lokaal bestand

rm ./MyFile1.txt
 

Probeer te synchroniseren zonder de optie --delete - er gebeurt niets

aws s3 sync . s3://my-bucket/path
 

Synchroniseren met verwijdering - object wordt verwijderd uit bucket

aws s3 sync . s3://my-bucket/path --delete
 

Verwijder object uit bucket

aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
 

Synchroniseren met verwijdering - lokaal bestand is verwijderd

aws s3 sync s3://my-bucket/path . --delete
 

Synchroniseren met Infrequent Access-opslagklasse

aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA
 

Kopieer MyFile.txt in de huidige map naar s3: // my-bucket / path

aws s3 cp MyFile.txt s3://my-bucket/path/
 

Verplaats alle .jpg-bestanden in s3: // my-bucket / path naar ./MyDirectory

aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive
 

Maak een lijst van de inhoud van mijn emmer

aws s3 ls s3://my-bucket
 

Geef de inhoud van het pad weer in mijn-bucket

aws s3 ls s3://my-bucket/path
 

Verwijder s3: //my-bucket/path/MyFile.txt

aws s3 rm s3://my-bucket/path/MyFile.txt
 

Verwijder s3: // mijn-bucket / pad en alle inhoud

aws s3 rm s3://my-bucket/path --recursive
 

Hallo wereld Voorbeeld met behulp van Java

Dit voorbeeld probeert een bucket te maken met de naam 'hello-world' en, aangezien de bucket hello-world al door iemand anders in de wereldwijde naamruimte van S3 is gemaakt, wordt de volgende uitzondering gegenereerd. Verander 'hallo-wereld' in iets anders om de uitzondering te voorkomen door een emmer met een unieke naam te maken. De nieuwe bucket die zo is gemaakt, kan met de AWS-console worden verwijderd

Uitzondering in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: de gevraagde bucketnaam is niet beschikbaar. De bucket-naamruimte wordt gedeeld door alle gebruikers van het systeem. Selecteer een andere naam en probeer het opnieuw. (Service: Amazon S3; Statuscode: 409; Foutcode: BucketAlreadyExists; Verzoek-ID: ...

           import com.amazonaws.services.s3.AmazonS3;
           import com.amazonaws.services.s3.AmazonS3ClientBuilder;
           import com.amazonaws.services.s3.model.CreateBucketRequest;
           import com.amazonaws.services.s3.model.Bucket;

            /** S3 "hello world" example. */
            public class S3Hello {

                    /** Name of hello-world bucket -- must be globally unique.  The
                     *  bucket namespace is shared by all users of the system.
                     */
                    static final String BUCKET_NAME = "hello-world";

                    /** Creates bucket
                     *  @param args Command line arguments
                     */
                    public static void main(final String[] args) {

                            AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

                            CreateBucketRequest request
                                 = new CreateBucketRequest(BUCKET_NAME);

                            Bucket bucket = s3.createBucket(request);
                            System.out.println("S3 Hello World completed.");
                    }
            }
 

Dit voorbeeld vereist de volgende afhankelijkheden:

Hallo wereld met PowerShell

Dit voorbeeld verwacht een fout, aangezien de emmer voor de wereld er al is en S3 een globale naamruimte gebruikt.

    New-S3Bucket -BucketName "hello-world"
 

New-S3Bucket: de gevraagde bucketnaam is niet beschikbaar. De bucket-naamruimte wordt gedeeld door alle gebruikers van het systeem. Selecteer een andere naam en probeer het opnieuw.

Als u hallo-wereld vervangt door iets anders dat uniek is, wordt de bucket zonder fouten gemaakt en krijgt u het volgende resultaat:

    CreationDate                                      BucketName
    ------------                                      ----------
    3/30/2017 11:43:03 PM                             hello-world-832jklsdJF
 

Dit voorbeeld vereist de volgende afhankelijkheden:

Installatie van AWS CLI voor toegang tot S3

Aws cli installeren in Ubuntu / Debian Instance

sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure
 

Aws cli installeren met python

Met behulp van pip kunt u aws cli installeren in Windows, OS X en Linux

sudo pip install awscli
 

De AWS-opdrachtregelinterface configureren

In dit gedeelte wordt uitgelegd hoe u instellingen configureert die de AWS-opdrachtregelinterface gebruikt bij interactie met AWS, zoals uw beveiligingsreferenties en de standaardregio.

$ aws configure
AWS Access Key ID [None]: <Your access key >
AWS Secret Access Key [None]: <Your secret key>
Default region name [None]: us-west-2
Default output format [None]: json
 

Download de toegangssleutel en geheime sleutel van de accountpagina in AWS

Emmers maken

Gebruik de opdracht aws s3 mb om een nieuwe bucket te maken. Emmernamen moeten uniek zijn en moeten DNS-compatibel zijn. Emmernamen kunnen kleine letters, cijfers, koppeltekens en punten bevatten

aws s3 mb s3://bucket-name
 

Emmers verwijderen

Gebruik de opdracht aws s3 rb om een bucket te verwijderen. Standaard moet de bucket leeg zijn.

aws s3 rb s3://bucket-name
 

Om een niet-lege bucket te verwijderen, moet u de optie --force opnemen.

aws s3 rb s3://bucket-name --force
 

Aanbieding emmers

Gebruik de opdracht aws s3 ls om alle emmers of hun inhoud weer te geven

aws s3 ls
aws s3 ls s3://bucket-name
 

De volgende opdracht geeft de objecten in bucketnaam / pad weer

aws s3 ls s3://bucket-name/path
 

Synchroniseer bestanden tussen het lokale bestandssysteem en S3

aws s3 sync . s3://my-bucket/path 
 

Alle bestanden in de huidige map worden naar S3 geüpload. Om de bestanden van S3 naar de huidige map te downloaden, voert u deze uit

aws s3 sync s3://my-bucket/path .