

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 para PHP
<a name="faq"></a>

## ¿Qué métodos están disponibles en un cliente?
<a name="what-methods-are-available-on-a-client"></a>

AWS SDK para PHP utiliza las descripciones de servicio y los [métodos magic \$1\$1call()](http://www.php.net/manual/en/language.oop5.overloading.php#object.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](https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html) del cliente.

## ¿Qué debo hacer si aparece un error de certificado SSL de cURL?
<a name="what-do-i-do-about-a-curl-ssl-certificate-error"></a>

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](http://curl.haxx.se/docs/caextract.html).

De forma predeterminada, AWS SDK para 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?
<a name="what-api-versions-are-available-for-a-client"></a>

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 para 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\$1provider 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?
<a name="what-region-versions-are-available-for-a-client"></a>

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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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?
<a name="why-can-t-i-upload-or-download-files-larger-than-2-gb"></a>

Dado que el tipo de número entero de PHP está firmado y muchas plataformas utilizan números enteros de 32 bits, AWS SDK para 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](http://www.google.com/search?q=php+2gb+32-bit). 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](https://aws.amazon.com/amazon-linux-ami/), 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](http://docs.php.net/manual/en/function.filesize.php#refsect1-function.filesize-returnvalues).

## ¿Cómo puedo ver qué datos se envían a través de la red?
<a name="how-can-i-see-what-data-is-sent-over-the-wire"></a>

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?
<a name="how-can-i-set-arbitrary-headers-on-a-request"></a>

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](guide_handlers-and-middleware.md#map-request).

## ¿Cómo puedo firmar una solicitud arbitraria?
<a name="how-can-i-sign-an-arbitrary-request"></a>

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 para PHP](service_cloudsearch-custom-requests.md) fpara ver un ejemplo completo de cómo hacerlo.

## ¿Cómo puedo modificar un comando antes de enviarlo?
<a name="how-can-i-modify-a-command-before-sending-it"></a>

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](guide_handlers-and-middleware.md#map-command).

## ¿Qué es una CredentialsException?
<a name="what-is-a-credentialsexception"></a>

Si visualiza una excepción `Aws\Exception\CredentialsException` al utilizar AWS SDK para 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 para PHP](guide_credentials.md).

## ¿AWS SDK para PHP se puede utilizar en HHVM?
<a name="does-the-sdk-php-work-on-hhvm"></a>

Actualmente, AWS SDK para 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](https://github.com/facebook/hhvm/issues/6807).

## ¿Cómo se deshabilita SSL?
<a name="how-do-i-disable-ssl"></a>

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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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"?
<a name="what-do-i-do-about-a-parse-error"></a>

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 para PHP](getting-started_requirements.md).

## ¿Por qué el cliente de Amazon S3 descomprime los archivos gz?
<a name="why-is-the-s3-client-decompressing-gzipped-files"></a>

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\$1content](guide_configuration.md#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\$1content](guide_configuration.md#http-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?
<a name="how-do-i-disable-body-signing-in-s3"></a>

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 para 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 para PHP?
<a name="how-is-retry-scheme-handled-in-the-sdk-php"></a>

AWS SDK para 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 para 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?
<a name="how-do-i-handle-exceptions-with-error-codes"></a>

Además de las clases AWS SDK para PHPpersonalizadas para `Exception`, cada cliente de servicio de AWS tiene su propia clase de excepción que hereda de [AwsExceptionAwsException](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Exception.AwsException.html). 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 ()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Exception.AwsException.html#_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;
    }
}
```