Amazon S3 pré-assinado URL com a versão 3 AWS SDK for PHP - AWS SDK for PHP

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Amazon S3 pré-assinado URL com a versão 3 AWS SDK for PHP

Você pode autenticar certos tipos de solicitações passando as informações necessárias como parâmetros de sequência de caracteres de consulta em vez de usar o cabeçalho Authorization. HTTP Isso é útil para habilitar o acesso de navegadores de terceiros a seus dados privados do Amazon S3 sem um proxy na solicitação. A ideia é criar uma solicitação “pré-assinada” e codificá-la para URL que o navegador do usuário final possa recuperar. Além disso, você pode limitar uma solicitação pré-assinada, especificando um tempo de expiração.

Os exemplos a seguir mostram como:

Todo o código de exemplo para o AWS SDK for PHP está disponível aqui em GitHub.

Credenciais

Antes de executar o código de exemplo, configure suas AWS credenciais, conforme descrito emCredenciais. Em seguida, importe o AWS SDK for PHP, conforme descrito emUso básico.

Criação de uma solicitação pré-assinada

Você pode obter o pré-assinado URL para um objeto do Amazon S3 usando o Aws\S3\S3Client::createPresignedRequest() método. Esse método aceita um objeto Aws\CommandInterface e um timestamp expirado e retorna um objeto Psr\Http\Message\RequestInterface pré-assinado. Você pode recuperar o pré-assinado URL do objeto usando o getUri() método da solicitação.

O cenário mais comum é criar um GET objeto pré-assinadoURL.

Importações

use Aws\Exception\AwsException; use AwsUtilities\PrintableLineBreak; use AwsUtilities\TestableReadline; use DateTime; require 'vendor/autoload.php';

Código de exemplo

$command = $s3Service->getClient()->getCommand('GetObject', [ 'Bucket' => $bucket, 'Key' => $key, ]);

Criando um pré-assinado URL

Você pode criar pré-assinados URLs para qualquer operação do Amazon S3 usando getCommand o método para criar um objeto de comando e, em seguida, chamar createPresignedRequest() o método com o comando. Ao, finalmente, enviar a solicitação, use o mesmo método e os mesmos cabeçalhos da solicitação retornada.

Código de exemplo

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(); }

Chegando URL a um objeto

Se você só precisa do público URL para um objeto armazenado em um bucket do Amazon S3, você pode usar o Aws\S3\S3Client::getObjectUrl() método. Esse método retorna um valor não assinado URL para o bucket e a chave fornecidos.

Código de exemplo

$preSignedUrl = $s3Service->preSignedUrl($command, $expiration);
Importante

O URL retornado por esse método não é validado para garantir que o bucket ou a chave existam, nem esse método garante que o objeto permita acesso não autenticado.