Код: Выделить всё
Configuration configuration = new Configuration();
configuration.set("fs.s3a.endpoint", filesystemEndpoint);
configuration.set("fs.defaultFS", filesystemType + s3BucketName + s3BucketSubdirectoryPath);
DefaultCredentialsProvider credentialsProvider = DefaultCredentialsProvider.builder().reuseLastProviderEnabled(Boolean.FALSE).build();
AwsCredentials awsCredentials = credentialsProvider.resolveCredentials();
if (ControllerUtils.isRunningOnK8s()) {
configuration.set("fs.s3a.assumed.role.arn", eksRoleArn);
}
configuration.set("fs.s3a.access.key", awsCredentials.accessKeyId());
configuration.set("fs.s3a.secret.key", awsCredentials.secretAccessKey());
if (awsCredentials instanceof AwsSessionCredentials) {
AwsSessionCredentials sessionCredentials = (AwsSessionCredentials) awsCredentials;
configuration.set("fs.s3a.session.token", sessionCredentials.sessionToken());
}
< /code>
Класс, в котором находится этот код, аннотируется: < /p>
@Service
@Scope("prototype")
< /code>
«Прототип» - это попытка обеспечить создание нового экземпляра с помощью каждого запуска. В моих поисках к этому моменту отмечались, что поставщик учетных данных может быть кэширован иначе, что приводит к истечению срока действия токена. Аннотация @Service существует, потому что этот класс имеет компонент @ScheduLED (CRON). Это включает в себя ProfileCredentialSprovider Как я могу гарантировать, что мое приложение не сохраняет истекший токен?
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-provider