ExternalName для конечной точки S3 в Kubernetes с AWS SDK - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь использовать AWS S3 SDK для Java для подключения к корзине из модуля Kubernetes, на котором запущено приложение Spring Boot. Чтобы получить внешний доступ, мне нужно было создать службу следующим образом:

kind: Service
apiVersion: v1
metadata:
  name: s3
  namespace: production
spec:
  type: ExternalName
  externalName: nyc3.digitaloceanspaces.com

И затем я изменил свою конфигурацию в application.properties, указав конечную точку:

cloud.aws.endpoint=s3
cloud.aws.credentials.accessKey=ASD
cloud.aws.credentials.secretKey=123
cloud.aws.credentials.instanceProfile=true
cloud.aws.credentials.useDefaultAwsCredentialsChain=true

Поскольку SDK строит имя хоста для сегмента как bucket.s3... Я изменил свой клиент для использования доступа «стиль пути» с этой конфигурацией:

@Bean(name = "amazonS3")
public AmazonS3Client amazonS3Client(AWSCredentialsProvider credentialsProvider,
        RegionProvider regionProvider) {

    EndpointConfiguration endpointConfiguration = new EndpointConfiguration(
            endpoint, regionProvider.getRegion().getName());

    return (AmazonS3Client) AmazonS3ClientBuilder.standard()
                                .withCredentials(credentialsProvider)
                                .withEndpointConfiguration(endpointConfiguration)
                                .withPathStyleAccessEnabled(true)
                                .build();
}

Но когда я пытаюсь выполнить какую-либо операцию сегмента, я получаю следующую ошибку относительно несоответствие имени сертификату SSL:

javax.net.ssl.SSLPeerUnverifiedException: Certificate for <s3> doesn't match any of the subject alternative names: [*.nyc3.digitaloceanspaces.com, nyc3.digitaloceanspaces.com]

Как можно избежать этой ошибки сертификата?

...