IBM Cloud Docs
AWS-CLI verwenden

AWS-CLI verwenden

Die offizielle Befehlszeilenschnittstelle (CLI) für AWS ist mit der IBM Cloud® Object Storage-S3-API kompatibel.

Sie wurde in Python geschrieben und kann über Python Package Index mithilfe von pip install awscli installiert werden. Standardmäßig stammen die Zugriffsschlüssel aus ~/.aws/credentials, sie können jedoch auch als Umgebungsvariablen festgelegt werden.

Diese Beispiele wurden mit Version 1.14.2 der Befehlszeilenschnittstelle generiert. Führen Sie aws --version aus, um zu überprüfen, welche Version auf Ihrem System installiert ist.

Befehlszeilenschnittstelle zur Verbindung mit Object Storage konfigurieren

Um die AWS-Befehlszeilenschnittstelle zu konfigurieren, müssen Sie aws configure eingeben. Geben Sie dann Ihre HMAC-Berechtigungsnachweise und einen standardmäßigen Regionsnamen an. Der von AWS S3 verwendete 'Regionsname' entspricht dem Code (LocationConstraint), der von Object Storage zum Definieren einer Speicherklasse verwendet wird.

Eine Liste gültiger Codes für LocationConstraint finden Sie im Handbuch für Speicherklassen.

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

Mit dieser Angabe werden zwei Dateien erstellt:

~/.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

Zum Festlegen der HMAC-Berechtigungsnachweise können Sie auch Umgebungsvariablen verwenden:

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

Der IBM COS-Endpunkt muss anhand der Option --endpoint-url abgeleitet werden und kann nicht in der Berechtigungsnachweisdatei festgelegt werden.

Befehle mit allgemeiner Syntax

Einfache Anwendungsfälle können mit aws --endpoint-url {endpoint} s3 <command> erreicht werden. Weitere Informationen zu Endpunkten enthält Endpunkte und Speicherpositionen. Objekte werden anhand gängiger Shellbefehle wie beispielsweise ls, mv, cp und rm verwaltet. Buckets können mit dem Befehl mb erstellt und mit rb gelöscht werden.

Alle Buckets einer Serviceinstanz auflisten

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

Objekte in einem Bucket auflisten

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

Neues Bucket erstellen

Hinweis: Personenbezogene Daten (Personally Identifiable Information, PII): Verwenden Sie beim Benennen von Buckets oder Objekten keine Informationen, die einen Benutzer (natürliche Person) anhand des Namens, des Standorts oder auf andere Weise identifizieren können.

Wenn für die Standardregion in der Datei ~/.aws/config derselbe Standort wie für den ausgewählten Endpunkt angegeben ist, dann ist die Bucketerstellung ein einfacher Vorgang.

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

Objekt zu Bucket hinzufügen

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

Alternativ hierzu können Sie einen neuen Objektschlüssel festlegen, der sich vom Dateinamen unterscheidet:

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

Objekt aus Bucket in anderes Bucket in derselben Region kopieren:

$ 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

Objekt in Bucket löschen

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

Bucket entfernen

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

Vorab signierte URLs erstellen

Die Befehlszeilenschnittstelle kann bereits signierte URLs erstellen. Diese URLs ermöglichen den temporären öffentlichen Zugriff auf Objekte, ohne dass hierzu vorhandene Zugriffssteuerungsmechanismen geändert werden müssen.

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

Es ist außerdem möglich, eine Lebensdauer für die URL in Sekunden festzulegen (Standardwert ist 3600):

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

Befehle mit maschinennaher Syntax

Die AWS-Befehlszeilenschnittstelle ermöglicht auch direkte API-Aufrufe, die die gleichen Antworten wie direkte HTTP-Anforderungen zurückgeben. Hierzu wird der Befehl s3api verwendet.

Buckets auflisten:

$ 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"
        }
    ]
}

Objekte in einem Bucket auflisten

$ 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
        }
    ]
}

Statische Website konfigurieren

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

Nächste Schritte

Eine detaillierte Beschreibung der REST-konformen API für IBM Cloud Object Storage finden Sie in der Dokumentation zurS3 Compatibility API oder in der Dokumentation zur Konfigurations-API.