概要
- javaでS3のバケット一覧を取得する方法を確認したのでmemo
- 結論としては、AWSのexampleでそのままできた
サンプルコード
Javaコード
※コメントを加えた以外はAWS公式のexampleを使用しています。
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;
import java.util.List;
public class ListObject {
public static void main(String[] args){
// S3クライアントの呼び出し
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
// S3からバケットリストを取得し、リストに格納
List<Bucket> buckets = s3.listBuckets();
// 取得したリストから名前を取得する
for (Bucket b : buckets) {
System.out.println("* " + b.getName());
}
}
}
build.gradle
注:aws-java-sdkのバージョンがかなり古いと思います。今回のコードは動きますが、最新のバージョンでの実施をおすすめします(今度もう少し新しいものに変えます(^_^;))
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
// https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk
implementation 'com.amazonaws:aws-java-sdk:1.12.190'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
}
事前準備
.aws/credentials
にアクセスキーとシークレットアクセスキーを設定する
[default]
aws_access_key_id = 【アクセスキー】
aws_secret_access_key = 【シークレットアクセスキー】
解説memo
ざっくりと処理順を分けると
- S3クライアントの呼び出し
- バケットリストの取得
- バケットの一覧を表示
1.S3クライアントの呼び出し
// S3クライアントの呼び出し
AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build()
Amazon S3に接続するためのAmazonS3クライアントを作成
- ざっくりと:S3に接続するのに必要な入れ物を作っているイメージ
-
AmazonS3ClientBuilder
- AmazonS3クライアントを作成する
- 様々なオプションを指定しながらAmazonS3クライアントを構築することができる
AmazonS3ClientBuilder.【オプション①】.【オプション②】
といった形でオプションを付けてクライアントを作れる
-
standard()
- デフォルトの設定する
-
withRegion(Regions.DEFAULT_REGION)
- リージョンを指定する
- ここでは
Regions.DEFAULT_REGION
を使用 - AWSアカウントのデフォルトのリージョン
-
build()
- 作成したクライアントを変数
s3
に入れる
- 作成したクライアントを変数
2.バケットリストの取得
// S3からバケットリストを取得し、リストに格納
List<Bucket> buckets = s3.listBuckets();
listBuckets()メソッドを呼び出して、現在のアカウントにあるS3バケットの一覧を取得
→バケットの一覧は、Listbuckets
に格納
3.バケットの一覧を表示
for (Bucket b : buckets) {
System.out.println("* " + b.getName());
}
forループを使用して、buckets
に格納したバケットの一覧を表示
- Bucketクラス
- 各バケットの名前を取得するgetName()メソッド利用
コメント