なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

KotlinでS3バケットをmockする場合s3mockが便利だった

s3mock

github.com

ユースケース

  • ユニットテストでS3バケットへのファイルアップロード/ダウンロードをテストする場合
    • mockのS3バケットJUnitで立ち上げたり、全部のファイルを事前に削除して再作成、みたいなことができる

使い方

ライブラリのセットアップ
mock S3サーバの起動
        // mock s3 サーバを起動する
        S3Mock.Builder().withPort(8080).withInMemoryBackend().build().start()

        // AWS SDKのS3Clientのインスタンスを作る
        val s3Client = S3Client
                .builder()
                .region(Region.AP_NORTHEAST_1)
                .endpointOverride(URI.create("http://127.0.0.1:8080"))
                .credentialsProvider(AnonymousCredentialsProvider.create())
                .build()

        // s3へ操作
        s3Client.createBucket(***)
  • PythonだとmotoAWSサービスのmockを提供しているのでそういうのを使ったりする