FAQ pourAWS SDK for PHP la version 3 - AWS SDK for PHP

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

FAQ pourAWS SDK for PHP la version 3

Quelles méthodes sont disponibles sur un client ?

Le kit AWS SDK for PHP utilise les descriptions de service et les méthodes _call() magiques dynamiques pour exécuter des opérations d’API. Vous trouverez la liste complète des méthodes disponibles pour un client de service Web dans la documentation d’API du client.

Que dois-je faire en cas d'erreur de certificat cURL SSL ?

Ce problème peut survenir lors de l'utilisation d'un bundleout-of-date CA avec cURL et SSL. Vous pouvez contourner ce problème en mettant à jour le bundle CA sur votre serveur ou en téléchargeant un autre bundleup-to-date CA directement depuis le site Web de cURL.

Par défaut, le kit AWS SDK for PHP utilisera le bundle d'autorité de certification (CA) configuré lors de la compilation de PHP. Vous pouvez modifier le bundle d'autorité de certification (CA) par défaut utilisé par PHP en modifiant le paramètre de configuration .ini PHP openssl.cafile à définir par le chemin d'accès d'un fichier d'autorité de certification (CA) sur disque.

Quelles versions d'API sont disponibles pour un client ?

Une option version est requise lors de la création d'un client. Une liste des versions d'API disponibles se trouve sur la page de documentation de l'API de chaque client : :aws-php-class :<index.html>. Si vous ne parvenez pas à charger une version d'API spécifique, il se peut que vous deviez mettre à jour votre copie du kit AWS SDK for PHP.

Vous pouvez spécifier la chaîne latest dans la valeur de configuration « version » pour utiliser la version d'API disponible la plus récente du fournisseur d'API de votre client (le fournisseur d'API par défaut recherchera les modèles d'API disponibles dans le répertoire src/data du kit SDK).

Avertissement

Nous vous déconseillons de spécifier latest dans une application en production. En effet, l'intégration d'une nouvelle version mineure du kit SDK comprenant une mise à jour d'API peut entraîner l'échec de votre application en production.

Quelles versions de région sont disponibles pour un client ?

L'option region est requise lors de la création d'un client et doit être spécifiée à l'aide d'une valeur de chaîne. Pour obtenir la liste desAWS régions et des points de terminaison disponibles, consultez la section AWSRégions et points de terminaison dans leRéférences générales AWS.

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

Pourquoi ne puis-je pas charger ou télécharger des fichiers de plus de 2 Go ?

Le type entier de PHP étant signé et de nombreuses plateformes utilisant les entiers 32 bits, le kit AWS SDK for PHP ne gère pas correctement les fichiers de plus de 2 Go sur une pile 32 bits (où « pile » inclut l'UC, le système d'exploitation, le serveur Web et le binaire PHP). Il s’agit d’un problème connu de PHP. Dans le cas de Microsoft Windows, seules les versions de PHP 7 prennent en charge les entiers 64 bits.

La solution recommandée consiste à utiliser une pile Linux 64 bits, telle que l’AMI Linux Amazon 64 bits, dotée de la dernière version de PHP.

Pour plus d’informations, consultez la section Taille de fichier PHP : valeurs renvoyées.

Comment savoir quelles données sont envoyées sur le réseau ?

Vous pouvez obtenir des informations de débogage, y compris les données envoyées sur le réseau, à l'aide de l'option debug d'un constructeur client. Lorsque cette option est définie sur true, l'ensemble des mutations de la commande exécutée, de la requête envoyée, de la réponse reçue et du résultat traité sont émises vers STDOUT. Cela inclut les données envoyées et reçues sur le réseau.

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

Comment puis-je définir des en-têtes arbitraires sur une requête ?

Vous pouvez ajouter des en-têtes arbitraires à une opération de service en ajoutant un intergiciel personnalisé à la Aws\HandlerList d'une Aws\CommandInterface ou d'une Aws\ClientInterface. L'exemple suivant montre comment ajouter unX-Foo-Baz en-tête à unePutObject opération Amazon S3 spécifique à l'aide de la méthodeAws\Middleware::mapRequest d'assistance.

Pour plus d’informations, consultez la section mapRequest.

Comment puis-je signer une requête arbitraire ?

Vous pouvez signer une requêteaws-php-class : PSR-7 arbitraire <Class-PSR.http.Message. RequestInterface.html> à l'aide de la classeaws-php-class : SignatureV4 du SDK<class-Aws.Signature.SignatureV4.html>.

Reportez-vous à la section Signature de demandes deCloudSearch domaine Amazon personnalisées avec laAWS SDK for PHP version 3 pour un exemple complet de procédure à suivre.

Comment puis-je modifier une commande avant de l'envoyer ?

Vous pouvez modifier une commande avant de l'envoyer en ajoutant un intergiciel personnalisé à la Aws\HandlerList d'une Aws\CommandInterface ou d'une Aws\ClientInterface. L'exemple suivant montre comment ajouter des paramètres de commande personnalisés à une commande avant de l'envoyer, principalement en ajoutant des options par défaut. Cet exemple utilise la méthode d'assistance Aws\Middleware::mapCommand.

Pour plus d’informations, consultez la section mapCommand.

Qu'est-ce qu'un CredentialsException ?

Si vous rencontrez une Aws\Exception\CredentialsException lors de l’utilisation du kit AWS SDK for PHP, cela signifie qu’aucune information d’identification n’a été fournie au kit SDK et que ce dernier n’est pas parvenu à trouver des informations d’identification dans l’environnement.

Si vous instanciez un client sans information d’identification, le kit SDK tente de trouver des informations d’identification à la première exécution d’une opération de service. Il intègre d'abord certaines variables d'environnement spécifiques, puis il recherche les informations d'identification du profil d'instance, qui ne sont disponibles que sur les instances Amazon EC2 configurées. En l'absence d'information d'identification, une Aws\Exception\CredentialsException est levée.

Si cette erreur s'affiche et que vous avez l'intention d'utiliser les informations d'identification du profil d'instance, vous devez vous assurer que l'instance Amazon EC2 sur laquelle le SDK s'exécute est configurée avec un rôle IAM approprié.

Si vous rencontrez cette erreur et que vous ne prévoyez pas d’utiliser les informations d’identification du profil d’instance, veillez à fournir des informations d’identification correctes au kit SDK.

Pour de plus amples informations, veuillez consulter Fiche gratuiteAWS SDK for PHP gratuite gratuite.

Le kit AWS SDK for PHP fonctionne-t-il sur HHVM ?

Le kit AWS SDK for PHP ne s'exécute actuellement pas sur HHVM et ce jusqu'à la résolution du problème concernant la sémantique yield dans HHVM.

Comment désactiver SSL ?

Vous pouvez désactiver SSL en définissant le paramètre scheme d'une méthode de fabrique de client sur « http ». Il est important de noter que tous les services ne prennent pas en charge l'accès http. Reportez-vous à la section AWSRégions et points de terminaison dans leRéférences générales AWS pour obtenir la liste des régions, des points de terminaison et des systèmes pris en charge.

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

SSL impose que toutes les données soient chiffrées et requiert davantage de paquets TCP que le protocole TCP seul pour établir une liaison de connexion. La désactivation de SSL peut donc se traduire par une légère amélioration des performances. Cependant, une fois SSL désactivé, toutes les données sont envoyées sur le réseau non chiffrées. Avant de désactiver SSL, prenez en compte les répercussions de sa désactivation sur la sécurité et le risque d'écoute illicite sur le réseau.

Que dois-je faire face à une « erreur d'analyse » ?

Le moteur PHP génère des erreurs d'analyse lorsqu'il rencontre une syntaxe qu'il ne comprend pas. Cette situation se produit quasi systématiquement lorsque le moteur tente d'exécuter du code écrit pour une autre version de PHP.

Si vous rencontrez une erreur d'analyse, vérifiez votre système et assurez-vous qu'il répond aux exigences et recommandations du SDK pour laAWS SDK for PHP version 3.

Pourquoi le client Amazon S3 décompresse les fichiers gzippés ?

Certains gestionnaires HTTP, dont le gestionnaire HTTP Guzzle 6 par défaut, gonflent le corps des réponses compressées par défaut. Vous pouvez remplacer ce comportement en définissant l’option HTTP decode_content sur false. Pour des raisons de rétrocompatibilité, cette valeur par défaut ne peut pas être modifiée, mais nous vous recommandons de désactiver le décodage du contenu au niveau du client S3.

Consultez la section decode_content pour obtenir un exemple de désactivation du décodage de contenu automatique.

Comment désactiver la signature corporelle dans Amazon S3 ?

Vous pouvez désactiver la signature du corps en définissant le paramètre ContentSHA256 de l'objet de commande sur Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD. Ensuite,AWS SDK for PHP ils l'utiliseront comme en-tête «x-amz-content-sha -256 » et comme somme de contrôle du corps de la requête canonique.

$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);

Comment le schéma de nouvelle tentative est-il géré dans le kit AWS SDK for PHP ?

Le kit AWS SDK for PHP possède un RetryMiddleware qui gère le comportement de nouvelle tentative. En ce qui concerne les codes de statut HTTP 5xx pour les erreurs de serveur, le kit SDK lance une nouvelle tentative sur 500, 502, 503 et 504.

Les exceptions de limitation, y compris RequestLimitExceeded, Throttling, ProvisionedThroughputExceededException, ThrottlingException, RequestThrottled et BandwidthLimitExceeded, sont également gérées avec les nouvelles tentatives.

Le kit AWS SDK for PHP intègre en outre un délai exponentiel avec un algorithme d'interruption et d'instabilité dans le schéma de nouvelle tentative. En outre, le comportement de nouvelle tentative par défaut est configuré comme3 pour tous les services, à l'exception d'Amazon DynamoDB, qui l'est10.

Comment gérer les exceptions avec des codes d'erreur ?

OutreAWS SDK for PHP lesException classes personnalisées, chaque clientAWS de service possède sa propre classe d'exception qui hérite de AwsExceptionAwsException. Vous pouvez affiner les types d'erreur à identifier avec les erreurs d'API spécifiques répertoriées dans la section Errors de chaque méthode.

Les informations relatives au code d'erreur sont disponibles avec getAwsErrorCode () deAws\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; } }