segunda-feira, 19 de setembro de 2011

Introdução ao PHP AWS SDK


Introdução ao AWS PHP SDK
Amazon AWS S3 é uma solução de armazenamento robusto para a internet. Ele pode ser usado para armazenar e recuperar qualquer quantidade de dados, a qualquer momento, de qualquer lugar na web. S3 com que você tenha acesso aos altamente escalável, confiável, seguro, infra-estrutura, rápida e barata para o seu aplicativo web.



Nas próximas semanas vou estar criando uma série de tutoriais que mostram como fazer coisas incríveis usando Amazon S3 e outros Amazon AWS serviços. Este artigo é projetado para lhe dar um começar a correr em usar Amazon Web Services.


Amazônia tem prestado um apoio poderoso SDK para muitas plataformas diferentes, incluindo PHP. Neste artigo você vai aprender como começar a usar o SDK AWS para PHP usando exemplos práticos.


Pré-requisitos


A maioria dos web hosts têm uma configuração do PHP que irá apoiar o SDK sem nenhuma configuração adicional, mas se você tiver qualquer problema com qualquer um dos exemplos abaixo, consulte o Recursos no final deste artigo.


Além de um host regulares velho, você também vai precisar de uma conta Amazon AWS. Configurar uma em: http://aws.amazon.com


Além disso, você precisa ter certeza de que a Amazon AWS S3 serviço ativado na sua conta. Todos os meus exemplos vão utilizar esse serviço.


Instalação e configuração


1) Baixar
Comece por obter os arquivos SDK no seu servidor web. Existem algumas maneiras de conseguir isso. Meu favorito é baixar o SDK e fazer o upload dos arquivos para o servidor web. Fácil, certo? Você também pode usar PEAR e alguns outros métodos para instalar o SDK. Você pode baixar a versão mais recente aqui: http://pear.amazonwebservices.com/get/sdk-latest.zip


Para os fins deste artigo, vou fazer o upload do SDK para uma pasta na raiz do meu web chamado "awssdk".


2) Renomeie o arquivo de configuração


Uma vez que seus arquivos são carregados, você precisa atualizar seu arquivo de configuração. O primeiro passo é mudar o nome do arquivo de configuração do config-sample.inc.php para: config.inc.php


3) Configurações do arquivo de configuração
Agora abra o arquivo de configuração e inserir suas próprias credenciais. Há 10 ou mais constantes a ser definida nesse arquivo. Por enquanto você só precisa atualizar três deles:


define ( 'AWS_KEY' , 'Digite a sua Chave AWS AQUI' );
define ( 'AWS_SECRET_KEY' , 'ENTER A CHAVE SEGREDO AWS AQUI' );
define ( 'AWS_ACCOUNT_ID' , 'Digite seu ID CONTA AWS AQUI' );
Encontrar estes valores é fácil:


Basta inscrever-se no seu console de gerenciamento AWS.
Clique em "Account" no menu de navegação muito superior.
Clique em "Credenciais de Segurança".
Role para baixo até encontrar o seu AWS-chave e chave secreta. Sua Chave Secreta ficará oculta até que você clique em "Ver".
Desloque-se ainda mais para encontrar o seu número de conta.
Olá Baldes


Comece criando um arquivo chamado fun.php na mesma pasta onde carregou o SDK. Até agora, aqui está o que sua estrutura de diretório deve ser parecido:


/ Awssdk / sdk. classe . php
/ Awssdk / config.inc.php
/ Awssdk / fun.php
/ Awssdk / utilities
/ Awssdk / serviços
/ Awssdk / lib
/ Awssdk / extensions
/ Awssdk /.... (Alguns diretórios mais)
Nós vamos estar fazendo todos os nossos codificação em fun.php


1) Incluir o SDK AWS


, A fim de usar o SDK, ele precisa ser incluído em nosso código PHP. Se você configurar a sua estrutura de arquivos, como eu demonstrei acima, o seguinte código deve trabalhar para incluir o SDK:


<? Php
require_once 'sdk.class.php' ;
2) Criar um Bucket


O teste mais fácil que você pode fazer no SDK AWS é criar um balde no S3. Um balde S3 é como um "domínio" para armazenamento de arquivos. Uma vez que temos um balde podemos começar a criação, edição e exclusão de arquivos usando PHP. Aqui está o código:


<? Php
require_once 'sdk.class.php' ;
/ / Criar o objeto s3 do SDK
$ S3 = nova AmazonS3 ();
/ / Executar o método: Criar Bucket.
/ / Arg 1: "minha-única-bucket-name 'é o nome do seu novo balde.
/ / Arg 2: A região geográfica onde os dados serão armazenados.
/ / Arg 3: Diz Amazônia para tornar seus arquivos lidos por alguém como arquivos regulares hospedado em um servidor web.
$ Resposta = $ s3 -> create_bucket ( 'my-unique-balde-name' , AmazonS3:: REGION_US_E1, AmazonS3:: ACL_PUBLIC);
/ / A resposta vem de volta como um objeto XML simples
/ / Neste caso, só quero saber se tudo estava bem.
/ / Se não, o relatório a mensagem da resposta XML.
se ((int) $ resposta -> IsOK ()) {
    echo "Bucket Criado ' ;
} mais {
    echo (string) $ resposta -> corpo> Message;
}
Aqui estão algumas coisas para lembrar ao criar baldes S3:


Balde nomes são usados ​​para nomes de domínio, de modo que você só pode usar números, letras e traços.
Balde são nomes devem ser únicos para todos os usuários da Amazon AWS. Em outras palavras, "meu-unique-balde-name 'já está tomada (por mim) então você precisa para escolher seus próprios nomes balde único.
2) Baldes Lista


Agora que você já criou um balde, você pode usar o seguinte exemplo para listar todos os baldes na sua conta:


<? Php
$ S3 = nova AmazonS3 ();
$ Resposta = $ s3 -> list_buckets ();
foreach ( $ resposta -> corpo-> Baldes [0] como balde $ ) {
    echo (string) $ balde - Nome> "<br />".;
}
Olá Mundo


Agora que temos um balde, estamos prontos para enfrentar o mundo. O exemplo a seguir demonstra como criar arquivo de texto simples em um balde de AWS:


<? Php
require_once 'sdk.class.php' ;
$ S3 = nova AmazonS3 ();
/ / Cria objeto é bastante auto-explicativo:
/ / Arg 1: O balde onde o arquivo será criado.
/ / Arg 2: O nome do seu arquivo.
/ / Arg 3: um leque de opções.
/ / Neste caso estamos especificando o "corpo" opção
/ / Ea configuração ACL para permitir que este arquivo para ser lido por qualquer pessoa.
$ Resposta = $ s3 -> create_object ( 'my-unique-balde-name' , 'test1.txt " , conjunto (
'Body' => 'Olá mundo. Prazer em conhecê-lo. ' ,
'Acl' => AmazonS3:: ACL_PUBLIC,
));


se ((int) $ resposta -> IsOK ()) echo "Criei um arquivo! ' ;
Para testar se o arquivo enviado, tente acessá-lo usando seu URL: http://your-unique-bucket-name-here.s3.amazonaws.com/test1.txt


Use Case 1: Entrega de Conteúdo Público


O uso mais básico para S3 da Amazon serviço é fornecer armazenamento e entrega de conteúdo web, como imagens, vídeos e outras mídias. Você pode servir qualquer tipo de conteúdo usando o S3, incluindo streaming de vídeo e regular páginas web HTML. Amazon lida com todos os trabalhadores de ter certeza que seus arquivos estão seguros e que eles são sempre entregues rápido, tudo que você precisa fazer é obter seus arquivos em um balde S3! 
Nós já demonstrou como criar um arquivo de texto simples em S3. Os exemplos a seguir demonstram algumas opções adicionais para obter os arquivos acima em seu balde S3:


1) Fazer upload de um arquivo de seu servidor


Para este exemplo, fazer upload de um arquivo chamado "arquivo.jpg" em sua pasta awssdk. Nosso objetivo é fazer o upload do arquivo do seu servidor para o balde S3:


<? Php
require_once 'sdk.class.php' ;
$ S3 = nova AmazonS3 ();
/ / Cria objeto é bastante auto-explicativo:
/ / Arg 1: O balde onde o arquivo será criado.
/ / Arg 2: O nome do seu arquivo.
/ / Arg 3: um leque de opções.
/ / Neste caso estamos especificando a "fileUpload" opção (um arquivo no seu servidor)
/ / Ea configuração ACL para permitir que este arquivo para ser lido por qualquer pessoa.
$ Resposta = $ s3 -> create_object ( 'my-unique-balde-name' , 'in_the_cloud.jpg " , conjunto (
"FileUpload" => __DIR__. '/ arquivo.jpg' ,
'Acl' => AmazonS3:: ACL_PUBLIC,
));


/ / Verifique se está tudo ok.
se ((int) $ resposta -> IsOK ()) echo "Fiz upload de um arquivo do meu servidor! ' ;
Como no exemplo anterior, você pode verificar o upload, visualizando-o em seu navegador: http://my-unique-bucket-name-here.s3.amazonaws.com/in_the_cloud.jpg


2) Carregar um arquivo de outro site


Às vezes você deseja obter um arquivo de outra URL em S3. Isso é muito fácil:


<? Php
require_once 'sdk.class.php' ;
$ S3 = nova AmazonS3 ();
/ / Cria objeto é bastante auto-explicativo:
/ / Arg 1: O balde onde o arquivo será criado.
/ / Arg 2: O nome do seu arquivo.
/ / Arg 3: um leque de opções.
/ / Neste caso estamos especificando o "corpo" opção (abrir um arquivo da web),
/ / Estamos definindo o contentType do arquivo para navegadores saber a sua imagem um,
/ / E nós estamos definindo a configuração de ACL para permitir que este arquivo para ser lido por qualquer pessoa.
$ Resposta = $ s3 -> create_object ( 'my-unique-balde-name' , 'from_a_url.gif " , conjunto (
'Body' => file_get_contents ( ' http://www.google.com/logos/logo_newyear.gif ' ),
"ContentType ' => 'image / gif' ,
'Acl' => AmazonS3:: ACL_PUBLIC,
));
/ / Verifique se está tudo ok.
se ((int) $ resposta -> IsOK ()) echo "Fiz upload de um arquivo da Web! ' ;
2) Gerar um Miniatura
Digamos que você deseja gerar uma miniatura de uma imagem e você sabe o URL da imagem. Este exemplo vai funcionar:


<? Php
require_once 'sdk.class.php' ;
$ S3 = nova AmazonS3 ();
/ / Cria uma miniatura de uma URL
$ OriginalImage imagecreatefromgif = ( ' http://www.google.com/logos/logo_newyear.gif ' );
$ New_height = 30;
$ Width = imagesx ( $ originalImage );
$ Altura = imagesy ( $ originalImage );
$ New_width = rodada (( $ width * $ new_height ) / $ altura );
$ ImageResized = imagecreatetruecolor ( $ new_width , new_height $ );
imagecopyresampled ( $ imageResized , $ originalImage , 0, 0, 0, 0, $ new_width , new_height $ , $ largura , $ altura );
/ / Salva a imagem em um arquivo temporário.
$ Tempfilename = tempnam (__DIR__ ", newImage");
Imagejpeg ( $ imageResized , tempfilename $ , 100);
/ / Cria objeto é bastante auto-explicativo:
/ / Arg 1: O balde onde o arquivo será criado.
/ / Arg 2: O nome do seu arquivo.
/ / Arg 3: um leque de opções.
/ / Neste caso estamos especificando o "corpo" opção (abrir o arquivo de imagem temporário que criamos),
/ / Estamos definindo o contentType do arquivo para navegadores saber a sua imagem um,
/ / E nós estamos definindo a configuração de ACL para permitir que este arquivo para ser lido por qualquer pessoa.
$ Resposta = $ s3 -> create_object ( 'my-unique-balde-name' , 'from_php_script.jpg " , conjunto (
'Body' => file_get_contents ( $ tempfilename ),
"ContentType ' => 'image / jpeg' ,
'Acl' => AmazonS3:: ACL_PUBLIC,));
/ / Apague o arquivo temporário.
unlink ( $ tempfilename );
/ / Verifique se está tudo ok.
se ((int) $ resposta -> IsOK ()) echo "Fiz upload de um arquivo criado com PHP!" ;
Use Case 2: Entrega de Conteúdo Protegido


Em alguns casos, você deseja adicionar um pouco de segurança para as imagens de sua loja em S3. S3 oferece uma série de maneiras para aumentar a segurança, mas uma das maneiras mais fáceis é gerar URLs por tempo limitado.


Tempo limitado URLs são fáceis de gerado, e eles permitem que você permitir que seus usuários o download de conteúdo usando uma URL segura que irá expirar assim que você quer. Em alguns casos, você pode querer o seu conteúdo para expirar dentro de alguns minutos. 
Isso funciona muito bem para mostrar imagens protegidas em um site. Em outros casos, você pode querer permitir que o arquivo a ser baixado por alguns dias ou semanas, que pode funcionar melhor para a entrega de links para downloads por e-mail.


O primeiro passo para criar um arquivo seguro, é fazer o upload de um arquivo que não pode ser acessada por padrão na internet:


<? Php
require_once 'sdk.class.php' ;
$ S3 = nova AmazonS3 ();


/ / Cria objeto é bastante auto-explicativo:
/ / Arg 1: O balde onde o arquivo será criado.
/ / Arg 2: O nome do seu arquivo.
/ / Arg 3: um leque de opções.
/ / Neste caso estamos especificando a "fileUpload" opção (um arquivo no seu servidor)
/ / Ea configuração ACL para evitar que esse arquivo seja lido por qualquer pessoa na interent.
$ Resposta = $ s3 -> create_object ( 'my-unique-balde-name' , 'in_the_cloud_private.jpg " , conjunto (
"FileUpload" => __DIR__. '/ arquivo.jpg' ,
'Acl' => AmazonS3:: ACL_PRIVATE,
));


/ / Verifique se está tudo ok.
se ((int) $ resposta -> IsOK ()) echo "Fiz upload de um arquivo particular do meu servidor! ' ;
A URL regulares para este arquivo seria: http://my-unique-bucket-name.s3.amazonaws.com/in_the_cloud_private.jpg


Mas se você tentar essa URL, você obterá um erro de acesso negado. Isto é bom porque nós queremos que este arquivo a ser protegido. Mas vamos dizer que queria enviar um link para este arquivo para alguém por e-mail. Queremos torná-lo fácil para eles fazer o download, mas não queremos que apontam para sair em algum fórum em algum lugar onde ele pode ser baixado a qualquer momento por qualquer pessoa. 
A solução é criar um link para o arquivo que expira em 24 horas . Veja como é fácil:


<? Php
require_once 'sdk.class.php' ;
$ S3 = nova AmazonS3 ();


/ / Gerar uma URL segura
SecureURl $ = $ s3 -> get_object_url (
    'My-unique-balde-name' ,
    "In_the_cloud.jpg ' ,
    '24 Horas '
);


echo $ secureURl ;
Isso irá gerar uma URL parecida com esta:


Este link dará acesso ao arquivo por 24 horas, depois que o usuário receberá um erro de acesso negado.


Possibilidades ilimitadas


Esperemos que depois de tentar estes exemplos você se sentir confortável arquivos criar e acessar usando o serviço de armazenamento S3 da Amazon.


Nós apenas arranhamos a superfície do que é possível. Nas próximas semanas vou levá-lo mais profundo em muitas das maneiras que você pode usar S3 fazer coisas incríveis com seus sites e aplicações web.

Nenhum comentário :

Postar um comentário

Total de visualizações de página