Obter IDs de solicitação do Amazon S3 para o AWS Support
Sempre que você entrar em contato com o AWS Support devido a erros ou comportamento inesperado no Amazon S3, é necessário fornecer os IDs das solicitações associadas à ação com falha. O AWS Support usa esses IDs das solicitações para ajudar a resolver os problemas que está enfrentando.
Os IDs da solicitação são fornecidos em pares, são retornados em cada resposta que o Amazon S3 processa (mesmo errôneas) e podem ser acessados por meio de logs detalhados. Há vários métodos comuns para obter os IDs das solicitações, incluindo logs de acesso do servidor do S3 e eventos ou eventos de dados do AWS CloudTrail.
Depois de recuperar esses logs, copie e mantenha esses dois valores, pois você precisará deles ao entrar em contato com o AWS Support. Para obter informações sobre como entrar em contato com o AWS Support, consulte Entrar em contato com a AWS ou a Documentação do AWS Support.
Usar a AWS CLI para obter IDs de solicitação
Para obter os IDs de solicitação ao usar a AWS Command Line Interface (AWS CLI), adicione --debug ao comando. Por exemplo, você deve ver x-amz-request-id e x-amz-id-2 no log de depuração conforme mostrado abaixo:
...
2025-04-30 14:35:28,572 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amz-id-2': 'a+zm50vDJH3LLmCiXvwEo0u0PtPS/qCJaBvB2ZMH9dzyzTiJhiLZkBFFoRfsPfOKztUKT/garCI=', 'x-amz-request-id': 'N4NMN0MJ4VDFZMX9', 'Date': 'Wed, 30 Apr 2025 21:35:29 GMT', 'Content-Type': 'application/xml', 'Transfer-Encoding': 'chunked', 'Server': 'AmazonS3'}
...
Usar o Windows PowerShell para obter IDs de solicitação
Para obter informações sobre como recuperar logs com o Windows PowerShell, consulte Log de respostas no AWS Tools for Windows PowerShell no blog de ferramentas de desenvolvimento da AWS.
Usar eventos de dados do AWS CloudTrail para obter IDs de solicitação
Um bucket do Amazon S3 que é configurado com eventos de dados do CloudTrail para registrar operações de API no nível de objeto do S3 fornece informações detalhadas sobre as ações realizadas por um usuário, um perfil ou um serviço da AWS no Amazon S3. É possível identificar os IDs de solicitação do S3 consultando os eventos do CloudTrail com o Athena.
Para obter mais informações, consulte Identificação de solicitações do Amazon S3 usando o CloudTrail no Guia do usuário do Amazon Simple Storage Service.
Usar o registro de acesso ao servidor do S3 para obter IDs de solicitação
Um bucket do Amazon S3 configurado para o registro de acesso ao servidor do S3 fornece registros detalhados para cada solicitação feita ao bucket. É possível identificar os IDs de solicitação do S3 consultando os logs de acesso ao servidor usando o Athena.
Para obter mais informações, consulte Consulta de logs de acesso para solicitações usando o Amazon Athena no Guia do usuário do Amazon Simple Storage Service.
Usar HTTP para obter IDs de solicitação
Você pode obter os IDs da solicitação, x-amz-request-id e x-amz-id-2, registrando os bits de uma solicitação HTTP antes que ela chegue ao aplicativo de destino. Há várias ferramentas de terceiros que podem ser usadas para recuperar logs detalhados de solicitações HTTP. Escolha uma de sua confiança e execute a ferramenta para escutar na porta em que o tráfego do Amazon S3 passa ao enviar outra solicitação HTTP do Amazon S3.
Para solicitações HTTP, o par de IDs de solicitação será parecido com isto:
x-amz-request-id: 79104EXAMPLEB723
x-amz-id-2: IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km
As solicitações HTTP estão criptografadas e ocultas na maioria das capturas de pacotes.
Usar um navegador da web para obter IDs de solicitação
A maioria dos navegadores da web tem ferramentas de desenvolvedor que podem ser usadas para visualizar os cabeçalhos das solicitações.
Para solicitações baseadas em navegador da web que retornam um erro, o par de IDs de solicitações será parecido com os exemplos a seguir.
<Error><Code>AccessDenied</Code><Message>Access Denied</Message>
<RequestId>79104EXAMPLEB723</RequestId><HostId>IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km</HostId></Error>
Para obter o par de IDs de solicitações bem-sucedidas, use as ferramentas de desenvolvedor do navegador para ver os cabeçalhos das respostas HTTP.
Usar os AWS SDKs para obter IDs de solicitação
As seções a seguir incluem informações para configuração do log usando diferentes SDKs da AWS.
Embora seja possível habilitar o registro em log detalhado para todas as solicitações e respostas, não recomendamos habilitar o registro em log em sistemas de produção, pois solicitações ou respostas grandes podem reduzir significativamente o desempenho de uma aplicação.
Para solicitações do SDK da AWS, o par de IDs da solicitação será parecido com o seguinte:
Status Code: 403, AWS Service: Amazon S3, AWS Request ID: 79104EXAMPLEB723
AWS Error Code: AccessDenied AWS Error Message: Access Denied
S3 Extended Request ID: IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km
- C++
-
O tipo de registrador e a verbosidade são especificados durante a inicialização do SDK no argumento SDKOptions. O exemplo a seguir especifica o nível de verbosidade como LogLevel::Debug.
O registrador padrão gravará no sistema de arquivos e o arquivo será nomeado usando a seguinte convenção aws_sdk_YYYY-MM-DD-HH.log. O registrador cria um novo arquivo na hora.
Aws::SDKOptions options;
options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Debug;
Aws::InitAPI(options);
// ...
Aws::ShutdownAPI(options);
Para obter mais informações, consulte Como ativo o registro em log? no wiki do SDK da AWS para C++ no GitHub.
- Go
-
É possível configurar o registro em log usando o SDK para Go. Para obter mais informações, consulte Registro em log no Guia do desenvolvedor do AWS SDK para Go v2.
- Java
-
Você pode habilitar o log para solicitações ou respostas específicas, para obter e retornar apenas cabeçalhos relevantes. Para fazer isso, importe a classe com.amazonaws.services.s3.S3ResponseMetadata. Mais tarde, você pode armazenar a solicitação em uma variável antes de executar a solicitação real. Para obter a solicitação ou a resposta registrada em log, chame getCachedResponseMetadata(AmazonWebServiceRequest
request).getRequestID().
PutObjectRequest req = new PutObjectRequest(bucketName, key, createSampleFile());
s3.putObject(req);
S3ResponseMetadata md = s3.getCachedResponseMetadata(req);
System.out.println("Host ID: " + md.getHostId() + " RequestID: " + md.getRequestId());
Como alternativa, você pode usar log detalhado de cada solicitação e resposta de Java. Para obter mais informações, consulte Registro em log detalhado no Guia do desenvolvedor do AWS SDK para Java.
- JavaScript
-
O AWS SDK para JavaScript tem um registrador integrado para que você possa registrar chamadas de API feitas com ele. Para ativar o registrador e imprimir entradas de log no console, adicione a instrução a seguir ao seu código:
AWS.config.logger = console;
Para obter mais informações, consulte Registro de chamadas do AWS SDK para JavaScript no Guia do desenvolvedor do AWS SDK para JavaScript.
- Kotlin
-
Com o AWS SDK para Kotlin, você pode especificar o modo de log para mensagens no nível da rede usando configurações de código ou ambiente. Você pode definir o modo de log para solicitações e respostas HTTP.
Para optar pelo registro em log adicional, defina a propriedade logMode ao criar um cliente de serviço:
import aws.smithy.kotlin.runtime.client.LogMode
// ...
val client = S3Client {
// ...
logMode = LogMode.LogRequestWithBody + LogMode.LogResponse
}
Como alternativa, você pode definir o modo de log usando uma variável de ambiente:
export SDK_LOG_MODE=LogRequestWithBody|LogResponse
Para obter mais informações, consulte Registro em log no Guia do desenvolvedor do AWS SDK para Kotlin.
- .NET
-
É possível configurar o log com o SDK para .NET usando a ferramenta integrada de log System.Diagnostics. Para obter mais informações, consulte a postagem Registro em log com o SDK para .NET no Blog do desenvolvedor da AWS.
Por padrão, o log retornado contém somente informações de erros. Para obter os IDs de solicitação, o arquivo de configuração deve ter AWSLogMetrics (e, opcionalmente, AWSResponseLogging) adicionado.
- PHP
-
Você pode obter informações de depuração, incluindo os dados enviados pela rede, definindo a opção de depuração como true em um construtor de cliente.
$s3Client = new Aws\S3\S3Client([
'region' => 'us-standard',
'version' => '2006-03-01',
'debug' => true
]);
Para obter mais informações, consulte Como posso ver quais dados são enviados pela rede? no Guia do desenvolvedor do AWS SDK para PHP.
- Python (Boto3)
-
Com o AWS SDK para Python (Boto3), você pode registrar respostas específicas. É possível usar esse recurso para capturar somente os cabeçalhos relevantes. O código a seguir mostra como registrar em log partes da resposta a um arquivo:
import logging
import boto3
logging.basicConfig(filename='logfile.txt', level=logging.INFO)
logger = logging.getLogger(__name__)
s3 = boto3.resource('s3')
response = s3.Bucket(bucket_name).Object(object_key).put()
logger.info("HTTPStatusCode: %s", response['ResponseMetadata']['HTTPStatusCode'])
logger.info("RequestId: %s", response['ResponseMetadata']['RequestId'])
logger.info("HostId: %s", response['ResponseMetadata']['HostId'])
logger.info("Date: %s", response['ResponseMetadata']['HTTPHeaders']['date'])
Também é possível capturar exceções e registrar em log informações relevantes quando uma exceção é gerada. Para obter mais informações, consulte Discernir informações úteis de respostas de erro na Referência de API do AWS SDK para Python (Boto).
Além disso, é possível configurar o Boto3 para gerar logs de depuração detalhados usando o seguinte código:
import logging
import boto3
boto3.set_stream_logger('', logging.DEBUG)
Para obter mais informações, consulte set_stream_logger na Referência de API do AWS SDK para Python (Boto).
- Ruby
-
É possível obter os IDs de solicitação usando o SDK para Ruby versão 3. Você pode ativar o registro em log de conexões HTTP em seu cliente usando o seguinte código:
s3 = Aws::S3::Client.new(http_wire_trace: true)
O registro em log eletrônico pode incluir informações confidenciais, como o ID da chave de acesso. As informações confidenciais devem ser higienizadas antes de serem compartilhadas com o Suporte da AWS.
Você também pode encontrar o ID da solicitação do objeto de contexto da solicitação na resposta ou no erro da solicitação:
# Finding the request ID from an error:
begin
s3.put_object(bucket: 'bucket', key: 'key', body: 'test')
rescue Aws::S3::Errors::ServiceError => e
puts e.context[:request_id]
puts e.context[:s3_host_id]
end
# Finding the request ID from a successful call:
resp = s3.put_object(bucket: 'bucket', key: 'key', body: 'test')
puts resp.context[:request_id]
puts resp.context[:s3_host_id]
Para obter mais informações, consulte Depuração usando informações de rastreamento de rede de um cliente do AWS SDK para Ruby no Guia do desenvolvedor do AWS SDK para Ruby.
- Rust
-
Para habilitar o registro em log, adicione a caixa tracing-subscriber e inicialize-a na aplicação do Rust.
Adicione a biblioteca de rastreamento ao arquivo Cargo.toml:
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
Em seguida, no código Rust, inicialize o registrador na função principal antes de chamar qualquer operação do SDK:
tracing_subscriber::fmt::init();
Para obter mais informações, consulte Configuração e uso de logs no AWS SDK para Rust no Guia do desenvolvedor do AWS SDK para Rust.