Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Comment résoudre les erreurs Amazon S3 que je reçois du kit SDK AWS pour les exceptions Java ?
Je souhaite résoudre les erreurs que je rencontre lorsque j'utilise le kit SDK AWS pour Java pour accéder à mes ressources Amazon Simple Storage Service (Amazon S3).
Brève description
Lorsque vous utilisez des kits SDK AWS, les erreurs de client et de service suivantes peuvent s'afficher :
- AmazonClientException ou SdkClientException
- AmazonServiceException, AwsServiceException ou AmazonS3Exception
- UnknownHostException
Pour résoudre les erreurs précédentes, identifiez d'abord le type d'exception, puis terminez la résolution de votre problème.
Résolution
AmazonClientException ou SdkClientException
AmazonClientException ou SdkClientException se produit lorsque vous ne pouvez pas envoyer de requête ou analyser une réponse provenant d’AWS en raison d'erreurs dans le code client.
Pour résoudre ce problème, procédez comme suit :
-
Vérifiez l'utilisation des paramètres de proxy dans votre environnement local et définissez la configuration du proxy dans le S3Client de votre code. Si vous utilisez le kit SDK AWS pour Java 2.x, configurez votre client S3 afin qu'il utilise des proxys HTTP.
Si vous utilisez le kit SDK AWS pour Java 1.x, utilisez le code suivant pour mettre à jour la configuration de votre client S3 :// Proxy configuration Java 1.x ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProxyHost("your_proxy.example.com"); clientConfig.setProxyPort(YOUR_PROXY_PORT); // Optional: If proxy requires authentication clientConfig.setProxyUsername(YOUR_PROXY_USERNAME); clientConfig.setProxyPassword(YOUR_PROXY_PASSWORD); // Create S3 client with proxy configuration AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(YOUR_REGION) .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withClientConfiguration(clientConfig) .build(); -
Testez la connectivité de votre réseau aux points de terminaison S3 à l'aide d'outils tels que nslookup, ping, cURL ou telnet. Pour résoudre les problèmes de connectivité réseau, consultez la section Comment résoudre une erreur de connexion lorsque j'exécute les commandes "cp" ou sur mon compartiment Amazon S3 ?"sync"
-
Imprimez ou enregistrez les configurations de votre client S3 pour vérifier que vous avez correctement configuré votre client S3.
Exemple de configuration :// AWS SDK for Java v1.x public static void validateClientConfiguration(AmazonS3 s3Client) { try { // See: https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html ClientConfiguration config = s3Client.getClientConfiguration(); System.out.println("=== Currnt S3 Client Configuration ==="); // Connection Settings System.out.println("Max Connections: " + config.getMaxConnections()); System.out.println("Connection Timeout: " + config.getConnectionTimeout() + "ms"); System.out.println("Socket Timeout: " + config.getSocketTimeout() + "ms"); System.out.println("Request Timeout: " + config.getRequestTimeout() + "ms"); System.out.println("Client Execution Timeout: " + config.getClientExecutionTimeout() + "ms"); // Retry Settings System.out.println("Max Error Retry: " + config.getMaxErrorRetry()); System.out.println("Retry Policy: " + config.getRetryPolicy()); // Proxy Settings if (config.getProxyHost() != null) { System.out.println("Proxy Host: " + config.getProxyHost()); System.out.println("Proxy Port: " + config.getProxyPort()); } // Protocol Settings System.out.println("Protocol: " + config.getProtocol()); // Region/Endpoint but only if you are using the AmazonS3ClientBuilder client // See https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3ClientBuilder.html System.out.println("Region: " + s3Client.getRegion()); } catch (Exception e) { System.err.println("Error validating client configuration: " + e.getMessage()); } } -
Vérifiez s'il existe des contraintes de connexion ou liées aux ressources dans les paramètres de transport HTTP de la configuration de votre client S3. Pour plus d'informations, consultez la section Configuration du client et Clients HTTP.
-
Exécutez la commande try-catch-finally suivante pour fermer votre client S3 dès que possible afin que d'autres requêtes puissent utiliser la connexion :
try { .... // your code } catch (Exception e) { .... // catch exception } finally { // close the S3 client s3Client.close(); } -
Si vous utilisez des informations d'identification temporaires, exécutez la commande try-catch suivante pour vérifier que vos informations d'identification n'ont pas expiré :
// sample method for AWS SDK Java 2.x public static boolean areCredentialsExpired(AwsCredentialsProvider credentialsProvider) { try { AwsCredentials credentials = credentialsProvider.resolveCredentials(); if (credentials instanceof AwsSessionCredentials) { return false; } } catch (S3Exception e) { //Check if exception contains any expired credentials indication. if("ExpiredToken".equals(e.awsErrorDetails().errorCode())){ return true; } } catch (Exception e) { // If we can't resolve credentials, they're likely expired return true; } return true; }
Amazon ServiceException, AWSServiceException ou Amazon S3 Exception
Si vous recevez une erreur AmazonServiceException, AwsServiceException ou AmazonS3Exception, cela signifie qu'un problème s'est produit après l'envoi réussi de la requête au service AWS. Pour résoudre le problème, vérifiez le code d'état HTTP dans la réponse de suivi de la pile. Les exemples suivants présentent certaines des erreurs de code d'état que vous pourriez rencontrer. Pour une liste complète des codes d'état HTTP, consultez la section Liste de codes d'erreur.
HTTP 400
L'erreur HTTP 400 se produit en raison d'une syntaxe de requête incorrecte. Avant d'envoyer votre requête à Amazon S3, enregistrez ou imprimez-la temporairement pour vérifier sa syntaxe.
HTTP 409
Vérifiez si Amazon S3 a retiré un compartiment récemment supprimé avant d'en créer un nouveau.
HTTP 403
Vous recevez une erreur Access denied lorsque vous n'êtes pas autorisé à effectuer des actions. Vérifiez vos autorisations Gestion des identités et des accès AWS (AWS IAM), vos politiques de contrôle de services (SCP), votre politique de compartiment S3 et la propriété d’objets pour vous assurer que vous disposez des autorisations suffisantes. Assurez-vous également que vos informations d'identification n'ont pas expiré.
L'erreur Access denied se produit également lorsqu'un principal IAM demande un objet sans autorisations ****"s3:ListBucket" et que l'objet n'existe pas dans le compartiment S3.
Pour plus d'informations, consultez la section Résoudre les erreurs d'accès refusé (403 Forbidden) dans Amazon S3.
HTTP 404
Assurez-vous que l'objet S3 existe dans le compartiment.
HTTP 500
Réessayez vos requêtes ou introduisez un délai dans votre code. Par défaut, chaque mode de nouvelle tentative standard du kit SDK AWS comporte trois tentatives au maximum. Si ces tentatives ne permettent pas de résoudre votre problème, augmentez la valeur.
HTTP 503
Répartissez vos objets sur plusieurs préfixes. Pour plus d'informations, consultez la section Comment puis-je résoudre une erreur HTTP 500 ou 503 provenant d'Amazon S3 ?
UnknownHostException
Si vous recevez une erreur UnknownHostException, assurez-vous qu'il n'y a aucun problème de résolution DNS concernant les points de terminaison S3.
Informations connexes
- Sujets
- Storage
- Langue
- Français

Contenus pertinents
- demandé il y a un an
- demandé il y a 2 ans
- demandé il y a un an
- demandé il y a un an
- demandé il y a 2 ans