カスタムストレージ
Capgoは、アプリバンドル用のカスタムストレージソリューションをサポートしており、独自のインフラストラクチャまたはサードパーティのストレージサービスでアップデートをホストできます。これは、特定のセキュリティ要件、コンプライアンスニーズ、または既存のストレージインフラストラクチャを持つ組織に特に便利です。
Capgoのカスタムストレージは、バンドルを外部の場所にアップロードし、CapgoにアクセスするためのURLを提供することで機能します。Capgo SDKは、Capgoのデフォルトクラウドストレージではなく、カスタムストレージの場所から直接アップデートをダウンロードします。
外部URLアップロード
Section titled “外部URLアップロード”カスタムストレージを使用する最も簡単な方法は、バンドルを公開アクセス可能な任意のURLにアップロードし、そのURLをCapgoに提供することです。
基本的な外部URLアップロード
Section titled “基本的な外部URLアップロード”npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zipこのコマンドは、Capgoのクラウドストレージにアップロードする代わりに、指定されたURLのバンドルを参照するようにCapgoに指示します。
暗号化を使用
Section titled “暗号化を使用”安全な外部ストレージの場合、バンドルを暗号化して復号化キーを提供できます:
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip --iv-session-key YOUR_IV_SESSION_KEYCapgoは、Amazon S3およびS3互換のストレージサービスの組み込みサポートを提供します。CLIは、バンドルをS3に自動的にアップロードし、S3 URLを使用するようにCapgoを構成できます。
S3アップロードオプション
Section titled “S3アップロードオプション”npx @capgo/cli@latest bundle upload \ --s3-region us-east-1 \ --s3-apikey YOUR_ACCESS_KEY \ --s3-apisecret YOUR_SECRET_KEY \ --s3-bucket-name your-bucket-name完全なS3構成
Section titled “完全なS3構成”S3互換サービスまたはカスタムエンドポイントの場合:
npx @capgo/cli@latest bundle upload \ --s3-region us-east-1 \ --s3-apikey YOUR_ACCESS_KEY \ --s3-apisecret YOUR_SECRET_KEY \ --s3-endpoint https://s3.your-provider.com \ --s3-bucket-name your-bucket-name \ --s3-port 443 \ --no-s3-ssl # エンドポイントがSSLをサポートしていない場合のみS3構成パラメータ
Section titled “S3構成パラメータ”| パラメータ | 説明 | 必須 |
|---|---|---|
--s3-region | S3バケットのAWSリージョン | はい |
--s3-apikey | S3アクセスキーID | はい |
--s3-apisecret | S3シークレットアクセスキー | はい |
--s3-bucket-name | S3バケットの名前 | はい |
--s3-endpoint | カスタムS3エンドポイントURL | いいえ |
--s3-port | S3エンドポイントのポート | いいえ |
--no-s3-ssl | S3アップロードのSSLを無効化 | いいえ |
バンドルの準備と暗号化
Section titled “バンドルの準備と暗号化”カスタムストレージを使用する場合、特に暗号化を使用する場合は、バンドルを適切に準備する必要があります。これには、zipファイルの作成とオプションで暗号化することが含まれます。
ステップ1: Zipバンドルの作成
Section titled “ステップ1: Zipバンドルの作成”まず、アプリバンドルのzipファイルを作成します:
npx @capgo/cli@latest bundle zip com.example.app --path ./distzipコマンドは、zipファイルのチェックサムを返します。必要に応じて、このチェックサムを使用してzipファイルを暗号化できます。チェックサムを含む構造化された出力を取得するには、--jsonオプションを使用してください。
Zipコマンドオプション
Section titled “Zipコマンドオプション”npx @capgo/cli@latest bundle zip [appId] \ --path ./dist \ --bundle 1.2.3 \ --name myapp-v1.2.3 \ --json \ --no-code-check \ --key-v2 \ --package-json ../../package.json,./package.json| オプション | 説明 |
|---|---|
--path | zip化するフォルダへのパス(capacitor.configのwebDirがデフォルト) |
--bundle | zipファイルに名前を付けるためのバンドルバージョン番号 |
--name | zipファイルのカスタム名 |
--json | JSON形式で結果を出力(チェックサムを含む) |
--no-code-check | notifyAppReady()呼び出しとインデックスファイルのチェックをスキップ |
--key-v2 | 暗号化v2を使用 |
--package-json | モノレポ用のpackage.jsonファイルへのパス(カンマ区切り) |
ステップ2: バンドルの暗号化(オプション)
Section titled “ステップ2: バンドルの暗号化(オプション)”セキュリティを強化するために、アップロード前にzipバンドルを暗号化します:
# デフォルトのローカルキーを使用npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM
# カスタムキーファイルを使用npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM --key ./path/to/.capgo_key_v2
# キーデータを直接使用npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM --key-data "PRIVATE_KEY_CONTENT"CHECKSUMパラメータは必須で、zipファイルのチェックサムである必要があります。zipコマンドの出力からチェックサムを取得できます(構造化された出力には--jsonオプションを使用)。
デフォルトでは、encryptコマンドはローカルのプライベート署名キーを使用します。--keyまたは--key-dataオプションを使用してカスタムキーを指定できます。
encryptコマンドは、アップロードまたは復号化に必要なivSessionKeyを返します。
暗号化コマンドオプション
Section titled “暗号化コマンドオプション”| オプション | 説明 |
|---|---|
zipPath | 暗号化するzipファイルへのパス(必須) |
checksum | zipファイルのチェックサム(必須) - zipコマンドから取得 |
--key | プライベート署名キーのカスタムパス(オプション、デフォルトではローカルキーを使用) |
--key-data | プライベート署名キーデータを直接(オプション) |
--json | JSON形式で結果を出力 |
完全なワークフローの例
Section titled “完全なワークフローの例”例1: 暗号化を使用した外部URL
Section titled “例1: 暗号化を使用した外部URL”-
アプリをビルド:
Terminal window npm run build -
zipバンドルを作成:
Terminal window npx @capgo/cli@latest bundle zip com.example.app --path ./dist --bundle 1.2.3このコマンドによって返されるチェックサムをメモしてください。
-
バンドルを暗号化:
Terminal window npx @capgo/cli@latest bundle encrypt ./com.example.app-1.2.3.zip CHECKSUM_FROM_STEP_2出力から
ivSessionKeyをメモしてください。 -
ストレージにアップロード: 暗号化されたzipファイルをホスティングサービスにアップロードします。
-
Capgoに登録:
Terminal window npx @capgo/cli@latest bundle upload \--external https://your-cdn.com/bundles/com.example.app-1.2.3.zip \--iv-session-key IV_SESSION_KEY_FROM_STEP_3
例2: 直接S3アップロード
Section titled “例2: 直接S3アップロード”-
アプリをビルド:
Terminal window npm run build -
S3に直接アップロード:
Terminal window npx @capgo/cli@latest bundle upload \--s3-region us-west-2 \--s3-apikey YOUR_ACCESS_KEY \--s3-apisecret YOUR_SECRET_KEY \--s3-bucket-name your-app-bundles \--channel Production
例3: 暗号化を使用したS3
Section titled “例3: 暗号化を使用したS3”-
ビルドとzip:
Terminal window npm run buildnpx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
バンドルを暗号化:
Terminal window npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM -
暗号化してS3にアップロード:
Terminal window npx @capgo/cli@latest bundle upload \--s3-region us-west-2 \--s3-apikey YOUR_ACCESS_KEY \--s3-apisecret YOUR_SECRET_KEY \--s3-bucket-name your-app-bundles \--iv-session-key IV_SESSION_KEY_FROM_STEP_2 \--channel Production
セキュリティに関する考慮事項
Section titled “セキュリティに関する考慮事項”カスタムストレージを使用する際は、以下のセキュリティのベストプラクティスを考慮してください:
アクセス制御
Section titled “アクセス制御”- ストレージURLがアプリユーザーにはアクセス可能だが、公開的に発見可能ではないことを確認
- 可能な場合は署名付きURLまたはトークンベースの認証を使用
- Webベースのアプリケーションには適切なCORSヘッダーを実装
- Capgo暗号化ツールを使用して、機密性の高いバンドルを常に暗号化
- 暗号化キーを安全に保存し、定期的にローテーション
- すべてのバンドルURLにHTTPSを使用(iOSとAndroidで必須)
- 異常なダウンロードパターンを検出するためにアクセスログを監視
- バンドルダウンロード失敗のアラートを設定
- ストレージ権限を定期的に監査
トラブルシューティング
Section titled “トラブルシューティング”一般的な問題
Section titled “一般的な問題”バンドルがダウンロードされない:
- URLが公開アクセス可能で、HTTPSを使用していることを確認(iOSとAndroidで必須)
- WebアプリのCORSヘッダーを確認
- バンドル形式が正しいことを確認
暗号化エラー:
ivSessionKeyが暗号化されたバンドルと一致することを確認- バンドルが正しいキーで暗号化されたことを確認
- 新しいバンドルには暗号化v2が使用されていることを確認
S3アップロード失敗:
- S3認証情報と権限を確認
- バケットポリシーとCORS構成を確認
- 指定されたリージョンが正しいことを確認
デバッグコマンド
Section titled “デバッグコマンド”バンドルステータスを確認:
npx @capgo/cli@latest app debugバンドルの整合性を検証:
npx @capgo/cli@latest bundle list