公司最近接了个海外项目,需要用到AWS的S3对象存储,但是网上都是1.11.x版本的资料,和2.x相差有点大。
我参照了亚马逊gitHub上的2.x源码示例,写了个S3上传对象的例子。文件是成功上传了,能在控制台看到,但是后台报Lambda异常了,不知如何解决。
引入的S3版本如下:
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>2.5.25</version>
</dependency>
代码如下:
public static void main(String[] args) {
S3Config config = new S3Config();
config.setAccessKeyId("xxxxxxxxxxxxxx");
config.setSecretAccessKey("xxxxxxxxxxxxxxxx");
config.setBucketName("aws-s3-test111");
config.setRegion("ap-south-1");
config.setDomain("https://s3.ap-south-1.amazonaws.com/");
String key = "2019-04-11/today_1.jpg";
Region region = Region.of(config.getRegion());
try {
AwsCredentials awsCred = AwsBasicCredentials.create(config.getAccessKeyId(), config.getSecretAccessKey());
S3Client client = S3Client.builder().credentialsProvider(StaticCredentialsProvider.create(awsCred)).region(region).build();
String filePath = "F:微信图片_20180122165411.jpg";
File file = new File(filePath);
InputStream inputStream = new FileInputStream(file);
client.putObject(PutObjectRequest.builder().bucket(config.getBucketName()).key(key).build(),
RequestBody.fromInputStream(inputStream, inputStream.available()));
} catch (IOException e) {
e.printStackTrace();
}
}
异常如下图