LoginSignup
1
1

More than 3 years have passed since last update.

AWS-SDK for Javaのライブラリ全体をインクルードしていたので個別にインクルードする

Posted at

背景

あるWebアプリケーションでは、AWSサービス(S3、SES、API-Gateway、Lambda等)を利用しています。
開発言語はJavaなのでJava用のAWS-SDK(1.11.560)を使用しています。

問題点

アプリケーションにSDK「全体」をリンクしてしまっていました。
jarファイルの数でいうとなんと171個(version560の場合)

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk</artifactId>
    <version>1.11.560</version>
</dependency>

対策と効果

JavaのAWS-SDKは1.9.0以降は、機能ごとにライブラリを取り込みできるので必要なものだけ利用します。

本アプリケーションでは、API-GatewayLambdaは間接的(ファイルアップロードやHttpRequestをトリガ)に起動するので、それらのAPIは不要です。したがって必要なライブラリはS3SESだけです。
個別に指定するには、aws-java-sdkの次にサービス名を付与すればOKです。(★で囲んで部分。もちろん★は不要)

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk★-s3★</artifactId>
    <version>1.11.560</version>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk★-ses★</artifactId>
    <version>1.11.560</version>
</dependency>

個別に取り込むことで、依存ライブラリを大幅に削減できました(jarファイル数でいうと171ファイルから5ファイル)
これで、開発時(サービスの起動時間短縮やコード補完が高速に?)や使用メモリ削減が期待できます。

com.amazonaws.aws-java-sdk-core-1.11.560.jar
com.amazonaws.aws-java-sdk-kms-1.11.560.jar
com.amazonaws.jmespath-java-1.11.560.jar
com.amazonaws.aws-java-sdk-s3-1.11.560.jar
com.amazonaws.aws-java-sdk-ses-1.11.560.jar

関連URL

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1