概要
- 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()メソッド利用
 
 
  
  
  
  

コメント