Je reçois le message d'erreur ci-dessous lorsque j'essaie d'exécuter une application Spring boot-AWS localement:
Il n'y a pas de métadonnées EC2 disponibles, car l'application ne s'exécute pas dans l'environnement EC2. La détection de région n’est possible que si l’application est exécutée sur une instance EC2
Mon fichier aws-config.xml se présente comme suit:
<aws-context:context-credentials>
<aws-context:simple-credentials access-key="*****" secret-key="*****"/>
</aws-context:context-credentials>
<aws-context:context-region auto-detect="false" region="ap-south-1" />
<aws-context:context-resource-loader/>
<aws-messaging:annotation-driven-queue-listener max-number-of-messages="10" wait-time-out="20" visibility-timeout="3600"/>
J'essaie d'écouter avec un SQSListner dans la classe ci-dessous:
@Configuration
@EnableSqs
@ImportResource("classpath:/aws-config.xml")
@EnableRdsInstance(databaseName = "******",
dbInstanceIdentifier = "*****",
password = "******")
public class AwsResourceConfig {
@SqsListener(value = "souviksqs", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void receiveNewFileUpload(S3EventNotification event) {
try {
if ( event != null && !CollectionUtils.isNullOrEmpty( event.getRecords() ) && event.getRecords().get( 0 ) != null ) {
S3Entity entry = event.getRecords().get(0).getS3();
System.out.println("############ File Uploaded to ###################### " + entry.getBucket().getName() + "/" + entry.getObject().getKey());
}
} catch (Exception e) {
System.out.println("Error reading the SQS message " + e);
}
}
}
Edit: Je viens de remarquer que l’erreur vient de l’inclusion de la dépendance maven suivante de aws-messaging:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-messaging</artifactId>
<version>${spring-cloud-aws-version}</version>
</dependency>
J'utilise spring-cloud-aws-version - 1.2.1.RELEASE
J'ai trouvé le problème. J'utilisais spring-cloud-starter-aws-messaging pour la messagerie SQS. La dépendance ci-dessus comprend de nombreuses classes Auto Detect qui se sont finalement allumées même si elles se n'étaient pas nécessaires.
Au lieu de cela, j'ai utilisé spring-cloud-aws-messaging qui a résolu le problème, ainsi que de nombreux autres problèmes de détection automatique.
J'utilisais springframework.cloud.aws.autoconfigure, j'ai le même problème. La raison derrière cela est que nous devons configurer la région manuellement lorsque nous exécutons une application dans un environnement non AWS, c'est-à-dire. Local. Mettez donc cette propriété dans votre application-local.properties et vous devriez être bon.
cloud.aws.region.static = us-east-1
J'ai également fait face au même problème, mais il n'a pas été résolu après l'ajout de la propriété aws region. J'ai été capable de résoudre le même problème quand j'ai enlevé la dépendance printemps-nuage-démarreur-aws de mon pom
J'avais le même problème et je pouvais empêcher Spring Cloud aws de configurer automatiquement la région en ajoutant cette exclusion sur la configuration Spring.