Enviar arquivos para o AWS S3 através de um <form/>
HTML hospedado no próprio S3.
As requisições de POST para o S3 requerem algumas informações no <form/>
para serem interpretadas como uma requisição confiável.
Para isto, devem estar no <form/>
, alguns campos ocultos são calculados a partir de credenciais válidas para a conta.
O desafio principal é gerar a policy corretamente em Base64 calculada com a aws signature key do usuário, que deve ser exatamente igual à estrutura enviada no html. Fonte: http://docs.aws.amazon.com/pt_br/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html.
Este projeto facilita este trabalho, expondo de maneira simples os dados requeridos e gerando os HTML necessários.
-
Criar um usuário no IAM apenas com
Programmatic access
e definir um grupo de permissões com acesso completo no S3 (Ex: AmazonS3FullAccess) -
Salvar os dados relacionados ao
awsAccessKeyId
eawsSecretAccessKey
, você irá precisar destas informações na próxima etapa -
Criar um bucket no S3 e definir as propriedades de static website hosting
-
Definir as permissões do Bucket para o acesso web
-
Instalar o NodeJS
-
Definir as propriedades do arquivo
/resources/aws.properties
-
Use os dados salvos no passo anterior para preencher as propriedades do usuário
-
CUIDADO:
Não salve em repositórios públicos suas informações deawsAccessKeyId
eawsSecretAccessKey
Acessar a pasta do projeto via terminal e executar os comandos abaixo:
-
npm install
-
node build.js
-
Fazer upload dos arquivos gerados no
/target
para o seu bucket -
Criar no bucket uma pasta com o mesmo nome definido na propriedade
bucketDestinyFolder
Adaptação do projeto de Christoph Gysin (Github)