亞馬遜 android S3 sdk接入(sts)
阿新 • • 發佈:2022-02-10
android 使用sts s3上傳
服務端生成sts給的AWS憑證是動態的,每1小時更新一次。
dependencies { def aws_version = "2.16.+" implementation "com.amazonaws:aws-android-sdk-s3:$aws_version" implementation ("com.amazonaws:aws-android-sdk-mobile-client:$aws_version") { transitive = true } }
public void downloadFileByKey(String key) throwsJSONException { JSONObject jsonConfig = new JSONObject(); JSONObject s3TransferUtility = new JSONObject(); jsonConfig.putOpt("S3TransferUtility", s3TransferUtility); s3TransferUtility.put("Region", "服務端請求來的region"); s3TransferUtility.put("Bucket", "服務端請求來bucket"); AWSSessionCredentials credentials= new AWSSessionCredentials() { @Override public String getSessionToken() { return "服務端請求過來的SessionToken"; } @Override public String getAWSAccessKeyId() { return "服務端請求來的AccessKey"; } @Overridepublic String getAWSSecretKey() { return "服務端請求來的SecretKey"; } }; AWSConfiguration configuration = new AWSConfiguration(jsonConfig); TransferUtility utility = TransferUtility.builder() .context(this) .s3Client(new AmazonS3Client(credentials)) .awsConfiguration(configuration) .build(); File file = new File(Environment.getExternalStorageDirectory().getPath() + "/test44.png"); TransferObserver observer = utility.download(key, file); observer.setTransferListener(new TransferListener() { @Override public void onStateChanged(int i, TransferState transferState) { if (transferState == TransferState.COMPLETED) { //下載完成了 } } @Override public void onProgressChanged(int i, long l, long l1) { } @Override public void onError(int i, Exception e) { //下載出錯 } }); }
以上是下載檔案,上傳檔案類似:
TransferObserver observer = utility.upload(key, file);學習時的痛苦是暫時的 未學到的痛苦是終生的