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:
-
Crie um pré-assinado URL para obter um objeto do S3 usando. createPresignedRequest
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.