Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Erro na aula de teste do arquivo - API RETORNOU SUCESSO mas o arquivo não apareceu

  • Criei o bucket ( também na east-1)
  • Criei a política e a role, anexei a política para a role
  • Realizei o teste com o nome do arquivo : teste_envio_arquivo
  • A resposta do teste foi {"messagem":"Envio com sucesso"}
  • Mas ao consultar o bucket do s3 não apareceu nenhum arquivo.
  • Voltei na minha política e revisei.

Minha política:

*adicionei as duas últimas

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListAccessPointsForObjectLambda",
                "s3:GetAccessPoint",
                "s3:PutAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:CreateStorageLensGroup",
                "s3:ListJobs",
                "s3:PutStorageLensConfiguration",
                "s3:ListMultiRegionAccessPoints",
                "s3:ListStorageLensGroups",
                "s3:ListStorageLensConfigurations",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:ListAccessGrantsInstances",
                "s3:PutAccessPointPublicAccessBlock",
                "s3:CreateJob"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::rmerceslabsphotoscollection",
                "arn:aws:s3:::*/*"
            ]
        },
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::rmerceslabsphotoscollection"
            ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::rmerceslabsphotoscollection/*"
            ]
        }
    ]
}
2 respostas

Olá, Josenildo.

Tudo bem?

Pelo que você descreveu, parece que a política está bem configurada, mas ainda assim o arquivo não aparece no bucket. Aqui estão alguns pontos que você pode verificar:

Se isso não funcionar, vou deixar algumas verificações para tentar te ajudar:

  1. Verifique o Código da Função Lambda (se estiver usando uma):

    • Certifique-se de que a função Lambda está realmente enviando o arquivo para o bucket correto. Veja se o código da função está chamando corretamente o método putObject da AWS SDK.
    const AWS = require('aws-sdk');
    const s3 = new AWS.S3();
    
    exports.handler = async (event) => {
        const params = {
            Bucket: 'rmerceslabsphotoscollection',
            Key: 'teste_envio_arquivo',
            Body: 'Conteúdo do arquivo'
        };
    
        try {
            await s3.putObject(params).promise();
            return { message: 'Envio com sucesso' };
        } catch (error) {
            console.error(error);
            return { message: 'Falha no envio' };
        }
    };
    
  2. Verifique os Logs do CloudWatch:

    • Os logs do CloudWatch podem fornecer informações detalhadas sobre o que está acontecendo durante a execução da função Lambda. Verifique se há algum erro ou mensagem que possa indicar o problema.
  3. Permissões do Bucket:

    • Além das políticas anexadas à role, verifique se o bucket S3 tem as permissões corretas para permitir o upload de objetos.
  4. Região do Bucket:

    • Certifique-se de que o bucket S3 está na mesma região que a função Lambda ou que a configuração da região está correta no código.
  5. Formato do Arquivo:

    • Verifique se o arquivo está sendo enviado no formato correto e se não há nenhuma restrição no bucket que possa estar bloqueando o upload.

Espero ter ajudado e bons estudos!

solução!

Olá Renan!

Tudo bem?

Obrigado pelo retorno.

Realizei inclusão de algumas permissões na política dentro do IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListAccessPointsForObjectLambda",
                "s3:GetAccessPoint",
                "s3:PauseReplication",
                "s3:PutAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:CreateStorageLensGroup",
                "s3:ListJobs",
                "s3:GetReplicationConfiguration",
                "s3:PutReplicationConfiguration",
                "s3:PutStorageLensConfiguration",
                "s3:ListMultiRegionAccessPoints",
                "s3:ListStorageLensGroups",
                "s3:ListStorageLensConfigurations",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:ListAccessGrantsInstances",
                "s3:PutAccessPointPublicAccessBlock",
                "s3:CreateJob",
                "s3:PauseReplication"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::rmerceslabsphotoscollection",
                "arn:aws:s3:::*/*"
            ]
        }
    ]
}

Também notei que meu bucket estava em outra zona e atualizei as APIs (POST e DELETE).

Após isso, o arquivo foi visualizado.

Muito obrigado.