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
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
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
Die empfohlene Lösung ist die Verwendung eines 64-Bit Linux-Stacks
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
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; } }