コンテンツへスキップ

カスタムストレージ

Capgoは、アプリバンドル用のカスタムストレージソリューションをサポートしており、独自のインフラストラクチャまたはサードパーティのストレージサービスでアップデートをホストできます。これは、特定のセキュリティ要件、コンプライアンスニーズ、または既存のストレージインフラストラクチャを持つ組織に特に便利です。

Capgoのカスタムストレージは、バンドルを外部の場所にアップロードし、CapgoにアクセスするためのURLを提供することで機能します。Capgo SDKは、Capgoのデフォルトクラウドストレージではなく、カスタムストレージの場所から直接アップデートをダウンロードします。

カスタムストレージを使用する最も簡単な方法は、バンドルを公開アクセス可能な任意のURLにアップロードし、そのURLをCapgoに提供することです。

Terminal window
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip

このコマンドは、Capgoのクラウドストレージにアップロードする代わりに、指定されたURLのバンドルを参照するようにCapgoに指示します。

安全な外部ストレージの場合、バンドルを暗号化して復号化キーを提供できます:

Terminal window
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip --iv-session-key YOUR_IV_SESSION_KEY

Capgoは、Amazon S3およびS3互換のストレージサービスの組み込みサポートを提供します。CLIは、バンドルをS3に自動的にアップロードし、S3 URLを使用するようにCapgoを構成できます。

Terminal window
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互換サービスまたはカスタムエンドポイントの場合:

Terminal window
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-regionS3バケットのAWSリージョンはい
--s3-apikeyS3アクセスキーIDはい
--s3-apisecretS3シークレットアクセスキーはい
--s3-bucket-nameS3バケットの名前はい
--s3-endpointカスタムS3エンドポイントURLいいえ
--s3-portS3エンドポイントのポートいいえ
--no-s3-sslS3アップロードのSSLを無効化いいえ

カスタムストレージを使用する場合、特に暗号化を使用する場合は、バンドルを適切に準備する必要があります。これには、zipファイルの作成とオプションで暗号化することが含まれます。

まず、アプリバンドルのzipファイルを作成します:

Terminal window
npx @capgo/cli@latest bundle zip com.example.app --path ./dist

zipコマンドは、zipファイルのチェックサムを返します。必要に応じて、このチェックサムを使用してzipファイルを暗号化できます。チェックサムを含む構造化された出力を取得するには、--jsonオプションを使用してください。

Terminal window
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
オプション説明
--pathzip化するフォルダへのパス(capacitor.configのwebDirがデフォルト)
--bundlezipファイルに名前を付けるためのバンドルバージョン番号
--namezipファイルのカスタム名
--jsonJSON形式で結果を出力(チェックサムを含む)
--no-code-checknotifyAppReady()呼び出しとインデックスファイルのチェックをスキップ
--key-v2暗号化v2を使用
--package-jsonモノレポ用のpackage.jsonファイルへのパス(カンマ区切り)

ステップ2: バンドルの暗号化(オプション)

Section titled “ステップ2: バンドルの暗号化(オプション)”

セキュリティを強化するために、アップロード前にzipバンドルを暗号化します:

Terminal window
# デフォルトのローカルキーを使用
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を返します。

オプション説明
zipPath暗号化するzipファイルへのパス(必須)
checksumzipファイルのチェックサム(必須) - zipコマンドから取得
--keyプライベート署名キーのカスタムパス(オプション、デフォルトではローカルキーを使用)
--key-dataプライベート署名キーデータを直接(オプション)
--jsonJSON形式で結果を出力
  1. アプリをビルド:

    Terminal window
    npm run build
  2. zipバンドルを作成:

    Terminal window
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --bundle 1.2.3

    このコマンドによって返されるチェックサムをメモしてください。

  3. バンドルを暗号化:

    Terminal window
    npx @capgo/cli@latest bundle encrypt ./com.example.app-1.2.3.zip CHECKSUM_FROM_STEP_2

    出力からivSessionKeyをメモしてください。

  4. ストレージにアップロード: 暗号化されたzipファイルをホスティングサービスにアップロードします。

  5. 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
  1. アプリをビルド:

    Terminal window
    npm run build
  2. 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
  1. ビルドとzip:

    Terminal window
    npm run build
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. バンドルを暗号化:

    Terminal window
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM
  3. 暗号化して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 “セキュリティに関する考慮事項”

カスタムストレージを使用する際は、以下のセキュリティのベストプラクティスを考慮してください:

  • ストレージURLがアプリユーザーにはアクセス可能だが、公開的に発見可能ではないことを確認
  • 可能な場合は署名付きURLまたはトークンベースの認証を使用
  • Webベースのアプリケーションには適切なCORSヘッダーを実装
  • Capgo暗号化ツールを使用して、機密性の高いバンドルを常に暗号化
  • 暗号化キーを安全に保存し、定期的にローテーション
  • すべてのバンドルURLにHTTPSを使用(iOSとAndroidで必須)
  • 異常なダウンロードパターンを検出するためにアクセスログを監視
  • バンドルダウンロード失敗のアラートを設定
  • ストレージ権限を定期的に監査

バンドルがダウンロードされない:

  • URLが公開アクセス可能で、HTTPSを使用していることを確認(iOSとAndroidで必須)
  • WebアプリのCORSヘッダーを確認
  • バンドル形式が正しいことを確認

暗号化エラー:

  • ivSessionKeyが暗号化されたバンドルと一致することを確認
  • バンドルが正しいキーで暗号化されたことを確認
  • 新しいバンドルには暗号化v2が使用されていることを確認

S3アップロード失敗:

  • S3認証情報と権限を確認
  • バケットポリシーとCORS構成を確認
  • 指定されたリージョンが正しいことを確認

バンドルステータスを確認:

Terminal window
npx @capgo/cli@latest app debug

バンドルの整合性を検証:

Terminal window
npx @capgo/cli@latest bundle list
  • チャネルについて学び、異なるデプロイメント環境を管理
  • アップデート動作を探索して、アップデートの適用方法をカスタマイズ
  • CI/CD統合をセットアップして、カスタムストレージワークフローを自動化