Preguntas frecuentes sobre la versión 3 de AWS SDK for PHP - AWS SDK for PHP

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Preguntas frecuentes sobre la versión 3 de AWS SDK for PHP

¿Qué métodos están disponibles en un cliente?

AWS SDK for PHP utiliza las descripciones de servicio y los métodos magic __call() dinámicos para ejecutar las operaciones de la API. Puede encontrar una lista completa de métodos disponibles para un cliente de servicio web en la documentación de la API del cliente.

¿Qué debo hacer si aparece un error de certificado SSL de cURL?

Este problema puede ocurrir cuando se usa un paquete de CA desactualizado con cURL y SSL. Puede solucionar este problema actualizando el paquete de CA en su servidor o descargando un paquete de CA actualizado desde el sitio web de cURL directamente.

De forma predeterminada, AWS SDK for PHP utilizará el paquete de CA que se configura al compilar PHP. Puede cambiar el paquete de CA predeterminado que utiliza PHP modificando el valor de configuración del archivo .ini de PHP openssl.cafile que se va a establecer en la ruta de un archivo de CA en el disco.

¿Qué versiones de la API están disponibles para un cliente?

Disponer de una opción version es obligatorio a la hora de crear un cliente. Puede encontrar una lista de las versiones de la API disponibles en la página la documentación de la API de cada cliente ::aws-php-class:<index.html>. Si no consigue cargar una versión específica de la API, es posible que tenga que actualizar su copia de AWS SDK for PHP.

Puede proporcionar la cadena latest con el valor de configuración "version" para utilizar la versión de la API más reciente disponible que encuentre su proveedor de API del cliente (el api_provider predeterminado escaneará el directorio src/data del SDK en busca de modelos de la API).

aviso

No le recomendamos utilizar latest en una aplicación de producción, ya que integrar una nueva versión secundaria del SDK que incluya una actualización de la API podría romper su aplicación de producción.

¿Qué versiones de Region están disponibles para un cliente?

Disponer de una opción region es obligatorio a la hora de crear un cliente y se especifica mediante un valor de cadena. Para ver una lista de las regiones y puntos de conexión de AWSdisponibles, consulte Regiones y puntos de conexión deAWS en la Referencia general de AWS.

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

¿Por qué no puedo cargar o descargar archivos de más de 2 GB?

Dado que el tipo de número entero de PHP está firmado y muchas plataformas utilizan números enteros de 32 bits, AWS SDK for PHP no gestiona correctamente los archivos de más de 2 GB en una pila de 32 bits (bajo "pila" se engloba la CPU, el SO, el servidor web y el binario de PHP). Se trata de un problema de PHP conocido. En el caso de Microsoft Windows, solo crea enteros de 64 bits que admiten PHP 7.

La solución recomendada es utilizar una pila de Linux de 64 bits, como la AMI de Amazon Linux de 64 bits, con la versión más reciente de PHP instalada.

Para obtener más información, consulte PHP filesize: Return values.

¿Cómo puedo ver qué datos se envían a través de la red?

Puede obtener información de depuración, incluidos los datos enviados a través de la red, utilizando la opción debug de un constructor de clientes. Cuando esta opción se establece en true, todas las mutaciones del comando que se esté ejecutando, la solicitud que se envíe, la respuesta que se reciba y el resultado que se esté procesando se emiten a STDOUT. Esto incluye los datos que se envían y reciben a través de la red.

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

¿Cómo puedo establecer los encabezados arbitrarios en una solicitud?

Puede añadir cualquier encabezado arbitrario a una operación de servicio añadiendo un middleware personalizado a Aws\HandlerList de una Aws\CommandInterface o Aws\ClientInterface. En el siguiente ejemplo se muestra cómo añadir un encabezado X-Foo-Baz a una operación PutObject específica de Amazon S3; utilizando el método de ayuda Aws\Middleware::mapRequest.

Para obtener más información, consulte mapRequest.

¿Cómo puedo firmar una solicitud arbitraria?

Puede firmar una solicitud PSR-7 <class-Psr.Http.Message.RequestInterface.html> :aws-php-class: arbitraria usando la clase SignatureV4 <class-Aws.Signature.SignatureV4.html> :aws-php-class: del SDK.

Consulte Firma de solicitudes de dominio personalizadas de Amazon CloudSearch con la versión 3 de AWS SDK for PHP fpara ver un ejemplo completo de cómo hacerlo.

¿Cómo puedo modificar un comando antes de enviarlo?

Puede modificar un comando antes de enviarlo añadiendo un middleware personalizado a la Aws\HandlerList de una Aws\CommandInterface o Aws\ClientInterface. El siguiente ejemplo muestra cómo añadir parámetros de comando personalizados a un comando antes de que se envíe, básicamente añadiendo opciones predeterminadas. En este ejemplo se utiliza el método de ayuda Aws\Middleware::mapCommand.

Para obtener más información, consulte mapCommand.

¿Qué es una CredentialsException?

Si visualiza una excepción Aws\Exception\CredentialsException al utilizar AWS SDK for PHP, significa que el SDK se ha proporcionado sin credenciales y no ha podido encontrar credenciales en el entorno.

Si crea una instancia de un cliente sin credenciales, la primera vez que realice una operación de servicio el SDK intentará encontrar credenciales. Primero comprueba algunas variables de entorno específicas y, a continuación, busca las credenciales del perfil de instancia, que solo están disponibles en las instancias de Amazon EC2 configuradas. Si no se proporcionan o encuentran credenciales, se lanza una Aws\Exception\CredentialsException.

Si ve este error y pretende utilizar credenciales de perfil de instancia, debe asegurarse de que la instancia de Amazon EC2 en la que se está ejecutando el SDK se configure con un rol de IAM adecuado.

Si ve este error y no tiene previsto utilizar las credenciales del perfil de instancia, tiene que asegurarse de que está proporcionando las credenciales correctamente al SDK.

Para más información, consulte Credenciales para la versión 3 de AWS SDK for PHP.

¿AWS SDK for PHP se puede utilizar en HHVM?

Actualmente, AWS SDK for PHP no se ejecuta en HHVM y no se podrá ejecutar hasta que se resuelva el problema de la semántica de rendimiento en HHVM.

¿Cómo se deshabilita SSL?

Puede deshabilitar SSL estableciendo el parámetro scheme en un método de fábrica de cliente en "http". Es importante tener en cuenta que no todos los servicios admiten el acceso http. Para ver una lista de las regiones, puntos de enlace y esquemas admitidos, consulte AWS Regiones y puntos de conexión en la Referencia general de AWS.

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

Puesto que SSL requiere que se cifren todos los datos y necesita más paquetes TCP para completar un protocolo de conexión que únicamente TCP, es posible que si deshabilita SSL mejore ligeramente el rendimiento. Sin embargo, con SSL deshabilitado, todos los datos se envían cifrados a través de la red. Antes de deshabilitar SSL, debe considerar cuidadosamente las implicaciones de seguridad y la posibilidad de que se produzca un acceso no autorizado a través de la red.

¿Qué debo hacer cuando aparece un "Error de análisis"?

El motor PHP lanzará errores de análisis cuando encuentre sintaxis que no entiende. Esto suele ocurrir cuando intenta ejecutar código que se ha creado para una versión diferente de PHP.

Si encuentra un error de análisis, compruebe su sistema y asegúrese de que cumple los requisitos y recomendaciones del SDK para la versión 3 de AWS SDK for PHP.

¿Por qué el cliente de Amazon S3 descomprime los archivos gz?

Algunos controladores HTTP, incluido el controlador HTTP Guzzle 6 predeterminado, aumentará los cuerpos de respuesta comprimidos de forma predeterminada. Puede anular este comportamiento al configurar la opción HTTP decode_content en false. Por motivos de compatibilidad con versiones anteriores, este valor predeterminado no se puede cambiar, pero le recomendamos que deshabilite la descodificación de contenido en el nivel de cliente de S3.

Consulte decode_content para ver un ejemplo de cómo deshabilitar la descodificación automática de contenido.

¿Cómo puedo deshabilitar la firma corporal en Amazon S3?

Puede deshabilitar la firma de cuerpos estableciendo el parámetro ContentSHA256 en el objeto de comandos en Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD. A continuación, AWS SDK for PHP lo utilizará como el encabezado x-amz-content-sha-256 y la suma de comprobación del cuerpo en la solicitud canónica.

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

¿Cómo se gestiona el esquema de reintento en AWS SDK for PHP?

AWS SDK for PHP tiene un RetryMiddleware que gestiona el comportamiento de reintento. En términos de códigos de estado HTTP de 5xx para errores de servidor, el SDK reintenta en 500, 502, 503 y 504.

Las excepciones de limitación controlada, incluidas RequestLimitExceeded, Throttling, ProvisionedThroughputExceededException, ThrottlingException, RequestThrottled y BandwidthLimitExceeded, también se gestionan con reintentos.

AWS SDK for PHP también integra el retraso exponencial con un algoritmo de fluctuación y retardo en el esquema de reintento. Además, el comportamiento de reintento predeterminado se configura como 3 para todos los servicios, excepto Amazon DynamoDB, que es 10.

¿Cómo se gestionan las excepciones con códigos de error?

Además de las clases AWS SDK for PHPpersonalizadas para Exception, cada cliente de servicio de AWS tiene su propia clase de excepción que hereda de AwsExceptionAwsException. Puede determinar más tipos de error específicos a detectar consultando la lista de errores específicos de la API en la sección Errors de cada método.

La información del código de error está disponible en getAwsErrorCode () en Aws\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; } }