13

これを実装する方法がわかりません。どんなヘルプやポインタも大歓迎です。

現在、私の Java/Spring アプリケーション バックエンドはEC2にデプロイされており、通常の Spring JDBC セットアップを使用して RDS 上の MySQL に正常にアクセスしています。つまり、データベース情報を@Configurationクラスに格納しapplication.propertiesて構成DataSourceします。すべて正常に動作します。JdbcTemplate

ここで、RDS 上の MySQL に安全にアクセスする必要があります。RDS インスタンスでは IAM 認証が有効になっています。また、 IAM ロールを正常に作成し、インライン ポリシーを適用しました。次に、このリンクの AWS RDS ドキュメントと Java の例に従って、認証トークンと、通常の db ユーザー名とパスワードの代わりに作成したユーザーを使用して、スタンドアロン Java クラスからデータベースに正常にアクセスできます。このスタンドアロン Java クラスは、" Connection " オブジェクトを直接処理します。

私が立ち往生している場所は、これを Spring JDBC 構成に変換する方法です。つまり、 @Configuration クラスでこれを設定しDataSourceてBean を設定します。JdbcTemplate

これを実装するための正しい/正しいアプローチは何でしょうか?

----- 編集 - 開始 -----

これを複数のプロジェクトで使用できるライブラリとして実装しようとしています。つまり、JAR として使用され、プロジェクトの POM ファイルで依存関係として宣言されます。このライブラリには、一般的な DB ユーザー名とパスワードを使用したこの RDS アクセス、IAM 認証を使用した RDS アクセス、データ暗号化用の KMS (CMK/データ キー) などの設定可能な AWS サービスが含まれます。

アイデアは、プロジェクトに応じて、任意の Web/アプリ サーバーでこのライブラリを使用することです。

これで私のニーズがさらに明確になることを願っています。

----- 編集 - 終了 -----

DataSource には内部的に getConnection() があるため、基本的には独自の DataSource 実装を作成して、目的を達成できます。しかし、これは良いアプローチですか?

何かのようなもの:

public class MyDataSource implements DataSource {
    @Override
    public Connection getConnection() throws SQLException {
        Connection conn = null;
        // get a connection using IAM Authentication Token for accessing AWS RDS, etc. as in the AWS docs
        return conn;
    }

    @Override
    public Connection getConnection(String username, String password) throws SQLException {
        return getConnection();
    }

    //other methods
} 
4

2 に答える 2