0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricks AppsからAWS Aurora Data APIを使用したデータベースアクセス方法

Last updated at Posted at 2025-05-05

はじめに

Databricks AppsからAWS Aurora Data APIを使用してデータベースにアクセスする方法について説明します。
この記事では、Databricksのシークレット管理機能を使用してデータベース接続情報を安全に管理し、
SQLAlchemyを使用してクエリを構築、AuroraDataAPIを使用してデータベースにアクセスする方法を紹介します。

前段

データベース接続情報の管理

1. シークレットスコープの作成

前段で実施したAWSの設定に加え、データベース接続情報を管理するための専用のスコープを作成します。

databricks secrets create-scope database

2. データベース接続情報の追加

作成したスコープにデータベース接続情報を追加します。

# DB_CLUSTER_ARNの追加
databricks secrets put-secret --json '{
  "scope": "database",
  "key": "DB_CLUSTER_ARN",
  "string_value": "<DB_CLUSTER_ARN>"
}'

# DB_SECRET_ARNの追加
databricks secrets put-secret --json '{
  "scope": "database",
  "key": "DB_SECRET_ARN",
  "string_value": "<DB_SECRET_ARN>"
}'

# DATABASE_NAMEの追加
databricks secrets put-secret --json '{
  "scope": "database",
  "key": "DATABASE_NAME",
  "string_value": "<DATABASE_NAME>"
}'

3. シークレットの確認

追加したシークレットを確認します。

databricks secrets list-secrets database

Databricks Appsでの設定

1. app.yamlの設定

アプリの設定ファイル(app.yaml)でデータベース接続情報を参照するように設定します。

command: [
  "gunicorn",
  "main:app",
  "-k",
  "uvicorn.workers.UvicornWorker",
  "-w",
  "1",
]
env:
  - name: 'AWS_ACCESS_KEY_ID'
    valueFrom: 'AWS_ACCESS_KEY_ID'
  - name: 'AWS_SECRET_ACCESS_KEY'
    valueFrom: 'AWS_SECRET_ACCESS_KEY'
  - name: 'DB_CLUSTER_ARN'
    valueFrom: 'DB_CLUSTER_ARN'
  - name: 'DB_SECRET_ARN'
    valueFrom: 'DB_SECRET_ARN'
  - name: 'DATABASE_NAME'
    valueFrom: 'DATABASE_NAME'

2. Databricks Appsの設定

前段で実施したAWSの設定に加え、Databricks Appsの設定画面で、以下の設定を行います:

  • scope: database
  • secret key: DB_CLUSTER_ARN, DB_SECRET_ARN, DATABASE_NAME
  • 権限: 読み取り可能
  • リソースキー: DB_CLUSTER_ARN, DB_SECRET_ARN, DATABASE_NAME

アプリケーションでのデータベースアクセス

※SQLAlchemyのモデリングとAlembicによるマイグレーションは実施している前提とします。

1. SQLAlchemyからクエリ文字列を生成する

SQLAlchemyを使用してクエリを構築し、クエリ文字列を生成する
例) ユーザテーブルから全権取得するクエリ文字列の生成

query = select(User)
sql = str(query.compile(compile_kwargs={"literal_binds": True}))

2. クエリの実行例

SQLAlchemyで構築したクエリ文字列をAurora Data APIで実行する例を示します。

client = get_rds_data_client()
response = client.execute_statement(
  resourceArn=DB_CLUSTER_ARN,
  secretArn=DB_SECRET_ARN,
  database=DATABASE_NAME,
  sql=sql,
  parameters=parameters if parameters is not None else []
)
return response

まとめ

Databricks AppsからAWS AuroraにはNW経由のアクセスができないことから、Aurora Data APIを使用してデータベースにアクセスする必要があり、検証を行いました。
Aurora Data APIではクエリ文字列を利用することが必要だったため、ORMであるSQLAlchemyから一度クエリ文字列を生成し、Aurora Data APIを使用してデータベースにアクセスする方法を紹介しました。

また、一連の流れを通じて、既存のAWSを利用したアプリケーションをDatabricks Appsに移行できそうなことがわかりました。

参考資料

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?