Обновление Чтобы использовать Spring-cloud-AWS, вы по-прежнему будете использовать FlatFileItemReader, но теперь вам не нужно создавать собственный расширенный ресурс.
Вместо этого вы настраиваете aws-контекст и передаете ему свой компонент S3Client.
<aws-context:context-resource-loader amazon-s3="amazonS3Client"/>
Читатель будет настроен так же, как и любой другой читатель - единственное, что здесь уникально, это то, что вы теперь автоматически подключаете свой ResourceLoader
@Autowired
private ResourceLoader resourceLoader;
а затем установите этот загрузчик ресурсов:
@Bean
public FlatFileItemReader<Map<String, Object>> AwsItemReader() {
FlatFileItemReader<Map<String, Object>> reader = new FlatFileItemReader<>();
reader.setLineMapper(new JsonLineMapper());
reader.setRecordSeparatorPolicy(new JsonRecordSeparatorPolicy());
reader.setResource(resourceLoader.getResource("s3://" + amazonS3Bucket + "/" + file));
return reader;
}
Я бы использовал FlatFileItemReader, и необходимая настройка заключается в создании собственного объекта S3 Resource. Расширьте Spring AbstractResource, чтобы создать собственный ресурс AWS, содержащий информацию о клиенте AmazonS3, корзине, пути к файлу и т. д.
Для getInputStream используйте Java SDK:
S3Object object = s3Client.getObject(new GetObjectRequest(bucket, awsFilePath));
return object.getObjectContent();
Затем для contentLength -
return s3Client.getObjectMetadata(bucket, awsFilePath).getContentLength();
и последнее модифицированное использование
.getLastModified().getTime();
Созданный вами ресурс будет иметь AmazonS3Client, который содержит всю информацию, необходимую вашему приложению spring-batch для связи с S3. Вот как это может выглядеть с конфигурацией Java.
reader.setResource(new AmazonS3Resource(amazonS3Client, amazonS3Bucket, inputFile));
person
mtoutcalt
schedule
17.07.2015
Resource
для S3. Вы можете взглянуть на это: cloud. spring.io/spring-cloud-aws/ - person Michael Minella   schedule 15.06.2015