오류없이 AWS S3 TransferService 업로드 실패

JanBo

파일 업로드를 처리하기 위해 AWS 코어 및 S3 SDK를 구현했습니다. 안타깝게도 가끔 업로드가 제대로 작동하지 않습니다. (WiFi 연결에서만 보이는 것 같지만 그 사실에 대해 100 % 확신 할 수는 없습니다)

알 수없는 이유로 aws 서비스는 파일 업로드가 완료되지 않은 경우에도 성공적인 응답을 수신하고 모든 것이 중단됩니다.

Transfer Service가 시작된 것을 볼 수 있으며, 예를 들어 첫 번째 파일은 제대로 업로드를 시작하고 완료되지만 두 번째 파일은 업로드를 완료하지 않고 TransferService가 전송 리스너를 통해 오류를받지 않고 조용히 중지됩니다. 디버그 로그를 활성화했습니다. AWS에서 자세한 정보를 얻을 수 있는지 확인하려면

   java.util.logging.Logger.getLogger("com.amazonaws").setLevel(java.util.logging.Level.FINEST);

그리고 여기에 첫 번째 파일 업로드가 성공하고 두 번째 파일이 실패한 업로드 로그가 있습니다. 첫 번째 파일이 완료되었음을 알리면 다음 파일을 시작합니다. (쉬운 분석을 위해 패키지 이름과 타임 스탬프 제외) :

D/AwsUploadManager: Uploading file: /storage/emulated/0/folder/profile20160219_123233.jpg
D/AwsUploadManager: Uploading under key: 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: AwsUploadManager 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/TransferSerivce: Starting Transfer Service
D/TransferSerivce: Loading transfers from database
D/TransferSerivce: 1 transfers are loaded from database
W/TransferSerivce: Transfer has already been added: 6
D/TransferSerivce: Network connected: true
D/AwsUploadManager: onStateChanged IN_PROGRESS
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent0 bytesTotal16917
D/com.amazonaws.request: Sending Request: PUT.........
D/libc: [NET] android_getaddrinfofornet+,hn 41(0x6369616f2d696d),sn(),hints(known),family 0,flags 4
D/libc: [NET] android_getaddrinfofornet-, err=8
D/libc: [NET] android_getaddrinfofornet+,hn 41(0x6369616f2d696d),sn(),hints(known),family 0,flags 1024
D/libc: [NET] android_getaddrinfofornet-, pass to proxy
D/libc: [NET] android_getaddrinfo_proxy+
D/libc: [NET] android_getaddrinfo_proxy get netid:0
D/libc: [NET] android_getaddrinfo_proxy-, success
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent16917 bytesTotal16917
D/com.amazonaws.request: Received successful response: 200, AWS Request ID: 85952ED0E0FCF444
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent16917 bytesTotal16917
D/AwsUploadManager: onStateChanged COMPLETED
D/AwsUploadManager: Upload finished: 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: Uploaded url: https://server-name.s3.eu-central-1.amazonaws.com/56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: Uploading file: /storage/emulated/0/folder/profile20160219_122512.jpg
D/AwsUploadManager: Uploading under key: 56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d
D/AwsUploadManager: AwsUploadManager 56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d
D/AwsUploadManager: onStateChanged IN_PROGRESS
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent0 bytesTotal1930575
D/com.amazonaws.request: Sending Request: PUT https://server-name.s3.eu-central-1.amazonaws.com /56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d Headers: (x-amz-decoded-content-length: 1930575, Content-MD5....
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent655360 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1048576 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1310720 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1703936 bytesTotal1930575
D/com.amazonaws.request: Received successful response: 200, AWS Request ID: DE9670A8450D4BAB
**D/TransferSerivce: Stop self**  --And here amazon stopped self without notifying registered listeners about transfer..

업로드를 호출하는 데 사용되는 코드 :

TransferObserver transferObserver = mTransferUtility.upload(BUCKET_NAME, fileKey, file);
transferObserver.setTransferListener(new TransferListener() {...}

Cognito 풀 대신 pub / sec 키 자격 증명과 함께 표준 인증 방법을 사용한다는 점을 제외하면 모든 것이 샘플의 표준입니다.

  mAwsCredentials = new BasicAWSCredentials(mContext.getString(R.string.aws_accress_key), context.getString(R.string.aws_secret_key));
  mAmazonS3Client = new AmazonS3Client(mAwsCredentials);
  mAmazonS3Client.setRegion(com.amazonaws.regions.Region.getRegion(REGION));
  mTransferUtility = new TransferUtility(mAmazonS3Client, mContext);

Btw이 문제는 때로는 첫 번째 파일 업로드에서 때때로 발생하며 때로는 업로드하려는 파일 수와 관련이 없습니다. 또한 때로는 업로드가 중단되기 전에 onProgressChanged가 한 번만 실행되고 나중에 수신 된 성공적인 응답과 자체 중지를 볼 수 있습니다.

질문 : 이전에이 문제를 경험 한 사람이 있으며 어떤 관련이 있습니까? 나는 이것을 비교적 자주 (2 회마다) 경험하고있어서 네트워크와 관련이 있는지 확실하지 않습니다. 그렇더라도 아마존이 네트워크 오류를 올바르게 처리하거나 적어도 등록 된 리스너에게 알릴 것으로 예상했습니다. 또한 일부 소스 코드를 살펴본 후 문서에서 네트워크 문제를 제대로 처리하고 있다는 느낌을 받았기 때문에 내 편에서 끔찍한 일을하고 있기를 바라고 있습니다.

양판

v2.2.12의 최근 변경 사항은 등록 된 전송 리스너에 대한 약한 참조 만 유지합니다. 사용자는 전송이 완료 될 때까지 전송 리스너를 보유 할 책임이 있습니다. 의도는 메모리 누수를 방지하는 것입니다. 그러나 그 사용법은 명확하게 문서화되어 있지 않습니다. 향후 릴리스에서 조정할 계획입니다. 계속 지켜봐주세요.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

AWS S3에 업로드 실패

분류에서Dev

AWS S3 버킷에서 업로드 실패 알림

분류에서Dev

백업을 실행하고 AWS S3에 업로드하는 Bash 스크립트 실패

분류에서Dev

JavaScript로 AWS S3에 직접 이미지 업로드

분류에서Dev

Amazon s3 개조 실패에 이미지 업로드 : 시간 초과

분류에서Dev

S3 AWS에 URL 이미지 업로드

분류에서Dev

AWS 오류, "프로필 파일이 null 일 수 없습니다"S3에서 객체를 다운로드

분류에서Dev

액세스 키없이 AWS S3 JavaScript 브라우저 업로드

분류에서Dev

AWS-aws_s3 확장 (RDS에서 제공)을 사용하여 S3에서 RDS (postgres)로 가져 오기가 실패 함

분류에서Dev

백업 파일로 인한 AWS S3 403 서버 오류

분류에서Dev

아파치 낙타를 사용 아마존 S3에 파일을 업로드하려고 'AWS S3 키 헤더없는'오류

분류에서Dev

React Native AWS S3 업로드

분류에서Dev

모바일 앱에서 AWS S3로 이미지 업로드

분류에서Dev

사전 정의 된 파일 이름으로 AWS S3 CORS 업로드

분류에서Dev

업로드시 S3에서 AWS Windows EC2 가져 오기

분류에서Dev

Amazon S3 버킷에 파일을 직접 업로드하려고하면 요청이 실패 함

분류에서Dev

AWS Api 게이트웨이를 통한 S3 양식 파일 업로드

분류에서Dev

AWS CodePiplene이 S3 버킷에 파일을 업로드하지 않음

분류에서Dev

AWS S3 POST 객체 양식이 업로드를 시작하는 방법

분류에서Dev

Turk에서 AWS S3 SDKv2 및 이미지 업로드 iOS

분류에서Dev

AWS S3 버킷에 업로드하는 동안 파일 이름 변경

분류에서Dev

CollectionFS 및 cfs-s3 meteor 패키지를 사용한 AWS S3 버킷 업로드

분류에서Dev

URL에서 여러 이미지를 다운로드하고 AWS Lambda (nodejs)에서 aws s3에 업로드

분류에서Dev

Spring Boot 오류 "프로필 파일은 null 일 수 없음"이있는 AWS S3

분류에서Dev

AWS : 예약 된 Python 코드를 실행하여 정적 S3 페이지 업데이트

분류에서Dev

내부 서버 오류-AWS Lambda / API Gateway / s3를 통해 base64를 업로드 할 때

분류에서Dev

aws-sdk-java를 사용하여 S3 버킷에 업로드하는 동안 PermanentRedirect 오류

분류에서Dev

AWS S3 Glacier 업로드 아카이브 실행을 완료하는 데 오랜 시간이 걸리는-상태를 확인하거나 업로드 속도를 높이는 방법은 무엇입니까?

분류에서Dev

오류없이 tfs 2013 빌드 실패

Related 관련 기사

  1. 1

    AWS S3에 업로드 실패

  2. 2

    AWS S3 버킷에서 업로드 실패 알림

  3. 3

    백업을 실행하고 AWS S3에 업로드하는 Bash 스크립트 실패

  4. 4

    JavaScript로 AWS S3에 직접 이미지 업로드

  5. 5

    Amazon s3 개조 실패에 이미지 업로드 : 시간 초과

  6. 6

    S3 AWS에 URL 이미지 업로드

  7. 7

    AWS 오류, "프로필 파일이 null 일 수 없습니다"S3에서 객체를 다운로드

  8. 8

    액세스 키없이 AWS S3 JavaScript 브라우저 업로드

  9. 9

    AWS-aws_s3 확장 (RDS에서 제공)을 사용하여 S3에서 RDS (postgres)로 가져 오기가 실패 함

  10. 10

    백업 파일로 인한 AWS S3 403 서버 오류

  11. 11

    아파치 낙타를 사용 아마존 S3에 파일을 업로드하려고 'AWS S3 키 헤더없는'오류

  12. 12

    React Native AWS S3 업로드

  13. 13

    모바일 앱에서 AWS S3로 이미지 업로드

  14. 14

    사전 정의 된 파일 이름으로 AWS S3 CORS 업로드

  15. 15

    업로드시 S3에서 AWS Windows EC2 가져 오기

  16. 16

    Amazon S3 버킷에 파일을 직접 업로드하려고하면 요청이 실패 함

  17. 17

    AWS Api 게이트웨이를 통한 S3 양식 파일 업로드

  18. 18

    AWS CodePiplene이 S3 버킷에 파일을 업로드하지 않음

  19. 19

    AWS S3 POST 객체 양식이 업로드를 시작하는 방법

  20. 20

    Turk에서 AWS S3 SDKv2 및 이미지 업로드 iOS

  21. 21

    AWS S3 버킷에 업로드하는 동안 파일 이름 변경

  22. 22

    CollectionFS 및 cfs-s3 meteor 패키지를 사용한 AWS S3 버킷 업로드

  23. 23

    URL에서 여러 이미지를 다운로드하고 AWS Lambda (nodejs)에서 aws s3에 업로드

  24. 24

    Spring Boot 오류 "프로필 파일은 null 일 수 없음"이있는 AWS S3

  25. 25

    AWS : 예약 된 Python 코드를 실행하여 정적 S3 페이지 업데이트

  26. 26

    내부 서버 오류-AWS Lambda / API Gateway / s3를 통해 base64를 업로드 할 때

  27. 27

    aws-sdk-java를 사용하여 S3 버킷에 업로드하는 동안 PermanentRedirect 오류

  28. 28

    AWS S3 Glacier 업로드 아카이브 실행을 완료하는 데 오랜 시간이 걸리는-상태를 확인하거나 업로드 속도를 높이는 방법은 무엇입니까?

  29. 29

    오류없이 tfs 2013 빌드 실패

뜨겁다태그

보관