【Java】【AWS】S3バケット一覧を取得する

IT

概要

サンプルコード

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

ざっくりと処理順を分けると

  1. S3クライアントの呼び出し
  2. バケットリストの取得
  3. バケットの一覧を表示

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バケットの一覧を取得
→バケットの一覧は、List型の変数bucketsに格納

3.バケットの一覧を表示

for (Bucket b : buckets) {
            System.out.println("* " + b.getName());
        }

forループを使用して、bucketsに格納したバケットの一覧を表示

  • Bucketクラス
    • 各バケットの名前を取得するgetName()メソッド利用

コメント

タイトルとURLをコピーしました