Amazon S3 S3-Client mit mehreren Regionen mit AWS SDK for PHP Version 3 - AWS SDK for PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon S3 S3-Client mit mehreren Regionen mit AWS SDK for PHP Version 3

Das AWS SDK for PHP Version 3 stellt einen generischen Multi-Region-Client zur Verfügung, der mit jedem Service verwendet werden kann. Auf diese Weise können Benutzer angeben, AWS in welche Region ein Befehl gesendet werden soll, indem sie einen @region Eingabeparameter für einen beliebigen Befehl angeben. Darüber hinaus bietet das SDK einen multiregionalen Client für Amazon S3, der intelligent auf bestimmte Amazon S3 S3-Fehler reagiert und Befehle entsprechend umleitet. Dadurch können Benutzer den gleichen Client verwenden, um mit mehreren Regionen zu kommunizieren. Dies ist eine besonders nützliche Funktion für Benutzer des Amazon S3 Stream Wrappers mit AWS SDK for PHP Version 3, deren Buckets sich in mehreren Regionen befinden.

Grundlegende Verwendung

Das grundlegende Nutzungsmuster eines Amazon S3 S3-Clients ist dasselbe, unabhängig davon, ob ein Standard-S3-Client oder sein regionsübergreifendes Pendant verwendet wird. Der einzige Nutzungsunterschied auf Befehlsebene besteht darin, dass eine AWS Region mithilfe des @region Eingabeparameters angegeben werden kann.

// Create a multi-region S3 client $s3Client = (new \Aws\Sdk)->createMultiRegionS3(['version' => 'latest']); // You can also use the client constructor $s3Client = new \Aws\S3\S3MultiRegionClient([ 'version' => 'latest', // Any Region specified while creating the client will be used as the // default Region 'region' => 'us-west-2', ]); // Get the contents of a bucket $objects = $s3Client->listObjects(['Bucket' => $bucketName]); // If you would like to specify the Region to which to send a command, do so // by providing an @region parameter $objects = $s3Client->listObjects([ 'Bucket' => $bucketName, '@region' => 'eu-west-1', ]);
Wichtig

Wenn Sie den Amazon S3 S3-Client für mehrere Regionen verwenden, werden Sie nicht auf permanente Weiterleitungsausnahmen stoßen. Ein standardmäßiger Amazon S3 S3-Client löst eine Instanz ausAws\S3\Exception\PermanentRedirectException, wenn ein Befehl in die falsche Region gesendet wird. Ein Multi-Region-Client leitet den Befehl stattdessen an die richtige Region zurück.

Cache für die Bucket-Region

Amazon S3 S3-Clients mit mehreren Regionen verwalten einen internen Cache der AWS Regionen, in denen sich die jeweiligen Buckets befinden. Standardmäßig hat jeder Client seinen eigenen In-Memory-Cache. Wenn Sie einen Cache zwischen Clients oder Prozessen freigeben möchten, stellen Sie Ihrem Multi-Region-Client eine Instance von Aws\CacheInterface als Option bucket_region_cache zur Verfügung.

use Aws\DoctrineCacheAdapter; use Aws\Sdk; use Doctrine\Common\Cache\ApcuCache; $sdk = new Aws\Sdk([ 'version' => 'latest', 'region' => 'us-west-2', 'S3' => [ 'bucket_region_cache' => new DoctrineCacheAdapter(new ApcuCache), ], ]);