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.
Amazon S3 prefirmado URL con la AWS SDK for PHP versión 3
Puede autenticar ciertos tipos de solicitudes pasando la información requerida como parámetros de cadena de consulta en lugar de utilizar el encabezado de autorización. HTTP Esto resulta útil para permitir el acceso directo de navegadores de terceros a sus datos de Amazon S3 privados, sin enviar la solicitud por proxy. La idea es crear una solicitud «prefirmada» y codificarla para que el navegador del usuario final URL pueda recuperarla. Además, puede limitar una solicitud prefirmada especificando una fecha de vencimiento.
Los siguientes ejemplos muestran cómo:
-
Cree un objeto prefirmado URL para usarlo con un objeto S3. createPresignedRequest
Todo el código de ejemplo para el AWS SDK for PHP está disponible aquí en GitHub
Credenciales
Antes de ejecutar el código de ejemplo, configure sus AWS credenciales, tal y como se describe enCredentials. A continuación, importe las AWS SDK for PHP, tal y como se describe enUso básico.
Crear una solicitud prefirmada
Puede obtener el prefirmado URL en un objeto de Amazon S3 mediante el Aws\S3\S3Client::createPresignedRequest()
método. Este método acepta un objeto Aws\CommandInterface
y una marca de tiempo caducada y devuelve un objeto Psr\Http\Message\RequestInterface
prefirmado. Puede recuperar la firma previa URL del objeto mediante el getUri()
método de la solicitud.
El escenario más común es crear un objeto prefirmadoURL. GET
Importaciones
use Aws\Exception\AwsException;
use AwsUtilities\PrintableLineBreak;
use AwsUtilities\TestableReadline;
use DateTime;
require 'vendor/autoload.php';
Código de muestra
$command = $s3Service->getClient()->getCommand('GetObject', [
'Bucket' => $bucket,
'Key' => $key,
]);
Crear un prefirmado URL
Puede crear operaciones prefirmadas URLs para cualquier operación de Amazon S3 mediante el getCommand
método de creación de un objeto de comando y, a continuación, llamar al createPresignedRequest()
método con el comando. Cuando al final se envía la solicitud, asegúrese de utilizar el mismo método y los mismos encabezados que en la solicitud devuelta.
Código de muestra
try {
$preSignedUrl = $s3Service->preSignedUrl($command, $expiration);
echo "Your preSignedUrl is \n$preSignedUrl\nand will be good for the next 20 minutes.\n";
echo $linebreak;
echo "Thanks for trying the Amazon S3 presigned URL demo.\n";
} catch (AwsException $exception) {
echo $linebreak;
echo "Something went wrong: $exception";
die();
}
Cómo llegar URL a un objeto
Si solo necesita el público URL de un objeto almacenado en un bucket de Amazon S3, puede utilizar Aws\S3\S3Client::getObjectUrl()
este método. Este método devuelve un objeto sin firmar URL al bucket y la clave indicados.
Código de muestra
$preSignedUrl = $s3Service->preSignedUrl($command, $expiration);
importante
Lo que URL devuelve este método no se valida para garantizar la existencia del depósito o la clave, ni tampoco garantiza que el objeto permita el acceso no autenticado.