aws sdk for java 安装_使用AWS SDK for Java 上傳和下載文件

乐正育
2023-12-01

使用AWS SDK for Java 上傳和下載文件。 已有 amazonaws.cn 中國區賬號。

本文敘述了怎樣獲取訪問密鑰,進行demo配置,demo運行出錯的解決辦法。

1. 獲取訪問密鑰

登錄 https://console.amazonaws.cn/iam/home,點擊左側“用戶”,選擇自己的賬號;點擊“安全證書”,可以看到下方有訪問密鑰,我的賬號只能申請2個密鑰,之前的key已經不知道了,刪掉舊的申請個新的即可。得到的就是aws_access_key_id 和 aws_secret_access_key 。

2. 配置密鑰

~/.aws/credentials (在 Linux、macOS 或 Unix) 上

C:\Users\USERNAME\.aws\credentials (在 Windows 上)

文件包含以下格式的行,用自己的 AWS 憑證值替換值 your_access_key_id 和 your_secret_access_key。

[default]

aws_access_key_id = your_access_key_id

aws_secret_access_key = your_secret_access_key

3. 我的第一個上傳demo

private static String bucketName = "手動在AWS S3中創建的桶名稱";

private static String keyName = "希望這個文件上傳后的key,需要注意的,這個key不要重復,否則會覆蓋掉舊的文件";

private static String uploadFileName = "待上傳的本地文件路徑和名稱";

gradle

// https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3

compile group: 'com.amazonaws', name: 'aws-java-sdk-s3', version: '1.11.238'

Demo失敗原因1

java.lang.reflect.InvocationTargetException: null

……

Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to englishresourcebucket.s3.amazonaws.com:443 [englishresourcebucket.s3.amazonaws.com/54.231.33.147] failed: Read timed out

……

Caused by: java.net.SocketTimeoutException: Read timed out

解決辦法,設置區域:

String regionName = "cn-north-1";

Region region = Region.getRegion(Regions.fromName(regionName));

s3client.setRegion(region);

String serviceEndpoint = region.getServiceEndpoint(ServiceAbbreviations.S3);

s3client.setEndpoint(serviceEndpoint);

s3client.putObject(new PutObjectRequest(bucketName, keyName, file));

4. 文件下載

同樣的也加上區域設置的代碼,就可以跑通這段demo了。

 类似资料: