amazon-s3 Tutorial
Iniziare con Amazon-s3
Ricerca…
Osservazioni
Riepilogo dalla documentazione
Da http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html
Amazon Simple Storage Service è lo spazio di archiviazione per Internet. È progettato per rendere il calcolo su scala Web più semplice per gli sviluppatori.
Amazon S3 dispone di una semplice interfaccia di servizi Web che è possibile utilizzare per archiviare e recuperare qualsiasi quantità di dati, in qualsiasi momento, da qualsiasi posizione sul Web. Offre a qualsiasi sviluppatore l'accesso alla stessa infrastruttura di archiviazione di dati altamente scalabile, affidabile, veloce e poco costosa che Amazon utilizza per gestire la propria rete globale di siti Web. Il servizio mira a massimizzare i benefici di scala e a trasferire tali benefici agli sviluppatori.
Supporto linguistico e di scripting
S3 non è un linguaggio di sviluppo in quanto tale, ma una piattaforma cloud che supporta le richieste di servizi Web. Esiste un assortimento di strumenti e SDK pubblicati da Amazon. Gli SDK della lingua forniscono un accesso trasparente a S3 gestendo attività quali richieste di servizi Web, autenticazione, gestione delle sessioni, rinnovo dei token, ecc. Esistono anche interfacce della riga di comando per bash / windows / ios e powershell .
L'API S3
L'API dei servizi Web S3 è stata supportata da fornitori concorrenti . Questo argomento al momento non copre direttamente l'API, quindi gli esempi qui riportati non sarebbero utili per la creazione di applicazioni che si collegano a sistemi concorrenti che sfruttano l'API S3.
versioni
A partire dal 28 marzo 2017, la CLI di AWS ha 174 versioni, che sono chiaramente documentate nelle Note di rilascio della CLI . Amazon S3 ha 66 versioni, alcune delle quali annunciano l'aggiunta di una nuova regione e altre aggiungono funzionalità. Questi sono documentati nelle note di rilascio S3 .
Gli esempi
Rispetto agli esempi mostrati finora in questa sezione "Guida introduttiva", Amazon S3 è utile per gli sviluppatori per i seguenti casi d'uso:
- Archiviare o eseguire il backup di file in un sistema durevole e ad alte prestazioni, quindi scaricare questa attività da architetture non cloud: i file system Linux e Windows. È costoso ricreare la durabilità e i livelli di prestazioni di S3 utilizzando server locali o istanze EC2.
- Quando la larghezza di banda della rete è un problema, ad esempio, nei casi in cui più utenti simultanei devono scaricare file di grandi dimensioni, lo spostamento dei dati su S3 può essere utilizzato come un modo per ridurre la carenza di larghezza di banda in un datacenter o in un server locale . Questo è un modo di distribuire un repository di codice di grandi dimensioni, immagini di macchine virtuali, video o programmi di installazione del software. È possibile migliorare i tempi di caricamento degli utenti e i tempi di download degli utenti. [Per prestazioni aggiuntive in scenari di utenti molto grandi, è possibile utilizzare un sistema di distribuzione dei contenuti come cloudfront per memorizzare i file più vicini agli utenti.]
- L'applicazione deve creare o utilizzare un file di grandi dimensioni e è necessario un modo per consentire agli utenti di accedervi o depositarla.
- La distribuzione della tua applicazione è molto grande e devi condividerla con gli utenti.
- Stai mettendo insieme una pipeline di consegna continua e, ad esempio, l'hosting di porzioni del tuo sito web su Amazon S3.
A questo punto, gli esempi non mostrano come eseguire quanto segue:
- Gli esempi, anche se più veloci e più chiari di digitare
aws s3 help, do not mention some of the commands covered in help, such as
aws s3 website`. - Come condividere o limitare l'accesso degli utenti. Senza restrizioni esplicite, gli esempi funzionerebbero solo per gli utenti che condividono lo stesso account AWS.
- Come proteggere i dati tramite crittografia. Tieni presente che AWS posiziona S3 con un livello di sicurezza più elevato rispetto ai dati archiviati in EC2. Best practice per la sicurezza di AWS, agosto 2016, p. 27
Sicurezza
AWS consiglia di visualizzare S3 come piattaforma sicura:
A meno che non si abbiano requisiti aziendali o di conformità più rigorosi, non è necessario introdurre livelli di protezione aggiuntivi oltre a quelli forniti dall'infrastruttura globale sicura di AWS. ibid. p.2
Nella loro guida alla sicurezza , AWS consiglia di utilizzare l'autenticazione AWS come adatta per S3. ibid. p. 27
Inoltre, S3 fornisce crittografia lato server o crittografia lato client. La crittografia lato client viene fornita in modo trasparente da AWS Java SDK; le chiavi non devono essere archiviate su AWS. ibid. p. 28
Versioni
nome della versione | descrizione | gli appunti | data di rilascio |
---|---|---|---|
Amazon S3 il 12-12-2016 | Aggiunge la Regione di Londra | gli appunti | 2016/12/13 |
Installazione di AWS CLI per l'accesso a S3
Installare aws cli in Ubuntu / Debian Instance
sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure
Installare aws cli usando python
Usando pip puoi installare aws cli in windows, OS X e Linux
sudo pip install awscli
Configurazione dell'interfaccia della riga di comando di AWS
Questa sezione spiega come configurare le impostazioni utilizzate dall'interfaccia della riga di comando di AWS quando si interagisce con AWS, come le credenziali di sicurezza e l'area predefinita.
$ 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
Ottieni la chiave di accesso e la chiave segreta dalla pagina dell'account in AWS
Creazione di secchi
Utilizzare il comando aws s3 mb per creare un nuovo bucket. I nomi dei bucket devono essere univoci e devono essere conformi al DNS. I nomi dei bucket possono contenere lettere minuscole, numeri, trattini e punti
aws s3 mb s3://bucket-name
Rimozione dei secchi
Per rimuovere un bucket, utilizzare il comando aws s3 rb. Il bucket predefinito dovrebbe essere vuoto.
aws s3 rb s3://bucket-name
Per rimuovere un bucket non vuoto, è necessario includere l'opzione --force.
aws s3 rb s3://bucket-name --force
Elenco dei bucket
Per elencare tutti i bucket o il loro contenuto, utilizzare il comando aws s3 ls
aws s3 ls
aws s3 ls s3://bucket-name
Il seguente comando elenca gli oggetti in nome-secchio / percorso
aws s3 ls s3://bucket-name/path
Sincronizza i file tra il file system locale e S3
aws s3 sync . s3://my-bucket/path
Caricherà tutti i file nella directory corrente su S3. Per scaricare i file da S3 alla directory corrente eseguire
aws s3 sync s3://my-bucket/path .
Lista comandi AWS CLI S3
Elenco dei comandi CLI S3 AWS comunemente utilizzati
Crea un secchio
aws s3 mb s3://bucket-name
Rimuovi il secchio
aws s3 rb s3://bucket-name
Elenco delle benne
aws s3 ls
Elenca i contenuti all'interno del bucket
aws s3 ls s3://bucket-name
List Bucket con un percorso
aws s3 ls s3://bucket-name/path
Copia il file
aws s3 cp file.txt s3://my-bucket/
Sincronizza i file
aws s3 sync . s3://my-bucket/path
Elimina il file locale
rm ./MyFile1.txt
Tenta di sincronizzare senza l'opzione --delete - non succede nulla
aws s3 sync . s3://my-bucket/path
Sincronizzazione con eliminazione: l'oggetto viene eliminato dal bucket
aws s3 sync . s3://my-bucket/path --delete
Elimina oggetto dal bucket
aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
Sincronizzazione con eliminazione: il file locale viene eliminato
aws s3 sync s3://my-bucket/path . --delete
Sincronizzare con la classe di archiviazione di accesso non frequente
aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA
Copia MyFile.txt nella directory corrente su s3: // my-bucket / path
aws s3 cp MyFile.txt s3://my-bucket/path/
Sposta tutti i file .jpg in s3: // my-bucket / percorso in ./MyDirectory
aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive
Elenca il contenuto di my-bucket
aws s3 ls s3://my-bucket
Elenca il contenuto del percorso nel mio bucket
aws s3 ls s3://my-bucket/path
Elimina s3: //my-bucket/path/MyFile.txt
aws s3 rm s3://my-bucket/path/MyFile.txt
Elimina s3: // my-bucket / percorso e tutto il suo contenuto
aws s3 rm s3://my-bucket/path --recursive
Ciao World Example utilizzando Java
Questo esempio tenta di creare un bucket chiamato "hello-world" e, poiché il bucket ciao-mondo è già stato creato da qualcun altro nello spazio dei nomi globale di S3, genera la seguente eccezione. Cambia "ciao-mondo" con qualcos'altro per evitare l'eccezione creando un bucket con un nome univoco. Il nuovo bucket così creato può essere eliminato utilizzando la console AWS
Eccezione nel thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: il nome del bucket richiesto non è disponibile. Lo spazio dei nomi bucket è condiviso da tutti gli utenti del sistema. Si prega di selezionare un nome diverso e riprovare. (Servizio: Amazon S3; Codice di stato: 409; Codice di errore: BucketAlreadyExists; ID richiesta: ...
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.");
}
}
Questo esempio richiede le seguenti dipendenze:
- Java installato con console di lavoro.
- AWS Java SDK installato. https://aws.amazon.com/sdk-for-java/
- Le credenziali dei file delle
credentials
impostate in .aws nella tua home directory. https://aws.amazon.com/developers/getting-started/java/ - Credenziali per avere diritti di amministratore o "crea bucket" in S3. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets
Ciao mondo usando PowerShell
Questo esempio si aspetta un errore, poiché il bucket ciao-mondo esiste già e S3 utilizza uno spazio dei nomi globale.
New-S3Bucket -BucketName "hello-world"
New-S3Bucket: il nome del bucket richiesto non è disponibile. Lo spazio dei nomi bucket è condiviso da tutti gli utenti del sistema. Si prega di selezionare un nome diverso e riprovare.
Se sostituisci hello-world con qualcos'altro che è unico, il bucket verrà creato senza errori e otterrai il seguente risultato:
CreationDate BucketName ------------ ---------- 3/30/2017 11:43:03 PM hello-world-832jklsdJF
Questo esempio richiede le seguenti dipendenze:
PowerShell. Vedi http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html
Credenziali. Questi possono essere creati utilizzando la console AWS. Esistono diverse opzioni per la gestione di questi utilizzando PowerShell. Di seguito è riportato un semplice esempio per l'installazione. Vedi 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