Definição de Hack
Não sei ao certo o que significa pirataria no contexto da sua pergunta.
Suponho que você realmente queira dizer "que alguém pode fazer algo diferente do que fazer upload de um arquivo", que inclui excluir ou acessar objetos dentro do seu bucket.
Sua solução
Como o Ninad já mencionado acima, você pode usar sua abordagem atual ativando "Habilitar acesso a identidades não autenticadas" [1]. Você precisará criar duas funções, uma delas para "usuários não autenticados". Você pode conceder permissões PutObject a essa função no bucket S3. Isso permitiria que todos os que visitam sua página carregassem objetos no bloco S3. Eu acho que é isso que você pretende e é bom do ponto de vista da segurança, já que o IdentityPoolId é um valor público (ou seja, não é confidencial).
Outra solução
Eu acho que você não precisa usar o Amazon Cognito para conseguir o que deseja. Provavelmente é suficiente adicionar uma política de bucket ao S3 que conceda permissão para PutObject a todos.
Isso é seguro?
No entanto, eu não recomendaria habilitar o acesso direto de gravação pública ao seu bucket S3.
Se alguém abusar do seu site enviando spam para o seu formulário de upload, você incorrerá em cobranças S3 para operações de venda e armazenamento de dados.
Seria uma abordagem melhor enviar os dados pelo Amazon CloudFront e aplicar um WAF com regras baseadas em taxa [2] ou implementar um serviço de limitação de taxa personalizado antes do upload do S3. Isso garantiria que você possa reagir adequadamente a atividades maliciosas.
Referências
[1] https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
[2] https://aws.amazon.com/about-aws/whats-new/2019/08 / regras com base no limite mais baixo para aws-waf-waf /