Häufig gestellte Fragen fürAWS 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.

Häufig gestellte Fragen fürAWS SDK for PHP Version 3

Welche Methoden sind auf einem Client verfügbar?

AWS SDK for PHP verwendet Servicebeschreibungen und dynamische magic__call()-Methoden, um API-Operationen auszuführen. Eine vollständige Liste der verfügbaren Methoden für einen Web-Service-Client finden Sie in der API-Dokumentation des Clients.

Was mache ich bei einem cURL SSL-Zertifikatsfehler?

Dieses Problem kann auftreten, wenn Sie einout-of-date CA-Bundle mit cURL und SSL verwenden. Sie können dieses Problem umgehen, indem Sie das CA-Bundle auf Ihrem Server aktualisieren oder ein weiteresup-to-date CA-Bundle direkt von der cURL-Website herunterladen.

Standardmäßig verwendet das AWS SDK for PHP das CA-Bundle, das beim Kompilieren von PHP konfiguriert wird. Sie können das von PHP verwendete Standard-CA-Bundle ändern, indem Sie die Konfigurationseinstellung openssl.cafile PHP .ini auf den Pfad einer CA-Datei auf der Festplatte setzen.

Welche API-Versionen sind für einen Client verfügbar?

Beim Erstellen eines Clients ist eine version-Option erforderlich. Eine Liste der verfügbaren API-Versionen finden Sie auf der API-Dokumentationsseite der einzelnen Kunden:aws-php-class:<index.html>. Wenn Sie eine bestimmte API-Version nicht laden können, müssen Sie möglicherweise Ihre Kopie von AWS SDK for PHP aktualisieren.

Sie können die Zeichenkette latest für den Konfigurationswert „version“ übergeben, um die aktuellste verfügbare API-Version zu verwenden, die der API-Provider Ihres Clients finden kann (der standardmäßige api_provider durchsucht das Verzeichnis src/data des SDK nach API-Modellen).

Warnung

Wir empfehlen nicht, latest in einer Produktionsanwendung zu verwenden, da das Einfügen einer neuen Nebenversion des SDK, die ein API-Update enthält, Ihre Produktionsanwendung beschädigen könnte.

Welche Regionsversionen sind für einen Client verfügbar?

Eine region-Option wird beim Erstellen eines Clients benötigt und über einen Zeichenfolgenwert angegeben. Eine Liste der verfügbarenAWS Regionen und Endpunkte finden Sie unter AWSRegionen und Endpunkte in derAllgemeine AWS-Referenz.

// Set the Region to the EU (Frankfurt) Region. $s3 = new Aws\S3\S3Client([ 'region' => 'eu-central-1', 'version' => '2006-03-01' ]);

Warum kann ich keine Dateien mit Größen über 2 GB hoch- oder herunterladen?

Da der Ganzzahl-Typ von PHP vorzeichensensitiv ist und viele Plattformen 32-Bit-Ganzzahlen verwenden, behandelt AWS SDK for PHP Dateien, die größer als 2 GB sind, auf einem 32-Bit-Stack (wobei der begriff „Stack“ CPU, Betriebssystem, Webserver und PHP-Binärdatei beinhaltet) nicht korrekt. Dies ist ein bekanntes Problem von PHP. Im Fall von Microsoft Windows 7 unterstützen nur Builds von PHP 7 64-Bit-Ganzzahlwerte.

Die empfohlene Lösung ist die Verwendung eines 64-Bit Linux-Stacks, wie die 64-Bit Amazon Linux AMI, mit der neuesten Version von PHP.

Weitere Informationen finden Sie unter PHP-Dateigröße: Rückgabewerte.

Wie kann ich sehen, welche Daten übertragen wurden?

Sie können Debugging-Informationen, einschließlich der über die Leitung gesendeten Daten, mit der Option debug in einem Client-Konstruktor erhalten. Wenn diese Option auf true gesetzt ist, werden alle Mutationen des ausgeführten Befehls, der gesendeten Anfrage, der empfangenen Antwort und des verarbeiteten Ergebnisses an STDOUT gesendet. Dies umfasst alle Daten, die gesendet und empfangen werden.

$s3Client = new Aws\S3\S3Client([ 'region' => 'us-standard', 'version' => '2006-03-01', 'debug' => true ]);

Wie kann ich zufällige Header für eine Anforderung festlegen?

Sie können beliebige Header zu einer Service-Operation hinzufügen, indem Sie eine benutzerdefinierte Middleware zur Aws\HandlerList eines Aws\CommandInterface oder Aws\ClientInterface hinzufügen. Das folgende Beispiel zeigt, wie Sie mithilfe derAws\Middleware::mapRequest Hilfsmethode einem bestimmten Amazon S3PutObject S3-Vorgang einenX-Foo-Baz Header hinzufügen.

Weitere Informationen finden Sie unter mapRequest.

Wie kann ich eine beliebige Anforderung signieren?

Sie können eine beliebige:aws-php-class: PSR-7-Anfrage <class-PSR.http.Message signieren. RequestInterface.html> unter Verwendung der:aws-php-class: SignatureV4-Klasse des SDK<class-Aws.Signature.SignatureV4.html>.

Ein vollständiges Beispiel dafür finden Sie unter Signieren von benutzerdefiniertenCloudSearch Amazon-Domain-Anfragen mitAWS SDK for PHP Version 3.

Wie kann ich einen Befehl vor dem Senden ändern?

Sie können einen Befehl vor dem Senden ändern, indem Sie der Aws\HandlerList einer Aws\CommandInterface oder Aws\ClientInterface eine benutzerdefinierte Middleware hinzufügen. Das folgende Beispiel zeigt, wie benutzerdefinierte Befehlsparameter zu einem Befehl hinzugefügt werden können, bevor er gesendet wird, wobei im Wesentlichen Standardoptionen hinzugefügt werden. Dieses Beispiel verwendet die Aws\Middleware::mapCommand-Helfermethode.

Weitere Informationen finden Sie unter mapCommand.

Was ist ein CredentialsException?

Wenn Sie ein Aws\Exception\CredentialsException während der Verwendung von AWS SDK for PHP angezeigt wird, bedeutet dies, dass das SDK keine Anmeldeinformationen erhalten hat und keine Anmeldeinformationen in der Umgebung finden konnte.

Wenn Sie einen Client ohne Anmeldeinformationen instanziieren, versucht das SDK bei der ersten Ausführung einer Serviceoperation, Anmeldeinformationen zu finden. Es checkt zuerst einige spezifische Umgebungsvariablen ein und sucht dann nach Anmeldeinformationen für Instanzprofile, die nur auf konfigurierten Amazon EC2 EC2-Instances verfügbar sind. Wenn keine Anmeldeinformationen angegeben oder zu finden sind, wird eine Aws\Exception\CredentialsException aufgeworfen.

Wenn dieser Fehler angezeigt wird und Sie beabsichtigen, die Anmeldeinformationen für das Instanzprofil zu verwenden, müssen Sie sicherstellen, dass die Amazon EC2 EC2-Instance, auf der das SDK ausgeführt wird, mit einer entsprechenden IAM-Rolle konfiguriert ist.

Wenn Sie diesen Fehler sehen und Sie nicht beabsichtigen, Instance-Profil-Anmeldeinformationen zu verwenden, müssen Sie sicher stellen, dass Sie dem SDK korrekt Anmeldeinformationen zur Verfügung stellen.

Weitere Informationen finden Sie unter Anmeldeinformationen fürAWS SDK for PHP Version 3.

Funktioniert AWS SDK for PHP auf HHVM?

AWS SDK for PHP läuft derzeit nicht auf HHVM und wird dies erst tun, wenn das Problem mit der Ertragssemantik in HHVM aufgelöst ist.

Wie deaktiviere ich SSL?

Sie können SSL deaktivieren, indem Sie den scheme-Parameter in einer Client-Factory-Methode auf „http“ setzen. Beachten Sie, dass nicht alle Services http-Zugriff unterstützen. Eine Liste der AWSRegionen, Endpunkte und derAllgemeine AWS-Referenz unterstützten Schemata finden Sie unter Regionen und Endpunkte in.

$client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-west-2', 'scheme' => 'http' ]);
Warnung

Da SSL eine Verschlüsselung aller Daten erfordert und mehr TCP-Pakete benötigt, um einen Verbindungs-Handshake durchzuführen als nur TCP, kann die Deaktivierung von SSL eine kleine Leistungssteigerung bedeuten. Bei deaktiviertem SSL werden jedoch alle Daten unverschlüsselt über die Leitung übertragen. Bevor Sie SSL deaktivieren, müssen Sie die Auswirkungen auf die Sicherheit und die Möglichkeit des Abhörens über das Netzwerk sorgfältig abwägen.

Was tue ich bei einem „Parse-Fehler“?

Die PHP-Engine gibt Parsing-Fehler aus, wenn sie auf Syntax stößt, die sie nicht versteht. Dies ist fast immer der Fall, wenn man versucht, Code auszuführen, der für eine andere Version von PHP geschrieben wurde.

Wenn Sie auf einen Analysefehler stoßen, überprüfen Sie Ihr System und stellen Sie sicher, dass es die Anforderungen und Empfehlungen des SDK fürAWS SDK for PHP Version 3 erfüllt.

Warum dekomprimiert der Amazon S3 S3-Client Gzip-Dateien?

Einige HTTP-Handler, einschließlich des standardmäßigen Guzzle 6 HTTP-Handlers, vergrößern standardmäßig komprimierte Antwortrümpfe. Sie können dieses Verhalten überschreiben, indem Sie den decode_content HTTP-Option auf false setzen. Aus Gründen der Abwärtskompatibilität kann diese Voreinstellung nicht geändert werden, wir empfehlen jedoch, die Inhaltsdekodierung auf S3-Client-Ebene zu deaktivieren.

Unter decode_content finden Sie ein Beispiel dafür, wie Sie automatische Inhaltsdekodierung deaktivieren können.

Wie deaktiviere ich Body Signing in Amazon S3?

Sie können die Rumpfsignatur deaktivieren, indem Sie den ContentSHA256-Parameter im Befehlsobjekt auf Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD setzen. AWS SDK for PHPDann verwenden sie ihn als 'x-amz-content-sha-256' Header und als Textchecksumme in der kanonischen Anfrage.

$s3Client = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-standard' ]); $params = [ 'Bucket' => 'foo', 'Key' => 'baz', 'ContentSHA256' => Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD ]; // Using operation methods creates command implicitly $result = $s3Client->putObject($params); // Using commands explicitly. $command = $s3Client->getCommand('PutObject', $params); $result = $s3Client->execute($command);

Wie wird das Wiederholungsschema in AWS SDK for PHP behandelt?

Das AWS SDK for PHP besitzt eine RetryMiddleware, die das Wiederholungsverhalten steuert. In Bezug auf 5xx HTTP-Statuscodes für Serverfehler versucht das SDK Wiederholungen für 500, 502, 503 und 504.

Ablehnungs-Ausnahmen, wie beispielsweise RequestLimitExceeded, Throttling, ProvisionedThroughputExceededException, ThrottlingException, RequestThrottled und BandwidthLimitExceeded, werden ebenfalls mit Wiederholungen verarbeitet.

AWS SDK for PHP integriert auch eine exponentielle Verzögerung mit einem Backoff- und Jitter-Algorithmus in das Wiederholungsschema. Darüber hinaus ist das standardmäßige Wiederholungsverhalten wie3 für alle Dienste konfiguriert, außer Amazon DynamoDB, das ja ist10.

Wie verarbeite ich Ausnahmen mit Fehlercodes?

NebenAWS SDK for PHP den benutzerdefiniertenException Klassen hat jederAWS Service-Client seine eigene Ausnahmeklasse, von der er erbt AwsExceptionAwsException. Sie können spezifischere Fehlerarten festlegen, die mit den API-spezifischen Fehlern abgefangen werden sollen, die im Errors-Abschnitt der einzelnen Methoden aufgelistet sind.

Fehlercodeinformationen sind mit getAwsErrorCode () von verfügbarAws\Exception\AwsException.

$sns = new \Aws\Sns\SnsClient([ 'region' => 'us-west-2', 'version' => 'latest', ]); try { $sns->publish([ // parameters ... ]); // Do something } catch (SnsException $e) { switch ($e->getAwsErrorCode()) { case 'EndpointDisabled': case 'NotFound': // Do something break; } }