はじめに
Databricks AppsからAWSリソースにアクセスする際、セキュアな方法で認証情報を管理する必要があります。この記事では、Databricksのシークレット管理機能を使用してAWSアクセスキーを安全に管理し、Databricks AppsからAWSリソースにアクセスする方法について説明します。
前段
AWSアクセスキーの管理
1. シークレットスコープの作成
AWSアクセスキーを管理するための専用のスコープを作成します。
databricks secrets create-scope aws
2. AWSアクセスキーの追加
作成したスコープにAWSアクセスキーを追加します。
# AWSアクセスキーIDの追加
databricks secrets put-secret --json '{
"scope": "aws",
"key": "AWS_ACCESS_KEY_ID",
"string_value": "<access-key>"
}'
# AWSシークレットアクセスキーの追加
databricks secrets put-secret --json '{
"scope": "aws",
"key": "AWS_SECRET_ACCESS_KEY",
"string_value": "<secret-access-key>"
}'
3. シークレットの確認
追加したシークレットを確認します。
databricks secrets list-secrets aws
Databricks Appsでの設定
1. app.yamlの設定
アプリの設定ファイル(app.yaml)でAWSアクセスキーを参照するように設定します。
env:
- name: 'AWS_ACCESS_KEY_ID'
valueFrom: 'AWS_ACCESS_KEY_ID'
- name: 'AWS_SECRET_ACCESS_KEY'
valueFrom: 'AWS_SECRET_ACCESS_KEY'
2. Databricks Appsの設定
Databricks Appsの設定画面で、以下の設定を行います:
- scope: aws
- secret key: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
- 権限: 読み取り可能
- リソースキー: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
アプリケーションでのAWSリソースアクセス
1. boto3を使用したAWSリソースへのアクセス
AWSアクセスキーは環境変数として自動的に設定されるため、特別な設定は不要です。
import boto3
# S3クライアントの初期化
s3 = boto3.client('s3')
# S3バケット一覧の取得
response = s3.list_buckets()
print(response)
2. その他のAWSサービスへのアクセス
同様の方法で、他のAWSサービスにもアクセスできます。
import boto3
# EC2クライアントの初期化
# 自動で環境変数からAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEYを取得し、インスタンス化
ec2 = boto3.client('ec2')
# EC2インスタンス一覧の取得
response = ec2.describe_instances()
print(response)
まとめ
Databricks AppsからAWSリソースにアクセスする際は、以下の点に注意して実装することで、セキュアな運用が可能になります:
- Databricksのシークレット管理機能を使用して、AWSアクセスキーを安全に管理する。
- Databricks Appsの設定で、シークレットを参照するように設定する。
- boto3を使用して、AWSリソースにアクセスする際は、環境変数から自動的に認証情報を取得する。
この方法により、AWSリソースへの安全なアクセスと、アプリケーションのセキュアな運用が実現できます。