app-platform-networking について
DigitalOcean App Platform のネットワーク設定を支援するスキルです。ドメイン、ルーティング、CORS、VPC、エグレス IP の設定例とトラブルシューティングを扱います。
主な機能
- 01カスタムドメインと DNS の設定
- 02パスおよびサブドメインルーティング
- 03CORS 設定リファレンス
- 04VPC と信頼済み接続元の設定
- 05専用エグレス IP の設定
- 06ネットワーク問題のトラブルシューティング
活用シーン
- 01複数サービスを同一ドメイン配下でルーティング
- 02サブドメイン間の API リクエストを設定
- 03VPC 経由でデータベースに安全に接続
- 04ファイアウォールでエグレス IP を許可リストに登録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ digitalocean-labs/ do-app-platform-skills --skill app-platform-networkingインストール後、Claude Code で/app-platform-networkingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreference/complete-patterns.mdcors-configuration.mddomains-dns.mdingress-routing.mdstatic-ips-egress.mdvpc-trusted-sources.md詳細
App Platform ネットワーキングスキル
ドメイン、ルーティング、CORS、VPC、静的 IP、サービス間通信を設定します。
クイック判断
What networking do you need?
├── Custom domain?
│ └── YES → See domains-dns.md
│
├── Multiple services on one domain?
│ ├── Different paths (/api, /app) → Path-based routing
│ └── Different subdomains (api.*, app.*) → Subdomain routing
│
├── Frontend calling API across origins?
│ └── YES → CORS configuration
│
├── Secure database connectivity?
│ └── YES → VPC + trusted sources
│
└── Need static outbound IP?
└── YES → Dedicated egress
使用するタイミング
| シナリオ | このスキルが必要 |
|---|---|
| スタータードメインのみ | いいえ |
| カスタムドメイン | はい |
| 複数のサービスで異なるパスを使用 | はい |
| 複数のサブドメイン | はい |
| サブドメイン間の API 呼び出し(CORS) | はい |
| VPC 経由の安全なデータベースアクセス | はい |
| ファイアウォールの許可リスト設定(送信 IP) | はい |
クイックリファレンス
| 機能 | App Spec フィールド | 例 |
|---|---|---|
| カスタムドメイン | domains[].domain | example.com |
| ワイルドカード | domains[].wildcard | true |
| パスルーティング | ingress.rules[].match.path.prefix | /api |
| サブドメインルーティング | ingress.rules[].match.authority.exact | api.example.com |
| CORS | ingress.rules[].cors | リファレンスを参照 |
| VPC | vpc.id | UUID |
| 専用送信 IP | egress.type | DEDICATED_IP |
パスベースのルーティング(クイックスタート)
ingress:
rules:
- component: { name: api }
match: { path: { prefix: /api } }
- component: { name: frontend }
match: { path: { prefix: / } }
ルールの順序が重要です: 具体的なルールを先に指定します。
詳細ガイド: ingress-routing.md を参照してください。
サブドメインルーティング(クイックスタート)
domains:
- domain: example.com
type: PRIMARY
wildcard: true
zone: example.com
ingress:
rules:
- component: { name: api }
match:
authority: { exact: api.example.com }
path: { prefix: / }
- component: { name: app }
match:
authority: { exact: app.example.com }
path: { prefix: / }
詳細ガイド: domains-dns.md を参照してください。
CORS(クイックスタート)
ingress:
rules:
- component: { name: api }
match: { path: { prefix: /api } }
cors:
allow_origins:
- exact: https://app.example.com
allow_methods: [GET, POST, PUT, DELETE, OPTIONS]
allow_headers: [Content-Type, Authorization]
allow_credentials: true
注意: allow_credentials: true の場合は、正確なオリジンのみを使用してください(正規表現は使用できません)。
詳細ガイド: cors-configuration.md を参照してください。
VPC + 信頼済みソース(クイックスタート)
vpc:
id: your-vpc-uuid
VPC CIDR の許可リスト設定(推奨):
doctl vpcs get $VPC_ID --format IPRange # e.g., 10.126.0.0/20
doctl databases firewalls append $CLUSTER_ID --rule ip_addr:10.126.0.0/20
| 設定 | 信頼済みソースのルール |
|---|---|
| パブリックのみ | app:$APP_ID |
| VPC 有効 | ip_addr:<vpc-cidr> |
重要: バインド可能な変数は、VPC を使用していてもパブリックホスト名を返します。プライベート URL を使用してください:
doctl databases connection --private <cluster-id> --format URI
詳細ガイド: vpc-trusted-sources.md を参照してください。
リファレンスファイル
- domains-dns.md — ドメインの種類、DNS の設定、ワイルドカード、TLS、CAA
- ingress-routing.md — パスルーティング、書き換え、リダイレクト、オーソリティの照合
- cors-configuration.md — CORS フィールド、パターン、認証情報
- vpc-trusted-sources.md — VPC の設定、信頼済みソースの一覧、プライベート URL
- static-ips-egress.md — イングレス IP、専用送信、HTTP/2、内部ポート
- complete-patterns.md — 5 つの完全なアーキテクチャパターン
よくある問題
| 問題 | 解決方法 |
|---|---|
| ドメインが解決されない | DNS レコードを確認し、伝播に最大 72 時間かかることを見込んでください |
| SSL 証明書エラー | letsencrypt.org + pki.goog の CAA レコードを追加します |
| CORS プリフライトに失敗する | allow_methods に OPTIONS を追加します |
| VPC 接続が拒否される | アプリベースのルールではなく、VPC CIDR の許可リスト設定を使用します |
| 間違ったコンポーネントが応答する | ルールの順序を入れ替えます(具体的なルールを先にします) |
他のスキルとの連携
- → designer:アプリ仕様にドメイン/イングレスを追加します
- → troubleshooting:DNS、CORS、VPC の問題をデバッグします
- → postgres:マネージドデータベースへの VPC 接続
- → deployment:ネットワーキングの変更をデプロイします
コメント
Markdown 対応