amazon-s3 Zelfstudie
Aan de slag met amazon-s3
Zoeken…
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 |
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 .
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:
- Java geïnstalleerd met werkende console.
- AWS Java SDK geïnstalleerd. https://aws.amazon.com/sdk-for-java/
- Geloofsbrieven bestand
credentials
opgericht in .AWS onder uw home directory. https://aws.amazon.com/developers/getting-started/java/ - Referentie om admin- of 'bucket-rechten' te maken in S3. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets
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:
PowerShell. Zie http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html
Inloggegevens. Deze kunnen worden gemaakt met behulp van de AWS-console. Er zijn verschillende opties om deze te beheren met PowerShell. Hieronder is een eenvoudig voorbeeld voor installatie. Zie http://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html
PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7LAJD8A -SecretKey "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEjw9JFKS3" -StoreAs default