As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Conceitos básicos da solução de problemas de runtime no AWS SDK para C++
À medida que você aprende a desenvolver aplicações com o AWS SDK para C++, também é importante se familiarizar com o uso do Console de gerenciamento da AWS e da AWS CLI. Essas ferramentas podem ser usadas de forma intercambiável para várias soluções de problemas e diagnósticos quando erros de runtime são encontrados.
O tutorial a seguir mostra um exemplo dessas tarefas de diagnóstico e solução de problemas. Ele se concentra no erro Access denied, que pode ser encontrado por vários motivos diferentes. O tutorial mostra um exemplo de como determinar a causa real do erro. Ele se concentra em duas das possíveis causas: permissões incorretas para o usuário atual e um recurso indisponível para o usuário atual.
Como acessar o código-fonte e os executáveis do projeto
-
Baixe o exemplo de código do Amazon S3 do Repositório de exemplos de código da AWS
no GitHub. -
Abra
delete_bucket.cppe observe que existem dois métodos:main()eDeleteBucket(). ODeleteBucket()usa o SDK para excluir o bucket. -
Compile o exemplo do Amazon S3 usando as mesmas etapas de explicadas em Conceitos básicos do uso do AWS SDK para C++. O processo de compilação gera um executável para cada arquivo-fonte.
-
Abra um prompt de comando na pasta onde seu sistema de compilação gerou seus executáveis. Utilize o executável
run_create_bucket(o nome completo do arquivo executável real será diferente com base no seu sistema operacional). Isso cria um bucket na sua conta (para que você tenha um para excluir). -
No prompt de comando, utilize o executável
run_delete_bucket. Este exemplo espera um parâmetro do nome do bucket a ser excluído. Forneça um nome de bucket incorreto; crie intencionalmente um erro de digitação nesse nome de bucket por enquanto, para que possamos explorar a solução de problemas. -
Confirme se você recebeu uma mensagem de erro
Access Denied. Receber uma mensagem de erroAccess Deniedfaz com que você questione se criou um usuário com permissões completas para o Amazon S3, o que você verificará em seguida.
Como instalar a AWS CLI e encontrar o nome de usuário que está fazendo chamadas para AWS
-
Para instalar a AWS CLI mais recente na sua máquina de desenvolvimento, consulte Instalar a AWS CLI no Guia do usuário do AWS Command Line Interface.
-
Para verificar se a AWS CLI está funcionando, abra um prompt de comando e execute o comando
aws -\-version.$aws -\-versionaws-cli/2.1.29 Python/3.8.8 Windows/10 exe/AMD64 prompt/off -
Para acessar o nome de usuário para o qual está realmente fazendo as chamadas para AWS, execute o comando
aws sts get-caller-identityda AWS CLI. No exemplo de saída a seguir, esse nome de usuário é userX$aws sts get-caller-identity{ "UserId": "A12BCD34E5FGHI6JKLM", "Account": "1234567890987", "Arn": "arn:aws:iam::1234567890987:user/userX" }Há muitas maneiras de especificar credenciais, mas se você seguiu a abordagem em Autenticação com o AWS uso do AWS SDK for C++, esse nome de usuário vem do seu arquivo de credenciais compartilhado da AWS. Durante esse procedimento, você concedeu ao seu usuário as permissões AmazonS3FullAccess.
nota
Geralmente, a maioria dos comandos da AWS CLI segue a estrutura de sintaxe de:
$aws <command> <subcommand> [options and parameters]em que
commandé o serviço esubcommandé o método que está sendo chamado nesse serviço. Para ter mais detalhes, consulte Estrutura de comando na AWS CLI no Guia do usuário da AWS Command Line Interface.
Como verificar se um usuário tem permissão para excluir um bucket
-
Abra o Console de gerenciamento da AWS
e faça login. Para ter mais detalhes, consulte Conceitos básicos sobre o Console de gerenciamento da AWS. -
Na barra de navegação principal, em Pesquisar serviços..., insira
IAMe selecione o serviço do IAM nos resultados. -
Na barra lateral do painel ou em Recursos do IAM, selecione Usuários.
-
Na tabela de usuários disponíveis para sua conta, selecione o nome de usuário acessado no procedimento anterior.
-
Escolha a guia Permissões da página Resumo, e na tabela Nome da política, selecione AmazonS3FullAccess.
-
Veja o Resumo da política e os dados JSON. Verifique se esse usuário tem direitos totais para o serviço Amazon S3.
"Effect": "Allow", "Action": "s3:*", "Resource": "*"
Esse processo de eliminação é comum para descartar onde o problema pode estar. Nesse caso, você confirmou que o usuário tem as permissões corretas, então o problema deve ser outro. Ou seja, como você tem as permissões corretas para acessar seus buckets, o erro Access Denied pode significar que você está tentando acessar um bucket que não é seu. Ao solucionar problemas, em seguida, você revisaria o nome do bucket fornecido ao programa e perceberia que um bucket com esse nome não existe na sua conta e, portanto, você não pode “acessá-lo”.
Como atualizar o exemplo de código para que ele seja executado com êxito
-
De volta à função
main()dodelete_bucket.cpp, altere a região, usando a enumeração, para a região da sua conta. Para encontrar a região da sua conta, faça login no Console de gerenciamento da AWS e localize a região no canto superior direito. Também emmain(), altere o nome do bucket para um bucket que exista na sua conta. Há várias maneiras de encontrar seus nomes de bucket atuais:-
Você pode usar o executável
run_list_bucketsque também está na pasta desse exemplo de código para acessar programaticamente os nomes dos seus buckets. -
Você também pode usar o comando AWS CLI a seguir para listar seus buckets do Amazon S3.
$aws s3 ls2022-01-05 14:27:48amzn-s3-demo-bucket -
Você também pode usar o Console de gerenciamento da AWS
. Na barra de navegação principal, em Pesquisar serviços..., insira S3. A página Buckets lista os buckets da sua conta.
-
-
Compile novamente o código e abra o executável
run_delete_bucketatualizado. -
Usando o Console de gerenciamento da AWS ou a AWS CLI, verifique se o bucket do Amazon S3 que você criou anteriormente foi excluído.