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.