Jay's Developer Note

[Android] AWS S3 Download 하기(Util 소스 코드 有) 본문

Android

[Android] AWS S3 Download 하기(Util 소스 코드 有)

Jay(J) 2022. 10. 27. 23:18
728x90

AWS S3 Download 하기

밤낮 쉴 틈 없이 프로젝트를 진행하다 보니 어느새 반년이 훅 지나갔다.

아무래도 프로젝트 내에서 안드로이드를 혼자서 맡아하다 보니 블로그를 관리할 물리적인 시간이 없었다.. ㅠㅠ

그래도 덕분에 배운 것들도 많고 리마인드 된 것들도 많다.

이제 어느 정도 시간이 나서 슬슬 정리하는 시간을 가져볼까 한다.

 

마지막 게시글에 이어 이번엔 S3 에서 다운로드를 하는 코드를 공유해볼까 한다.

기타 S3 설정은 이전 글을 참고하면 된다.

https://fall-in-it.tistory.com/46

 

[Android] AWS S3 Upload 하기(Util 소스 코드 有)

프로젝트 진행 중에 클라이언트에서 주기적으로 AWS S3 에 파일을 올려야 하는 상황이 생겼다. 그래서 Util 을 만들었고 기록용으로 글을 작성하려 한다. 나중에 git 화 해야겠다. 소스코드는 공개

fall-in-it.tistory.com

Public bucket 은 공개된 URL 로 쉽게 접근할 수 있기 때문에 여기서는 Private bucket 에 대해 다루겠다.

URL Streaming 은 여기에서

 

Android 설정

Dependency 추가(app 단의 build.gradle)

implementation 'com.amazonaws:aws-android-sdk-s3:2.13.5'

동일하게 추가해준다.

소스코드(그 외는 이전 게시글 참조)

/**
 * S3 파일 다운로드
 *
 * @param context    Context
 * @param bucketName S3 버킷 내 폴더 경로(이름포함, /(슬래쉬) 맨 앞, 맨 뒤 없이)
 * @param fileName   파일 이름
 * @param file       저장할 Local 파일 경로
 * @param listener   AWS S3 TransferListener
 */
public void downloadWithTransferUtility(
            Context context,
            String bucketName, String fileName, File file,
            TransferListener listener
    ) {
    AWSCredentials awsCredentials = new BasicAWSCredentials(
            accessKey, secretKey
    );

    AmazonS3Client s3Client = new AmazonS3Client(
            awsCredentials, region
    );

    TransferUtility transferUtility = TransferUtility.builder()
            .s3Client(s3Client)
            .context(context)
            .build();

    TransferNetworkLossHandler.getInstance(context);

    TransferObserver downloadObserver = transferUtility.download(
            bucketName, fileName, file
    );

    downloadObserver.setTransferListener(listener);

}

 

사용법

S3Util.getInstance()
      .setKeys("accessKey", "secretKey")
      .setRegion(Regions.AP_NORTHEAST_2)
      .downloadWithTransferUtility(
          this,
          "bucketPathName",
          "fileName",
          desFile,
          new TransferListener() {
              ...
          }
      );

 

728x90