Android에서 UTF-8-MAC 파일 이름을 S3에서 Cognito를 통해 다운로드하면 Access Denied가되는 문제

개요



UTF-8-MAC 파일 (소위 OSX에서 탁점이있는 파일)을 S3에 업로드하고 Cognito를 통해 다운로드하려고하면 Access Denied가되는 문제
Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied

↓OSX로 만든 이런 파일


↓ 실제 소스에 복사하면 이런 느낌


결론


  • aws-android-sdk-s3 버전을 2.3.+로 설정합니다 (2.4. + 이상으로 발생합니다)
  • 최신 버전 2.6.6에서도 일어난다 (2017/10/30 현재)

  • build.gradle
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
        // AWS
        // 2.3.+系では動く
        compile 'com.amazonaws:aws-android-sdk-core:2.3.+'
        compile 'com.amazonaws:aws-android-sdk-s3:2.3.+'
        // 2.4.+系以上では動かない
        //compile 'com.amazonaws:aws-android-sdk-core:2.4.+'
        //compile 'com.amazonaws:aws-android-sdk-s3:2.4.+'
    }
    

    보충



    일단 issue 세웠기 때문에 그 중 치료할지도 모릅니다만, 현재는 버전을 낮추어 대응하고 있습니다.
    덧붙여서 iOS판에서는 일어나지 않습니다. 안드로이드 SDK 버그입니다.

    (원래 그런 이름의 파일을 주지 말아야 의견도 있을지도 모릅니다만)

    참고한 기사


  • Cognito를 사용하여 공개되지 않은 S3 버킷에서 파일 가져오기
  • 좋은 웹페이지 즐겨찾기