Как предотвратить срок действия токена на поставщике учетных данных AWS S3?JAVA

Программисты JAVA общаются здесь
Anonymous
Как предотвратить срок действия токена на поставщике учетных данных AWS S3?

Сообщение Anonymous »

Я создаю приложение Spring Boot 3.2.5, которое извлекает данные из паркетных файлов на ведре AWS S3. Эти данные затем преобразуются в CSV и загружаются в базу данных Postgres. Однако примерно через час я получаю программное обеспечение для исключений. Amazon.awssdk.services.s3.model.s3exception: предоставленный токен истек. org.apache.hadoop.conf.configuration и настроен следующим образом: < /p>

Код: Выделить всё

        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 
и stsassumerolecredentialsprovider .
Как я могу гарантировать, что мое приложение не сохраняет истекший токен?

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-provider

Вернуться в «JAVA»