🍀 Seu apoio é crucial para mantermos o canal independente e continuarmos a produzir os conteúdos com a qualidade que você já conhece: pix@uminventorqualquer.com.br ⚜ Curso Cloud Computing Premium: www.cloudstorm.academy/ 💬 Comunidade Cloud no Discord: www.cloudstorm.club/ 📝Aprenda inglês na Cambly: www.cambly.com/invite/INVENTOR?st=022722&sc=4
Galera, não esqueçam de compartilhar esse vídeo com sua equipe de trabalho, faculdade ou dos projetos que você está participando, é só assim que mais pessoas a sua volta vão aprender AWS com você e todos terão assuntos em comum para estudarem juntos e crescerem muito mais rápido.
Bem, eu pausei o vídeo para dizer que essas pausas no vídeos são muito mais do que simples pausas, da uma sensação boa de participação, interatividade, torna muito mais que um vídeo e sim uma aula, melhor que minha faculdade, que nem vou dizer qual foi a unip que eu fiz. perfeito, Obrigado, Obrigado.
hehehe, não tem que pedir perdão de nada, fico feliz que tenha nos encontrado, espero que possa nos ajudar compartilhando o nosso conteúdo para que mais pessoas possam aprender com ele.
Uma dica de vídeo pra você, é mostrar um pouco da Oracle Cloud que não chega nem aos pés de uma AWS em relação a estrutura mas tem um plano always free que permite você brincar bastante na hora de aprender, e ajudar muito quem precisa testar algumas coisas, eu sempre subo lá meus servidores pra testar minhas aplicações antes de colocar em produção, abraço e muito sucesso
Oi Samuel, com certeza aceito sugestões, e adoro o tema, acabo falando um pouco sobre system design nos vídeos mas ainda não parei para pensar uma série só sobre o assunto, mas vou colocar na lista porque vai ser muito legal falar sobre isso. Obrigado pelos elogios e por curtir o canal 👍
@@GaragemDoInventor Sério mesmo, não lembro a última vez que fiquei tão empolgado maratonando vídeos em canais de tecnologia. Obrigado por compartilhar seu conhecimento.
CARAMBA, eu tava no caminho certo então! Ví esse seu vídeo que não é uma boa ideia fazer upload pro backend pra depois fazer upload pro S3. Eu fiz o upload diretamente pelo ReactJS, mas as credenciais da AWS eu tava colocando lá e isso é um problema né. Vou ver esse vídeo até o fim, achei interesantíssimo!
Eu fiz esse exemplo só que me c#, e vai para o S3, mas fica protegido, ele não exibe. Eu baixei o arquivo, olhei as propriedade, e nas propriedades de conteúdo, que deveria estra protegido com valor não, está vazio. Se eu fizer upload do mesmo arquivo, mas pela interface da AWS, exibe normalmente, e quando baixo o arquivo e verifico as propriedades está como esperado. Só quando usa u URL assinada está com problema.
muito bom o conteúdo, conseguir aprender bastante, mas eu estou com um problema que é quando eu pego o arquivo no s3 vem uma ReadableStream e não estou conseguindo baixar o arquivo pelo react, no node funciona usando o Buffer, mas no react não estou encontrando como fazer o mesmo processo, poderia me ajudar?
Gustavo, se você está recebendo um ReadableStream eu presumo que você esteja usando o SDK no frontend, eu não recomendaria fazer isso por expor as chaves. No caso de consumir no frontend eu recomendaria habilitar o modo de leitura pública do bucket. No caso de alterações eu recomendo fazer isso somente a partir do backend.
Otimo conteudo! Estou iniciano em AWS, mas gostaria de saber se é possivel exportar uma consulta do SQL Server para um bucket? Se sim, você teria algum video de exemplo? O banco precisa está no RDS ?
Muito bom!!! Só fiquei com uma dúvida. Se para cada arquivo que subir é criado um chave, esse modelo atenderia bem se eu precisar subir umas lista de arquivos? Seria possível utilizar a mesma chave para vários arquivos e melhorar a performance um pouco?
Vagner, há inúmeras maneiras diferentes de melhorar a performance para uma lista. Eu pessoalmente preferiria gerar a lista de chaves de uma única vez através da minha API e então subir os arquivos com um gerenciador de upload no browser para paralelizar os uploads. Se forem muito arquivo pequenos eu faria todos subirem zipados e faria uma tela para o usuário organizá-los depois de subir. Se forem arquivos grandes eu colocaria eles em uma fila de upload (plugin JS) pois a conexão do usuário pode não aguentar paralelizar. Enfim, tem muitas formas de acelerar e manter a segurança dos dados ao mesmo tempo. Espero ter ajudado
@@GaragemDoInventor ajudou muito!!! Muito obrigado. Dentre os canais de Devops que tem no TH-cam, o seu é sem dúvida o melhor, ja indiquei pra bastante gente. Parabéns.
Olá tudo bem? Seria possível e conveniente criar uma chave para a aplicação fazer o upload, da mesma forma que criou a chave para processar o download do arquivo?
Quanto tento rodar o código em localhost:3000 numa aplicação nextjs da erro " has been blocked by CORS policy: No 'Access-Control-Allow-Origin " ja fiz de tudo e o erro persiste
Giliard, o CORS diz que você está fazendo uma requisição com um domínio diferente do que o servidor espera. No S3 você consegue habilitar seu domínio ou liberar todos, busque no google por "AWS S3 CORS configuration" e vai achar vários exemplos
Bom dia, muito bom o conteúdo. Uma duvida, qual a vantagem em deixar esse gerador do pre-signed URL em uma função lambda? Claro além da escalabilidade. Não seria viável deixar esse gerador dentro da própria API para conseguir fazer validações? Por que, o problema principal a ser resolvido seria ter maior controle de banda que entra na API e não esgargalar a mesma. Mas seria um gargalo grande colocar essa função na API? Eu estava utilizando lambdas para processar as imagens.
Ótima questão Pedro. A principal delas além da escalabilidade, é separar códigos não essenciais ou que não dependam de regras de negócios complexas, assim você simplifica sua API e diminui a incidência de deploys com ajustes que não afetam a regra de negócio em si, reduzindo o risco de bugs por tabela. Mas sim, você pode colocá-la dentro da sua API sem problema algum, mas, se for só pela validação, você também pode usar a função lambda para fazer uma chamada para sua API só pra validar, a vantagem dessa abordagem é que se alguém estiver tentando te sacanear com um bot por exemplo, você pode fazer pré-validações antes mesmo de bater na sua API e evitar que ela fique instável durante o ataque. Se ficou confusa minha explicação me avise que tento explicar de outra forma.
Ok, entendi. Muito obrigado! Você pretende trazer algum conteúdo sobre nignx? Como a maneira certa de utilizar ele em uma infra com loadbalance igual da playlist de AWS. Alem como configurar de maneira correta. Eu sempre me perco em saber qual configuração é minimamente suficiente. Kkkk. Mas obrigado pela resposta!
Sim NGinx é uma das principais ferramentas que eu uso em grandes projetos além do Kong que também é baseado no NGinx, quero trazer mais conteúdo sobre isso com certeza
Que qualidade 👏👏, sempre muito bom seus conteúdos, Parabéns, eu só fiquei com algumas dúvidas, essa função lambda existe apenas pra gerar essa url temporária? Todo o processo de upload é realizado diretamente pela s3? Porque incluir na própria api? E imagino que pode acabar ficando caro se houver um fluxo constante de requisições nessa função
SkyLevel, você tem 1 milhão de segundos de requisições por mês grátis, claro, proporcional à quantidade de memória utilizada. Você pode fazer essa mesma chamada pela pre-signed url de dentro da sua API sem problemas, mas o objetivo foi demonstrar que é possível fazer isso completamente independente da sua estrutura principal, e usar esse recurso como serverless mesmo que sua aplicação seja monolítica. Obrigado por acompanhar o canal, é sempre um prazer responder seus comentários 🤝
@@GaragemDoInventor Entendi, agradeço bastante tanto pelo vídeo quanto pela resposta, eu acabo muitas vezes preferindo reutilizar a mesma estrutura e criar algumas rotas a mais para não tornar a precificação mais complexa
ENtão você recomendaria criar 2 buckets, um temporário para receber o objeto do front-end e outro definitivo e no intermedio desses dois, uma função lambda que faz essa ponte entre os objetos do bucket temporario pro definitivo?
uma pergunta sobre o fluxo, no cliente (browser) o usuario preenche o formulario com a imagem e manda para a API do back-end, a api do back-end manda o arquivo pro lambda que sobe pro s3? ou o cliente manda direto pro lambda?
Na verdade, o usuário vai solicitar a url assinada para o lambda, com ela ele envia o arquivo direto para o S3, e a única coisa que ele manda pra sua API é o nome do arquivo que foi salvo no S3 para que sua API possa processá-lo, ou move-lo
Como seria se fosse fazer upload de vários arquivos, pq a rota só aceita um arquivo porque o Key é único, se a cada arquivo que for subir tiver que fazer uma chamada para lambda entregar uma rota diferente caio no mesmo problema de um múltiplas threads!?
Oi David, Você pode modificar a função para te retornar quantos token vc precisar em uma única chamada. E não, você não cai no mesmo problema, na verdade é aí que você se livra de uma grande problema, passando toda a responsabilidade de gerir multiplas conexões de upload paralelas para o S3 ao invés de travar essas threads no seu servidor http ;)
@@GaragemDoInventor Realmente acabei de implementar uma funcionalidade com Reactjs e python no back-end onde preciso subir grandes quantidade de imagens, fiz um loop requisitando uma key diferente para cada imagem e rodou liso, fiz um teste com 560 imagens e foram salvas em menos de 18 segundo, abraços Inventor excelente conteúdo me salvou.
🍀 Seu apoio é crucial para mantermos o canal independente e continuarmos a produzir os conteúdos com a qualidade que você já conhece: pix@uminventorqualquer.com.br
⚜ Curso Cloud Computing Premium: www.cloudstorm.academy/
💬 Comunidade Cloud no Discord: www.cloudstorm.club/
📝Aprenda inglês na Cambly: www.cambly.com/invite/INVENTOR?st=022722&sc=4
Galera, não esqueçam de compartilhar esse vídeo com sua equipe de trabalho, faculdade ou dos projetos que você está participando, é só assim que mais pessoas a sua volta vão aprender AWS com você e todos terão assuntos em comum para estudarem juntos e crescerem muito mais rápido.
Bem, eu pausei o vídeo para dizer que essas pausas no vídeos são muito mais do que simples pausas, da uma sensação boa de participação, interatividade, torna muito mais que um vídeo e sim uma aula, melhor que minha faculdade, que nem vou dizer qual foi a unip que eu fiz. perfeito, Obrigado, Obrigado.
Obrigado Ricardo a idéia é essa, ajudar as pessoas as absorver melhor as informações, fico feliz de você ter gostado
Pelo amor de deus, gostaria de pedir perdão por não conhecer esse canal antes! incrível obrigado pelas informações
hehehe, não tem que pedir perdão de nada, fico feliz que tenha nos encontrado, espero que possa nos ajudar compartilhando o nosso conteúdo para que mais pessoas possam aprender com ele.
Nossa, ajudou demais!
Muito bom o conteúdo do vídeo e do seu canal. Está ajudando demais a clarear um pouco os conceitos da AWS.
Agradecido!
Eu que agradeço por assistir Rodolpho
Uma dica de vídeo pra você, é mostrar um pouco da Oracle Cloud que não chega nem aos pés de uma AWS em relação a estrutura mas tem um plano always free que permite você brincar bastante na hora de aprender, e ajudar muito quem precisa testar algumas coisas, eu sempre subo lá meus servidores pra testar minhas aplicações antes de colocar em produção, abraço e muito sucesso
Ótima dica, ainda não tive tempo de experimentar o Oracle Cloud, preciso brincar lá para pegar experiência e trazer pro canal, valeu!
Canal maravilhoso, se você aceitar sugestões de tema. Gostaria de sugerir vídeos de system design. Sua didática é excelente, parabéns!
Oi Samuel, com certeza aceito sugestões, e adoro o tema, acabo falando um pouco sobre system design nos vídeos mas ainda não parei para pensar uma série só sobre o assunto, mas vou colocar na lista porque vai ser muito legal falar sobre isso. Obrigado pelos elogios e por curtir o canal 👍
@@GaragemDoInventor Sério mesmo, não lembro a última vez que fiquei tão empolgado maratonando vídeos em canais de tecnologia. Obrigado por compartilhar seu conhecimento.
🙏
conteúdo feroz demais!!! parabéns por nos trazer esta série super bala =)
Eu que agradeço por acompanhar nosso canal Fabrizio
CARAMBA, eu tava no caminho certo então! Ví esse seu vídeo que não é uma boa ideia fazer upload pro backend pra depois fazer upload pro S3. Eu fiz o upload diretamente pelo ReactJS, mas as credenciais da AWS eu tava colocando lá e isso é um problema né. Vou ver esse vídeo até o fim, achei interesantíssimo!
Show Felippe, espero que o vídeo tenha lhe ajudado a tornar sua solução mais segura. Abs
Eu fiz esse exemplo só que me c#, e vai para o S3, mas fica protegido, ele não exibe. Eu baixei o arquivo, olhei as propriedade, e nas propriedades de conteúdo, que deveria estra protegido com valor não, está vazio. Se eu fizer upload do mesmo arquivo, mas pela interface da AWS, exibe normalmente, e quando baixo o arquivo e verifico as propriedades está como esperado. Só quando usa u URL assinada está com problema.
muito bom o conteúdo, conseguir aprender bastante, mas eu estou com um problema que é quando eu pego o arquivo no s3 vem uma ReadableStream e não estou conseguindo baixar o arquivo pelo react, no node funciona usando o Buffer, mas no react não estou encontrando como fazer o mesmo processo, poderia me ajudar?
Gustavo, se você está recebendo um ReadableStream eu presumo que você esteja usando o SDK no frontend, eu não recomendaria fazer isso por expor as chaves. No caso de consumir no frontend eu recomendaria habilitar o modo de leitura pública do bucket. No caso de alterações eu recomendo fazer isso somente a partir do backend.
Otimo conteudo! Estou iniciano em AWS, mas gostaria de saber se é possivel exportar uma consulta do SQL Server para um bucket? Se sim, você teria algum video de exemplo? O banco precisa está no RDS ?
Claudilei, você pode salvar literalmente qualquer tipo de arquivo no S3
Muito bom!!!
Só fiquei com uma dúvida.
Se para cada arquivo que subir é criado um chave, esse modelo atenderia bem se eu precisar subir umas lista de arquivos?
Seria possível utilizar a mesma chave para vários arquivos e melhorar a performance um pouco?
Vagner, há inúmeras maneiras diferentes de melhorar a performance para uma lista. Eu pessoalmente preferiria gerar a lista de chaves de uma única vez através da minha API e então subir os arquivos com um gerenciador de upload no browser para paralelizar os uploads. Se forem muito arquivo pequenos eu faria todos subirem zipados e faria uma tela para o usuário organizá-los depois de subir. Se forem arquivos grandes eu colocaria eles em uma fila de upload (plugin JS) pois a conexão do usuário pode não aguentar paralelizar. Enfim, tem muitas formas de acelerar e manter a segurança dos dados ao mesmo tempo. Espero ter ajudado
@@GaragemDoInventor ajudou muito!!!
Muito obrigado.
Dentre os canais de Devops que tem no TH-cam, o seu é sem dúvida o melhor, ja indiquei pra bastante gente.
Parabéns.
Muito Obrigado Vagner!🙏
como eu faria esse fluxo, mas para o kinesis stream > firehouse > S3?
Olá tudo bem? Seria possível e conveniente criar uma chave para a aplicação fazer o upload, da mesma forma que criou a chave para processar o download do arquivo?
Marcio, entra na nossa comunidade Cloud lá tem uma galera pra trocar ideias e se ajudar cloudstorm.club/
Quanto tento rodar o código em localhost:3000 numa aplicação nextjs da erro " has been blocked by CORS policy: No 'Access-Control-Allow-Origin " ja fiz de tudo e o erro persiste
Giliard, o CORS diz que você está fazendo uma requisição com um domínio diferente do que o servidor espera. No S3 você consegue habilitar seu domínio ou liberar todos, busque no google por "AWS S3 CORS configuration" e vai achar vários exemplos
Muito Bom!
Obrigado Wagner
Bom dia, muito bom o conteúdo. Uma duvida, qual a vantagem em deixar esse gerador do pre-signed URL em uma função lambda? Claro além da escalabilidade. Não seria viável deixar esse gerador dentro da própria API para conseguir fazer validações? Por que, o problema principal a ser resolvido seria ter maior controle de banda que entra na API e não esgargalar a mesma. Mas seria um gargalo grande colocar essa função na API? Eu estava utilizando lambdas para processar as imagens.
Ótima questão Pedro. A principal delas além da escalabilidade, é separar códigos não essenciais ou que não dependam de regras de negócios complexas, assim você simplifica sua API e diminui a incidência de deploys com ajustes que não afetam a regra de negócio em si, reduzindo o risco de bugs por tabela. Mas sim, você pode colocá-la dentro da sua API sem problema algum, mas, se for só pela validação, você também pode usar a função lambda para fazer uma chamada para sua API só pra validar, a vantagem dessa abordagem é que se alguém estiver tentando te sacanear com um bot por exemplo, você pode fazer pré-validações antes mesmo de bater na sua API e evitar que ela fique instável durante o ataque.
Se ficou confusa minha explicação me avise que tento explicar de outra forma.
Ok, entendi. Muito obrigado! Você pretende trazer algum conteúdo sobre nignx? Como a maneira certa de utilizar ele em uma infra com loadbalance igual da playlist de AWS. Alem como configurar de maneira correta. Eu sempre me perco em saber qual configuração é minimamente suficiente. Kkkk. Mas obrigado pela resposta!
Sim NGinx é uma das principais ferramentas que eu uso em grandes projetos além do Kong que também é baseado no NGinx, quero trazer mais conteúdo sobre isso com certeza
Que qualidade 👏👏, sempre muito bom seus conteúdos, Parabéns, eu só fiquei com algumas dúvidas, essa função lambda existe apenas pra gerar essa url temporária? Todo o processo de upload é realizado diretamente pela s3? Porque incluir na própria api? E imagino que pode acabar ficando caro se houver um fluxo constante de requisições nessa função
SkyLevel, você tem 1 milhão de segundos de requisições por mês grátis, claro, proporcional à quantidade de memória utilizada. Você pode fazer essa mesma chamada pela pre-signed url de dentro da sua API sem problemas, mas o objetivo foi demonstrar que é possível fazer isso completamente independente da sua estrutura principal, e usar esse recurso como serverless mesmo que sua aplicação seja monolítica.
Obrigado por acompanhar o canal, é sempre um prazer responder seus comentários 🤝
@@GaragemDoInventor Entendi, agradeço bastante tanto pelo vídeo quanto pela resposta, eu acabo muitas vezes preferindo reutilizar a mesma estrutura e criar algumas rotas a mais para não tornar a precificação mais complexa
ENtão você recomendaria criar 2 buckets, um temporário para receber o objeto do front-end e outro definitivo e no intermedio desses dois, uma função lambda que faz essa ponte entre os objetos do bucket temporario pro definitivo?
Esse seria o cenário ideal
uma pergunta sobre o fluxo, no cliente (browser) o usuario preenche o formulario com a imagem e manda para a API do back-end, a api do back-end manda o arquivo pro lambda que sobe pro s3? ou o cliente manda direto pro lambda?
Na verdade, o usuário vai solicitar a url assinada para o lambda, com ela ele envia o arquivo direto para o S3, e a única coisa que ele manda pra sua API é o nome do arquivo que foi salvo no S3 para que sua API possa processá-lo, ou move-lo
Como seria se fosse fazer upload de vários arquivos, pq a rota só aceita um arquivo porque o Key é único, se a cada arquivo que for subir tiver que fazer uma chamada para lambda entregar uma rota diferente caio no mesmo problema de um múltiplas threads!?
Oi David, Você pode modificar a função para te retornar quantos token vc precisar em uma única chamada. E não, você não cai no mesmo problema, na verdade é aí que você se livra de uma grande problema, passando toda a responsabilidade de gerir multiplas conexões de upload paralelas para o S3 ao invés de travar essas threads no seu servidor http ;)
@@GaragemDoInventor Realmente acabei de implementar uma funcionalidade com Reactjs e python no back-end onde preciso subir grandes quantidade de imagens, fiz um loop requisitando uma key diferente para cada imagem e rodou liso, fiz um teste com 560 imagens e foram salvas em menos de 18 segundo, abraços Inventor excelente conteúdo me salvou.
Caso o pessoal queira ver como ficou posso disponibilizar um código semelhante no github.
Não sei se é pelo tempo de publicação do video, mas agora não rola desta forma.