6 votes

Spring cloud aws définir le point de terminaison

J'utilise Spring Cloud AWS pour me connecter à mon Amazon S3 sur OpenStack. Par défaut, le point de terminaison est s3.amasonaws.com. Je veux changer le point de terminaison car mon bucket S3 est dans le cloud privé, pas dans le cloud public d'Amazon.

            org.springframework.cloud
            spring-cloud-starter-aws

. . . .

    org.springframework.cloud
    spring-cloud-dependencies
    ${spring-cloud.version}
    pom
    import

.... dans mon application.properties

cloud.aws.stack.auto=false
cloud.aws.region.static=eu-west-3
storage.s3.accessKey=AKIAJNGI4VX4DTY4U24Q

Merci pour votre aide.

0 votes

Ne existe pas la propriété cloud.aws.endpoint ???

0 votes

Non, ça ne fait pas

4voto

J'ai rencontré un problème similaire en essayant d'utiliser LocalStack avec S3 configuré localement sur ma machine. Comme Spring Boot n'a pas d'option pour configurer le point de terminaison, nous avons dû définir le bean nous-mêmes. Ensuite, nous avons simplement utilisé le bean nouvellement défini.

/**
 * Il doit être configuré si nous devons télécharger un fichier en utilisant la configuration LocakStack.
 * Pour cette raison, nous devons définir un nouveau client car celui par défaut n'a pas d'option pour configurer le point de terminaison.
 *
 * @see org.springframework.cloud.aws.context.config.annotation.ContextResourceLoaderConfiguration.Registrar#registerBeanDefinitions(AnnotationMetadata, BeanDefinitionRegistry)
 */
@Bean(name = "amazonS3Client")
public AmazonS3 amazonS3Client(AWSCredentialsProvider credentialsProvider,
                               RegionProvider regionProvider,
                               @Value("${aws.s3.default-endpoint:https://s3.amazonaws.com}") String endpoint) {

    return AmazonS3ClientBuilder.standard()
        .withCredentials(credentialsProvider)
        .withEndpointConfiguration(
            new AwsClientBuilder.EndpointConfiguration(endpoint, regionProvider.getRegion().getName()))
        .build();
}

0 votes

Comment indiquez-vous à Spring d'utiliser ce bean à la place du client configuré automatiquement ?

0 votes

Vous pouvez utiliser l'annotation @Primary.

0 votes

Vous pouvez @Autowired AmazonS3 amazonS3Client

2voto

dukethrash Points 100

Vous pouvez utiliser la propriété cloud.aws.s3.endpoint pour remplacer l'endpoint.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X