managed-db-services について
DigitalOcean App Platform のアプリ向けに、Managed Databases の設定を支援するスキルです。MySQL、MongoDB、Valkey、Kafka、OpenSearch のアプリ仕様、接続変数、信頼済みソースの制約、トラブルシューティングを扱います。
主な機能
- 015種類のマネージドデータベースの設定
- 02App Platform のデータベース仕様作成
- 03接続変数と認証情報の設定
- 04信頼済みソースと VPC の制約説明
- 05接続エラーのトラブルシューティング
活用シーン
- 01App Platform アプリ用 MySQL の設定
- 02MongoDB または Valkey のデプロイ
- 03Kafka または OpenSearch 接続の設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ digitalocean-labs/ do-app-platform-skills --skill managed-db-servicesインストール後、Claude Code で/managed-db-servicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreference/kafka.mdmongodb.mdmysql.mdopensearch.mdvalkey.md詳細
マネージドデータベースサービススキル
App Platform アプリケーション向けに、DigitalOcean Managed MySQL、MongoDB、Valkey(Redis)、Kafka、OpenSearch を設定します。
クイック判断
Which database engine?
├── PostgreSQL → Use the postgres skill instead
├── MySQL → See reference/mysql.md
├── MongoDB → See reference/mongodb.md
├── Valkey/Redis → See reference/valkey.md
├── Kafka → See reference/kafka.md (⚠️ trusted sources limitations)
└── OpenSearch → See reference/opensearch.md
ヒント:複雑な複数ステップのデプロイには、planner スキルを使用してください。すべてのスキルの概要については、ルートの SKILL.md を参照してください。
重要な制約
| 制約 | 影響 |
|---|---|
| 開発用データベース | PostgreSQL のみ — MySQL/MongoDB/Kafka/OpenSearch には production: true が必要です |
| ビルド時の DB アクセス | ❌ 信頼済みソースはビルドフェーズをブロックします — マイグレーションには PRE_DEPLOY ジョブを使用してください |
| Kafka の信頼済みソース | IP ベースのみ(ip_addr:)。アプリベース(app:)はサポートされていません |
| OpenSearch のロギング | ❌ 信頼済みソースが有効な場合はサポートされていません |
| MongoDB の db_name | アプリ仕様では大文字を使用できません |
信頼済みソースのクイックリファレンス
| ネットワークモード | ルールタイプ | サポート対象のエンジン |
|---|---|---|
| パブリック | app:$APP_ID | MySQL、MongoDB、Valkey、OpenSearch |
| パブリック | app:$APP_ID | ❌ Kafka(サポートされていません) |
| VPC | ip_addr:<vpc-cidr> | すべてのエンジン |
| VPC | app:$APP_ID | ❌ なし(アプリルールはパブリック IP のみを許可リストに登録します) |
VPC デプロイ:VPC CIDR(
ip_addr:10.126.0.0/20)を使用してください。アプリごとの IP を設定するより簡単です。詳細な設定については、networking スキル - Trusted Sources を参照してください。
バインド可能な変数(すべてのエンジン)
databases:
- name: db # Component name (used in ${db.VAR_NAME})
engine: <ENGINE> # MYSQL, MONGODB, REDIS, KAFKA, OPENSEARCH
production: true # REQUIRED for bindable variables
cluster_name: my-cluster # Must match existing cluster name
db_name: myappdb # Database within cluster (where applicable)
db_user: myappuser # User created via doctl
| 変数 | 説明 |
|---|---|
${db.DATABASE_URL} | 完全な接続文字列(パブリックホスト名のみ!) |
${db.HOSTNAME} | データベースのホスト(パブリックホスト名のみ!) |
${db.PORT} | データベースのポート |
${db.USERNAME} | データベースユーザー |
${db.PASSWORD} | データベースのパスワード(自動入力) |
${db.DATABASE} | データベース名 |
${db.CA_CERT} | TLS 用 CA 証明書 |
VPC に関する注意:VPC を有効にしても、バインド可能な変数から返されるのはパブリックホスト名です。プライベートエンドポイントを使用するには、ハードコードしたプライベートホスト名を指定する別の
*_PRIVATE_*環境変数を追加してください。
エンジンのクイックリファレンス
| エンジン | アプリ仕様 | ポート | プロトコル | 主な注意事項 |
|---|---|---|---|---|
| MySQL | MYSQL | 25060 | mysql://...?ssl-mode=REQUIRED | 完全ガイド |
| MongoDB | MONGODB | 27017 | mongodb+srv://...?tls=true&authSource=admin | 完全ガイド |
| Valkey | REDIS | 25061 | rediss://(SSL 使用) | 完全ガイド |
| Kafka | KAFKA | 9093 | SASL/SCRAM-SHA-256 | 完全ガイド |
| OpenSearch | OPENSEARCH | 25060 | https://(ベーシック認証使用) | 完全ガイド |
クイックスタート:MySQL
# 1. Create cluster + user
doctl databases create my-mysql --engine mysql --region nyc3 --size db-s-1vcpu-2gb --version 8
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-mysql | awk '{print $1}')
doctl databases db create $CLUSTER_ID myappdb
doctl databases user create $CLUSTER_ID myappuser
# 2. Add to trusted sources
APP_ID=$(doctl apps list --format ID,Spec.Name --no-header | grep my-app | awk '{print $1}')
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID
# 3. Reference in app spec
databases:
- name: db
engine: MYSQL
production: true
cluster_name: my-mysql
db_name: myappdb
db_user: myappuser
services:
- name: api
envs:
- key: DATABASE_URL
scope: RUN_TIME
value: ${db.DATABASE_URL}
完全ガイド:mysql.md を参照してください。
クイックスタート:MongoDB
doctl databases create my-mongo --engine mongodb --region nyc3 --size db-s-1vcpu-2gb --version 7
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-mongo | awk '{print $1}')
doctl databases user create $CLUSTER_ID myappuser
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID
databases:
- name: db
engine: MONGODB
production: true
cluster_name: my-mongo
db_user: myappuser
services:
- name: api
envs:
- key: MONGODB_URI
scope: RUN_TIME
value: ${db.DATABASE_URL}
完全ガイド:mongodb.md を参照してください。
クイックスタート:Valkey
doctl databases create my-valkey --engine redis --region nyc3 --size db-s-1vcpu-2gb --version 7
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-valkey | awk '{print $1}')
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID
databases:
- name: cache
engine: REDIS
production: true
cluster_name: my-valkey
services:
- name: api
envs:
- key: REDIS_URL
scope: RUN_TIME
value: ${cache.DATABASE_URL}
完全ガイド:valkey.md を参照してください。
クイックスタート:Kafka
警告:Kafka は
app:$APP_IDの信頼済みソースルールをサポートしていません。VPC と IP ベースのルールを使用するか、信頼済みソースを無効にしてください。
doctl databases create my-kafka --engine kafka --region nyc3 --size db-s-2vcpu-4gb --version 3.7
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-kafka | awk '{print $1}')
doctl databases topics create $CLUSTER_ID my-topic --partition-count 3 --replication-factor 2
databases:
- name: kafka
engine: KAFKA
production: true
cluster_name: my-kafka
services:
- name: api
envs:
- key: KAFKA_BROKER
scope: RUN_TIME
value: ${kafka.HOSTNAME}:${kafka.PORT}
- key: KAFKA_USERNAME
scope: RUN_TIME
value: ${kafka.USERNAME}
- key: KAFKA_PASSWORD
scope: RUN_TIME
value: ${kafka.PASSWORD}
- key: KAFKA_CA_CERT
scope: RUN_TIME
value: ${kafka.CA_CERT}
完全ガイド:kafka.md を参照してください。
クイックスタート:OpenSearch
警告:OpenSearch へのロギングには、信頼済みソースを無効にする必要があります。
doctl databases create my-opensearch --engine opensearch --region nyc3 --size db-s-2vcpu-4gb --version 2
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-opensearch | awk '{print $1}')
doctl databases user create $CLUSTER_ID myappuser
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID
databases:
- name: search
engine: OPENSEARCH
production: true
cluster_name: my-opensearch
db_user: myappuser
services:
- name: api
envs:
- key: OPENSEARCH_URL
scope: RUN_TIME
value: https://${search.USERNAME}:${search.PASSWORD}@${search.HOSTNAME}:${search.PORT}
完全ガイド:opensearch.md を参照してください。
よく使う doctl コマンド
# List all database clusters
doctl databases list
# Get cluster details
doctl databases get <cluster-id>
# Create user (DO manages password)
doctl databases user create <cluster-id> <username>
# List users
doctl databases user list <cluster-id>
# Create database within cluster
doctl databases db create <cluster-id> <db-name>
# Get connection details
doctl databases connection <cluster-id>
# Trusted sources (firewall)
doctl databases firewalls append <cluster-id> --rule app:<app-id>
doctl databases firewalls list <cluster-id>
クイックトラブルシューティング
| エラー | 原因 | 対処方法 |
|---|---|---|
| "Connection refused" | アプリが信頼済みソースに含まれていません | doctl databases firewalls append <cluster-id> --rule app:<app-id> |
| "Access denied" | ユーザー権限が設定されていません | SQL で権限を付与するか、ユーザーを再作成します |
| バインド可能な変数が空 | production: true がありません | データベースブロックに production: true を追加します |
| SSL が必要 | 接続文字列に SSL がありません | ?ssl-mode=REQUIRED(MySQL)、?tls=true(MongoDB)を追加するか、rediss://(Valkey)を使用します |
| Kafka 接続に失敗 | app: ルールを使用しています | Kafka は ip_addr: ルールのみをサポートしています。VPC を使用するか、TS を無効にします |
参考ファイル
- mysql.md — コネクションプール、ユーザー権限、パスワード暗号化
- mongodb.md — ユーザーロール、authSource の設定
- valkey.md — エビクションポリシー、SSL プロトコル
- kafka.md — SASL 認証、SSL 証明書の処理、Schema Registry
- opensearch.md — ACL、ログの制限事項
代わりに Postgres スキルを使用する場合
次の場合は、postgres スキルを使用してください。
- スキーマの分離(マルチテナント)
- 複雑な権限管理
- 複数のアプリによる単一クラスターの共有
- コネクションプールの設定
このスキルは、MySQL、MongoDB、Valkey、Kafka、OpenSearch を使用する、シンプルな単一データベース構成向けです。
他のスキルとの連携
| スキル | 連携内容 |
|---|---|
| designer | アプリ仕様に databases: ブロックを生成します |
| deployment | 追加のシークレットは不要です。認証情報はバインド可能な変数で処理されます |
| networking | VPC と信頼済みソースの設定 |
| troubleshooting | 接続テスト用のデバッグコンテナ |