Utilizzo della CLI di AWS

La CLI (command-line interface) ufficiale per AWS è compatibile con l'API S3 di IBM Cloud® Object Storage.

Scritta in Python, può essere installata da PyPI (Python Package Index) tramite pip install awscli. Per impostazione predefinita, le chiavi di accesso provengono da ~/.aws/credentials, ma possono anche essere impostate come variabili di ambiente.

Questi esempi sono stati generati utilizzando la versione 1.14.2 della CLI. Per controllare la versione installata, esegui aws --version.

Configura la CLI per connetterti a Object Storage

Per configurare la CLI AWS, immetti aws configure. Fornisci le tue credenziali HMAC e un nome regione predefinito. Il "nome regione" utilizzato da AWS S3 corrisponde al codice (LocationConstraint) utilizzato da Object Storage per definire una classe di archiviazione.

È possibile che si faccia riferimento a un elenco di codici validi per LocationConstraint nella guida alle classi di archiviazione.

aws configure
AWS Access Key ID [None]: {Access Key ID}
AWS Secret Access Key [None]: {Secret Access Key}
Default region name [None]: {Provisioning Code}
Default output format [None]: json

Ciò crea due file:

~/.aws/credentials:

[default]
aws_access_key_id = {Access Key ID}
aws_secret_access_key = {Secret Access Key}

~/.aws/config:

[default]
region = {Provisioning Code}
output = json

Puoi anche utilizzare le variabili di ambiente per impostare le credenziali HMAC:

export AWS_ACCESS_KEY_ID="{Access Key ID}"
export AWS_SECRET_ACCESS_KEY="{Secret Access Key}"

L'endpoint IBM COS può essere originato utilizzando l'opzione --endpoint-url e non può essere impostato nel file delle credenziali.

Comandi con sintassi di alto livello

I casi di utilizzo semplici possono essere realizzati utilizzando aws --endpoint-url {endpoint} s3 <command>. Per ulteriori informazioni sugli endpoint, vedi Endpoint e ubicazioni di archiviazione. Gli oggetti vengono gestiti utilizzando comandi shell familiari, ad esempio ls, mv, cp e rm. I bucket possono essere creati utilizzando mb ed eliminati utilizzando rb.

Elenca tutti i bucket all'interno di un'istanza del servizio

aws --endpoint-url {endpoint} s3 ls
2016-09-09 12:48  s3://bucket-1
2016-09-16 21:29  s3://bucket-2

Elenca gli oggetti all'interno di un bucket

aws --endpoint-url {endpoint} s3 ls s3://bucket-1
2016-09-28 15:36       837   s3://bucket-1/c1ca2-filename-00001
2016-09-09 12:49       533   s3://bucket-1/c9872-filename-00002
2016-09-28 15:36     14476   s3://bucket-1/98837-filename-00003
2016-09-29 16:24     20950   s3://bucket-1/abfc4-filename-00004

Crea un nuovo bucket

Nota: PII (Personally Identifiable Information): quando si denominano bucket o oggetti, non utilizzare alcuna informazione che possa identificare un utente (persona fisica) per nome, posizione o qualsiasi altro mezzo.

Se la regione predefinita nel file ~/.aws/config corrisponde alla stessa ubicazione dell'endpoint scelto, la creazione del bucket è semplice.

aws --endpoint-url {endpoint} s3 mb s3://bucket-1
make_bucket: s3://bucket-1/

Aggiungi un oggetto a un bucket

aws --endpoint-url {endpoint} s3 cp large-dataset.tar.gz s3://bucket-1
upload: ./large-dataset.tar.gz to s3://bucket-1/large-dataset.tar.gz

Puoi anche impostare una nuova chiave oggetto che sia diversa dal nome file:

aws --endpoint-url {endpoint} s3 cp large-dataset.tar.gz s3://bucket-1/large-dataset-for-project-x
upload: ./large-dataset.tar.gz to s3://bucket-1/large-dataset-for-project-x

Copia di un oggetto da un bucket a un altro all'interno della stessa regione:

$ aws --endpoint-url {endpoint} s3 cp s3://bucket-1/new-file s3://bucket-2/
copy: s3://bucket-1/new-file to s3://bucket-2/new-file

Eliminare un oggetto da un bucket

aws --endpoint-url {endpoint} s3 rm s3://mybucket/argparse-1.2.1.tar.gz
delete: s3://mybucket/argparse-1.2.1.tar.gz

Rimuovi un bucket

aws --endpoint-url {endpoint} s3 rb s3://bucket-1
remove_bucket: s3://bucket-1/

Crea URL pre - firmati

La CLI può creare gli URL prefirmati. Questi URL consentono un accesso pubblico temporaneo agli oggetti senza modificare i controlli di accesso esistenti.

$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file

È anche possibile impostare un TTL (time-to-live) per l'URL in secondi (il valore predefinito è 3600):

$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file --expires-in 600

Comandi con sintassi di basso livello

La CLI AWS consente anche le chiamate API dirette che forniscono le stesse risposte delle richieste HTTP dirette utilizzando il comando s3api.

Elenco dei bucket:

$ aws --endpoint-url {endpoint} s3api list-buckets
{
    "Owner": {
        "DisplayName": "{storage-account-uuid}",
        "ID": "{storage-account-uuid}"
    },
    "Buckets": [
        {
            "CreationDate": "2016-09-09T12:48:52.442Z",
            "Name": "bucket-1"
        },
        {
            "CreationDate": "2016-09-16T21:29:00.912Z",
            "Name": "bucket-2"
        }
    ]
}

Elenco degli oggetti all'interno di un bucket

$ aws --endpoint-url {endpoint} s3api list-objects --bucket bucket-1
{
    "Contents": [
        {
            "LastModified": "2016-09-28T15:36:56.807Z",
            "ETag": "\"13d567d518c650414c50a81805fff7f2\"",
            "StorageClass": "STANDARD",
            "Key": "c1ca2-filename-00001",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 837
        },
        {
            "LastModified": "2016-09-09T12:49:58.018Z",
            "ETag": "\"3ca744fa96cb95e92081708887f63de5\"",
            "StorageClass": "STANDARD",
            "Key": "c9872-filename-00002",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 533
        },
        {
            "LastModified": "2016-09-28T15:36:17.573Z",
            "ETag": "\"a54ed08bcb07c28f89f4b14ff54ce5b7\"",
            "StorageClass": "STANDARD",
            "Key": "98837-filename-00003",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 14476
        },
        {
            "LastModified": "2016-10-06T14:46:26.923Z",
            "ETag": "\"2bcc8ee6bc1e4b8cd2f9a1d61d817ed2\"",
            "StorageClass": "STANDARD",
            "Key": "abfc4-filename-00004",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 20950
        }
    ]
}

Configura un sito Web statico

aws --endpoint-url=https://<endpoint> s3 website s3://<bucketname>/ --index-document index.html --error-document error.html

Passi successivi

La descrizione dettagliata dell'API RESTful per IBM Cloud Object Storage è disponibile nella Documentazione API di compatibilitàS3 o nella Documentazione API di configurazione.