Mit PHP auf Ceph Object Gateway zugreifen
Verwenden Sie PHP-Scripts für S3 -Zugriff. Diese Prozedur stellt einige PHP-Beispielscripts bereit, um verschiedene Tasks auszuführen, wie z. B. das Löschen eines Buckets oder eines Objekts.
php v5.4.16 und aws-sdk v2.8.24getestet.Voraussetzungen
Zugriff auf Stammebene auf eine Entwicklungsworkstation.
Internetzugang.
Installieren Sie das Paket
php:[root@dev ~]# yum install phpLaden Sie das Zip-Archiv herunter von
aws-sdkfür PHP und extrahieren Sie es.Erstellen Sie ein Projektverzeichnis:
[user@dev ~]$ mkdir php_s3 [user@dev ~]$ cd php_s3Kopieren Sie das extrahierte Verzeichnis
awsin das Projektverzeichnis. Zum Beispiel:[user@dev ~]$ cp -r ~/Downloads/aws/ ~/php_s3/Erstellen Sie die Verbindungsdatei:
[user@dev ~]$ vim conn.phpFügen Sie den folgenden Inhalt in die Datei
conn.phpein:Syntax
<?php define(AWS_KEY, MY_ACCESS_KEY); define(AWS_SECRET_KEY, MY_SECRET_KEY); define(HOST, FQDN_OF_GATEWAY_NODE); define(PORT, 8080); // require the AWS SDK for php library require /PATH_TO_AWS/aws-autoloader.php; use Aws\S3\S3Client; // Establish connection with host using S3 Client client = S3Client::factory(array( base_url => HOST, port => PORT, key => AWS_KEY, secret => AWS_SECRET_KEY )); ?>Ersetzen Sie
FQDN_OF_GATEWAY_NODEdurch den FQDN des Gateway-Knotens. Ersetzen SiePATH_TO_AWSdurch den absoluten Pfad zum extrahierten Verzeichnisaws, das Sie in das Projektverzeichnisphpkopiert haben.Speichern Sie die Datei und beenden Sie den Editor.
Führen Sie die Datei aus:
[user@dev ~]$ php -f conn.php | echo $?Wenn Sie die Werte in der Datei korrekt angegeben haben, lautet die Ausgabe des Befehls
0.Erstellen Sie eine neue Datei zum Erstellen eines Buckets:
[user@dev ~]$ vim create_bucket.phpFügen Sie den folgenden Inhalt in die neue Datei ein:
Syntax
<?php include 'conn.php'; client->createBucket(array('Bucket' => 'my-new-bucket3')); ?>Speichern Sie die Datei und beenden Sie den Editor.
Führen Sie die Datei aus:
[user@dev ~]$ php -f create_bucket.phpErstellen Sie eine neue Datei zum Auflisten eigener Buckets:
[user@dev ~]$ vim list_owned_buckets.phpFügen Sie den folgenden Inhalt in die Datei ein:
Syntax
<?php include 'conn.php'; blist = client->listBuckets(); echo "Buckets belonging to " . blist['Owner']['ID'] . ":\n"; foreach (blist['Buckets'] as b) { echo "{b['Name']}\t{b['CreationDate']}\n"; } ?>Speichern Sie die Datei und beenden Sie den Editor.
Führen Sie die Datei aus:
[user@dev ~]$ php -f list_owned_buckets.phpDie Ausgabe sollte der nachfolgenden ähnlich sein:
my-new-bucket3 2020-01-21 10:33:19 UTCErstellen Sie ein Objekt, indem Sie zuerst eine Quellendatei namens
hello.txterstellen:[user@dev ~]$ echo "Hello World!" > hello.txtNeue PHP-Datei erstellen:
[user@dev ~]$ vim create_object.phpFügen Sie den folgenden Inhalt in die Datei ein:
Syntax
<?php include 'conn.php'; key = 'hello.txt'; source_file = './hello.txt'; acl = 'private'; bucket = 'my-new-bucket3'; client->upload(bucket, key, fopen(source_file, 'r'), acl); ?>Speichern Sie die Datei und beenden Sie den Editor.
Führen Sie die Datei aus:
[user@dev ~]$ php -f create_object.phpDadurch wird das Objekt
hello.txtim Bucketmy-new-bucket3erstellt.Erstellen Sie eine neue Datei zum Auflisten des Bucketinhalts:
[user@dev ~]$ vim list_bucket_content.phpFügen Sie den folgenden Inhalt in die Datei ein:
Syntax
<?php include 'conn.php'; o_iter = client->getIterator('ListObjects', array( 'Bucket' => 'my-new-bucket3' )); foreach (o_iter as o) { echo "{o['Key']}\t{o['Size']}\t{o['LastModified']}\n"; } ?>Speichern Sie die Datei und beenden Sie den Editor.
Führen Sie die Datei aus:
[user@dev ~]$ php -f list_bucket_content.phpDie Ausgabe ähnelt der folgenden:
hello.txt 12 Fri, 22 Jan 2020 15:54:52 GMTErstellen Sie eine neue Datei zum Löschen eines leeren Buckets:
[user@dev ~]$ vim del_empty_bucket.phpFügen Sie den folgenden Inhalt in die Datei ein:
Syntax
<?php include 'conn.php'; client->deleteBucket(array('Bucket' => 'my-new-bucket3')); ?>Speichern Sie die Datei und beenden Sie den Editor.
Führen Sie die Datei aus:
[user@dev ~]$ php -f del_empty_bucket.php | echo $?Wenn das Bucket erfolgreich gelöscht wurde, gibt der Befehl0als Ausgabe zurück.Wichtig: Das Löschen eines nicht leeren Buckets wird in PHP 2 und neueren Versionen vonaws-sdkderzeit nicht unterstützt.Hinweis: Bearbeiten Sie die Dateicreate_bucket.php, um leere Buckets zu erstellen, z. B.my-new-bucket4,my-new-bucket5. Bearbeiten Sie anschließend die Dateidel_empty_bucket.phpentsprechend, bevor Sie die leeren Buckets löschen.Erstellen Sie eine neue Datei zum Löschen eines Objekts:
[user@dev ~]$ vim delete_object.phpFügen Sie den folgenden Inhalt in die Datei ein:
Syntax
<?php include 'conn.php'; client->deleteObject(array( 'Bucket' => 'my-new-bucket3', 'Key' => 'hello.txt', )); ?>Speichern Sie die Datei und beenden Sie den Editor.
Führen Sie die Datei aus:
[user@dev ~]$ php -f delete_object.phpDadurch wird das Objekt
hello.txtgelöscht.