Table of Contents
はじめに
FundastA Inc.の鈴木です。
現在、AWSとJavaを使用した業務の中でS3にデータを登録を行いました。
それを備忘録として残しておきます。
S3にファイルをアップロード
Javaを用いて、AWSリソースを操作するコードを作成しました。
コード例
メインクラス
まず、メインクラスに書くコードです。
1 2 |
TestUpload file = new TestUpload(); file.upload(lati,longitude,person_id); |
今回のコードは経度緯度を変数に用いた形になっています。
latiとlongitudeは緯度と経度を表し、person_idはDynamoDBに入っているキー:person_idを表しています。
S3アップロードするクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
public class TestUpload { // 日付の設定 LocalDateTime nowDateTime = LocalDateTime.now(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd/HH/mm"); String time = nowDateTime.format(dtf); // 経度緯度をBigDecimal型で受け取っている。 public void upload(BigDecimal lat ,BigDecimal lon,String id){ // バケット名の指定 String bucketName = "バケット名"; // S3に保存する際の名前 String stringObjKeyName = id + "/" + time + ".txt"; String fileObjKeyName = "Java"; String fileName = "Test"; try { // S3用のビルダー、同期や非同期クライアントを構築 AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion(Regions.AP_NORTHEAST_1).build(); // ファイルのアップロード s3Client.putObject(bucketName, stringObjKeyName, lat + "," + lon); PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName, new File(fileName)); //AmazonS3で保存されるオブジェクトメタデータを表します. ObjectMetadata metadata = new ObjectMetadata(); // コンテンツタイプの設定 metadata.setContentType("plain/text"); // メタデータに「Key」、「Value」のペアを追加 metadata.addUserMetadata("title", "someTitle"); // requestにメタデータをセットする。 request.setMetadata(metadata); // アップロード s3Client.putObject(request); } catch (AmazonServiceException e) { e.printStackTrace(); } catch (SdkClientException e){ e.printStackTrace(); } } } |
コード詳細説明
S3にアップロードするための箱を作る。
1 2 |
// S3用のビルダー、同期や非同期クライアントを構築 AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion(Regions.AP_NORTHEAST_1).build(); |
S3Clientとrequestの入れ物を作成
1 2 3 4 |
// ファイルのアップロード s3Client.putObject(bucketName, stringObjKeyName, lat + "," + lon); // requestにバケット名等を入れ込む PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName, new File(fileName)); |
その後、変数requestを作成、これはのちにメタデータを入れる入れ物になります。
メタデータのセット
1 2 3 4 5 6 7 8 |
//AmazonS3で保存されるオブジェクトメタデータを表します. ObjectMetadata metadata = new ObjectMetadata(); // コンテンツタイプの設定 metadata.setContentType("plain/text"); // メタデータに「Key」、「Value」のペアを追加 metadata.addUserMetadata("title", "someTitle"); // requestにメタデータをセットする。 request.setMetadata(metadata); |
その追加したメタデータをPutObjectRequest 型の変数requestに追加する。
S3にアップロード
1 2 |
// アップロード s3Client.putObject(request); |
これでS3にデータを作ることができました。
保存されたデータ
希望とするファイル名
test_2021/05/05/06/32.txt (年/月/日/時/分)
となって保存されていました。
おわりに
Javaを使用して、S3にデータを保存しました。
ググりながら、進めましたが参考になる記事が少なかった気がします。
AWSのドキュメントが一番参考になったかなと思います。
このドキュメントには、他にもJavaでS3を扱う際のコードについて書いてありますので、確認してみてください。
ご覧いただきありがとうございます。