Spring Cloud AWS S3가 포함 된 Spring Batch는 EU 버킷에 대해 301을 반환합니다.

남자

S3에서 호스팅되는 Spring Batch에서 파일을 읽으려고합니다. 로컬 파일로 다운로드 한 다음 읽는 것이 아니라 S3에서 직접 파일에 액세스하고 싶습니다.

내 독자는 다음과 같습니다.

class MyReader extends FlatFileItemReader<MyReadItem> {

    @Value('${com.me.s3bucket}')
    private String s3bucket;

    MyReader (DefaultLineMapper< MyReadItem > myLineMapper, ResourceLoader resourceLoader) {
        this.linesToSkip = 1
        this.lineMapper = myLineMapper
        this.resource = resourceLoader.getResource("s3://${s3bucket}/path/to/myfile.csv")
    }
}

리더는 내 배치 구성 파일에 연결되어 있습니다.

@Bean
public ItemReader< MyReadItem > reader() {
    return new MyReader(myLineMapper(), resourceLoader)
}

@Autowired
ResourceLoader resourceLoader

// myLineMapper ...

일괄 작업을 실행할 때 301 예외가 발생합니다.

Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: Moved Permanently (Service: Amazon S3; Status Code: 301; Error Code: 301 Moved Permanently; Request ID: 1DAB29F45F62E0D9)

S3 301 예외는 요청이 생성 될 때 지역이 정의되지 않았기 때문인 것으로 보이지만 ( 예 : 여기 ) 내 application.yaml파일은 지역을 정의하는 아래에 나와 있습니다.

cloud:
    aws:
        region:
            static: eu-west-1
            auto: false

여기서 무슨 일이 일어나고 있습니까? 구성 파일을 읽기 전에 Bean이 연결되는 순서와 관련된 문제입니까?

테스트를 위해이 방법을 사용하여 동일한 애플리케이션 내에서 S3를 임시 파일로 다운로드했으며 정상적으로 작동합니다.

@Value('${com.me.s3bucket}')
private String s3bucket;

public static final String PREFIX = "s3temp";
public static final String SUFFIX = ".tmp";

public File downloadS3File(String resourcePath) throws IOException {
    Resource resource = this.resourceLoader.getResource("s3://${s3bucket}/${resourcePath}");

    InputStream inputStream = resource.getInputStream();

    final File tempFile = File.createTempFile(PREFIX, SUFFIX);
    tempFile.deleteOnExit();
    try {
        FileOutputStream out = new FileOutputStream(tempFile)
        IOUtils.copy(inputStream, out);
    }
    finally {
    }

    return tempFile;
}

리소스 로더를 사용할 때 명시 적으로 지역을 지정하는 방법이 있습니까?

남자

좋습니다. 문제는 버킷이 설정되지 않고 null이라는 사실이었습니다.

@Value('${com.me.s3bucket}')
private String s3bucket;

왜 그런지 모르겠지만 이것을 클래스 밖으로 옮기고 값을 작업 매개 변수로 보냈을 때 작동했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Spring Batch 통합을 사용하여 AWS S3의 각 새 파일에 대해 JobLaunchRequest를 시작합니다.

분류에서Dev

AWS S3 버킷 소스의 새 파일 이후 시작 작업을 사용하는 Spring Cloud DataFlow

분류에서Dev

AWS는 S3 버킷에서 읽은 Spark에 대해 요금을 부과합니까?

분류에서Dev

GOOGLE_APPLICATION_CREDENTIALS를 설정 한 후 GKE에 배포 된 Spring 애플리케이션에 대해 Google 클라우드 저장소가 401을 반환합니다.

분류에서Dev

Fargate를 통해 AWS ECS에 배포 된 Spring Cloud Zookeeper 및 Feign

분류에서Dev

pcf에 배포 된 Spring 통합 앱을 사용하여 S3 버킷에 저장된 많은 수의 파일을 최적으로 처리하는 방법은 무엇입니까?

분류에서Dev

Spring Boot가 AWS S3 버킷에 연결할 수 없음-IAM 자격 증명이 정확함

분류에서Dev

AWS 버킷에 문자열이 포함 된 모든 파일을 나열하는 방법은 무엇입니까?

분류에서Dev

해시에 "O"가 포함 된 키가 있는지 확인한 다음 "O"를 포함하는 키 값을 반환하려면 어떻게해야합니까?

분류에서Dev

nodejs aws s3 버킷에서 버퍼 대신 JSON을 얻는 방법

분류에서Dev

AWS CLI를 사용하여 버킷에 업로드 된 S3 객체 URL을 가져 오는 방법은 무엇입니까?

분류에서Dev

AWS S3 CLI-버킷에 설정된 모든 현재 정책으로 JSON을 가져 오는 방법은 무엇입니까?

분류에서Dev

Spring @Autowire는 초기화 된 빈에 대해 null을 반환하는 이상한 방식으로 작동합니다.

분류에서Dev

Keras가 포함 된 GradientTape는 0을 반환합니다.

분류에서Dev

AWS S3 버킷에서 암호화 된 .gz 파일을 다운로드하려면 어떻게해야합니까?

분류에서Dev

Cloudfront는 퍼블릭 액세스없이 AWS CDK Python for S3 버킷 오리진을 통해 생성 된 액세스 거부 응답을 제공합니다.

분류에서Dev

Spring Boot 객체 구조에 포함 된 JSON을 반환하는 방법

분류에서Dev

java.lang.IllegalStateException : loadBalancing에 대한 Feign Client가 정의되지 않았습니다. spring-cloud-starter-netflix-ribbon을 포함하는 것을 잊었습니까?

분류에서Dev

aws cloudformatiohn deploy를 사용하여 배포하는 동안 S3 버킷에서 cloudformation 템플릿을 가리키는 방법이 있습니까?

분류에서Dev

지정된 요소를 반환해야하는 스택 함수 대신 가비지 값을 반환합니다.

분류에서Dev

Apache Ozone + AWS S3 .Net API : PutObject가 키 대신 버킷을 생성 함

분류에서Dev

AWS-Lambda가 포함 된 MCS가이 작업에 대해 일관성 수준 LOCAL_ONE이 지원되지 않음 오류를 반환합니다. 지원되는 일관성 수준은 다음과 같습니다. LOCAL_QUORUM

분류에서Dev

EC2의 AWS S3 버킷에 저장된 Python 스크립트를 실행하고 결과 파일을 다시 S3 버킷에 저장

분류에서Dev

숫자 목록에서 가장 많이 반복되는 숫자가 포함 된 목록을 반환합니다.

분류에서Dev

AWS S3 버킷의 객체 수 또는 크기가 성능에 영향을 미칩니 까?

분류에서Dev

put 객체에 대한 AWS S3의 getSignedUrl이 403을 반환합니다.

분류에서Dev

많은 데이터가 포함 된 목록에서 행을 반환하는 함수를 적용합니다.

분류에서Dev

IBM Cloud : API를 통해 버킷에 대한 S3 호환 신임 작성

분류에서Dev

배포에 서버리스가 사용하는 s3 버킷을 어떻게 알 수 있습니까?

Related 관련 기사

  1. 1

    Spring Batch 통합을 사용하여 AWS S3의 각 새 파일에 대해 JobLaunchRequest를 시작합니다.

  2. 2

    AWS S3 버킷 소스의 새 파일 이후 시작 작업을 사용하는 Spring Cloud DataFlow

  3. 3

    AWS는 S3 버킷에서 읽은 Spark에 대해 요금을 부과합니까?

  4. 4

    GOOGLE_APPLICATION_CREDENTIALS를 설정 한 후 GKE에 배포 된 Spring 애플리케이션에 대해 Google 클라우드 저장소가 401을 반환합니다.

  5. 5

    Fargate를 통해 AWS ECS에 배포 된 Spring Cloud Zookeeper 및 Feign

  6. 6

    pcf에 배포 된 Spring 통합 앱을 사용하여 S3 버킷에 저장된 많은 수의 파일을 최적으로 처리하는 방법은 무엇입니까?

  7. 7

    Spring Boot가 AWS S3 버킷에 연결할 수 없음-IAM 자격 증명이 정확함

  8. 8

    AWS 버킷에 문자열이 포함 된 모든 파일을 나열하는 방법은 무엇입니까?

  9. 9

    해시에 "O"가 포함 된 키가 있는지 확인한 다음 "O"를 포함하는 키 값을 반환하려면 어떻게해야합니까?

  10. 10

    nodejs aws s3 버킷에서 버퍼 대신 JSON을 얻는 방법

  11. 11

    AWS CLI를 사용하여 버킷에 업로드 된 S3 객체 URL을 가져 오는 방법은 무엇입니까?

  12. 12

    AWS S3 CLI-버킷에 설정된 모든 현재 정책으로 JSON을 가져 오는 방법은 무엇입니까?

  13. 13

    Spring @Autowire는 초기화 된 빈에 대해 null을 반환하는 이상한 방식으로 작동합니다.

  14. 14

    Keras가 포함 된 GradientTape는 0을 반환합니다.

  15. 15

    AWS S3 버킷에서 암호화 된 .gz 파일을 다운로드하려면 어떻게해야합니까?

  16. 16

    Cloudfront는 퍼블릭 액세스없이 AWS CDK Python for S3 버킷 오리진을 통해 생성 된 액세스 거부 응답을 제공합니다.

  17. 17

    Spring Boot 객체 구조에 포함 된 JSON을 반환하는 방법

  18. 18

    java.lang.IllegalStateException : loadBalancing에 대한 Feign Client가 정의되지 않았습니다. spring-cloud-starter-netflix-ribbon을 포함하는 것을 잊었습니까?

  19. 19

    aws cloudformatiohn deploy를 사용하여 배포하는 동안 S3 버킷에서 cloudformation 템플릿을 가리키는 방법이 있습니까?

  20. 20

    지정된 요소를 반환해야하는 스택 함수 대신 가비지 값을 반환합니다.

  21. 21

    Apache Ozone + AWS S3 .Net API : PutObject가 키 대신 버킷을 생성 함

  22. 22

    AWS-Lambda가 포함 된 MCS가이 작업에 대해 일관성 수준 LOCAL_ONE이 지원되지 않음 오류를 반환합니다. 지원되는 일관성 수준은 다음과 같습니다. LOCAL_QUORUM

  23. 23

    EC2의 AWS S3 버킷에 저장된 Python 스크립트를 실행하고 결과 파일을 다시 S3 버킷에 저장

  24. 24

    숫자 목록에서 가장 많이 반복되는 숫자가 포함 된 목록을 반환합니다.

  25. 25

    AWS S3 버킷의 객체 수 또는 크기가 성능에 영향을 미칩니 까?

  26. 26

    put 객체에 대한 AWS S3의 getSignedUrl이 403을 반환합니다.

  27. 27

    많은 데이터가 포함 된 목록에서 행을 반환하는 함수를 적용합니다.

  28. 28

    IBM Cloud : API를 통해 버킷에 대한 S3 호환 신임 작성

  29. 29

    배포에 서버리스가 사용하는 s3 버킷을 어떻게 알 수 있습니까?

뜨겁다태그

보관