Deep-dive on the Next Gen Platform. Join the Webinar!

Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
Hide categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Troubleshooting Node.js Apps
      • Node.js Behavior in Heroku
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • Heroku の拡張
  • アドオンのビルド
  • アドオン開発のタスク
  • アドオンの非同期プロビジョニング解除 (パブリックベータ)

アドオンの非同期プロビジョニング解除 (パブリックベータ)

日本語 — Switch to English

最終更新日 2023年08月07日(月)

Table of Contents

  • ワークフローの例
  • 知っておきたいこと
  • 前提条件
  • 実装
  • まとめ

非同期プロビジョニング解除機能を使用すると、アドオンプロバイダーは、プロバイダーのアクセスがプロビジョニング解除によって削除される前に、アドオンリソースがアタッチされているアプリを操作できます。アドオンプロバイダーによっては、One-off dyno をシャットダウンする、アドオンによって作成された SSL 証明書を削除するなどのアクションを実行できます。フォローアップの連絡を顧客に送信する、などのアクションも実行できます。

この機能はパブリックベータです。アクセスをリクエストするには、サポートチケットを開いてください​。

ワークフローの例

非同期プロビジョニング解除のシーケンス図

この例では、アドオンプロバイダーは、アドオン上のすべての One-off Dyno を停止することによって、スケジューラーサービスの整然としたシャットダウンを実行します。その後、顧客のアプリケーションにアクセスできなくなる前に、関連するログメッセージをアプリケーションログに送信します。

  1. 顧客は Heroku CLI から addons:destroy​ コマンドを実行して、アプリケーションからのアドオンの削除をリクエストします。
  2. Heroku はアドオンリソースの請求を停止し、Async Allowed​ アドオンプロビジョニング解除リクエストをパートナーに送信します。
  3. パートナーはプロビジョニング解除リクエストに 202 Accepted​ 応答コードで応答します。
  4. パートナーは、まだ実行中である制御対象の One-off dyno ごとに、dyno の停止エンドポイント​にリクエストを送信します。
  5. パートナーは、停止した Dyno ごとに、顧客にとって関連性がある情報が含まれたログメッセージを送信します。この情報には、dyno が強制終了されたタイムスタンプ、実行されたコマンド、強制終了 (アドオンのプロビジョニング解除) の理由が含まれ、アドオンリソースにリンクされたログ入力 URL​ が使用されます。
  6. パートナーは、処理が完了し、このリソースに代わって Platform API へのアクセスをこれ以上リクエストしないことを Heroku に通知する明示的な呼び出しを行います。
  7. Heroku により、パートナーの承認を含め、リソースがアプリケーションから分離および削除されます。このステップにより、アプリの再起動がトリガーされます。

このプロセスの各部分についての詳細は、「実装」セクション​を参照してください。

知っておきたいこと

請求

顧客がアドオンのプロビジョニング解除をリクエストすると、請求は停止します。サービスのプロビジョニング解除の時間とコストは、顧客の支払い額に反映されません。不必要なコストが発生しないように、速やかにプロビジョニングを解除してください。

不完全なアドオンのプロビジョニング解除

プロビジョニング解除にかかる時間が 12 時間を超えるアドオンや、サービスでその期間内に API 経由で deprovisioned​ とマークできないアドオンも、プロビジョニング解除済みと見なされます。これらは顧客のアプリから削除され、プロバイダーによるプロビジョニング解除の遅延について Heroku が顧客に請求することはありません。

前提条件

  • パートナー向け Platform API​ を使用する必要があります。
  • このベータ機能へのアクセスをリクエストするには、サポートチケットを開いてください​。

実装

リソースの非同期プロビジョニング解除が許可されているかどうかの確認

Heroku が非同期プロビジョニング解除へのアクセスをアドオンサービスに許可すると、すべてのプロビジョニング解除リクエストに X-Async-Deprovision-Allowed​ ヘッダーが追加されます。値は true​ または false​ です。

非同期でのプロビジョニング解除ができない場合もあります。アプリが破棄されたためアドオンがプロビジョニング解除されると、ヘッダーは false​ に設定され、リクエストを受信するのは Heroku がアドオンリソースとアプリの両方を破棄した後になります。このシナリオで Platform API を使おうとすると、アクセストークンが取り消されていて無効なため、結果は 401 Unauthorized​ になります。

X-Async-Deprovision-Allowed​ ヘッダーが true​ に設定されていれば、顧客がアドオンの削除をリクエストしたことを示しており、非同期でのプロビジョニング解除ができます。

プロビジョニングリクエストに 202 Accepted で応答する

アドオンサービスでベータ版の非同期プロビジョニング解除機能にアクセスできる状態で、X-Async-Deprovision-Allowed​ ヘッダーが true​ に設定されたプロビジョニング解除リクエストを Heroku が送信した場合、アドオンでは次のことを行う必要があります​。

  1. リソースを非同期でプロビジョニング解除するためのジョブをキューに入れます。
  2. 202 Accepted​ 応答コードで応答します。

このプロセスは、アクセストークンは削除せずに、アドオンをプロビジョニング解除中の状態に保つよう Heroku に指示します。Platform API へのアクセスが不要になったら、アドオンを明示的に deprovisioned​ とマークする必要があります。

一部のリソースでは、非同期プロビジョニング解除のワークフローは適切ではありません。その場合、サービスは 202 Accepted​ を除いた他の 2xx Successful​ 応答コードで応答することができ、Heroku はアドオンをすぐにプロビジョニング解除します。204 No Content​ (推奨) または 200 Ok​ 応答のいずれかが機能します。

アプリに対する必要なアクションの実行

アドオンがプロビジョニング解除中の状態であっても、Platform API でアクションを実行するためのアクセストークンと更新トークンはまだ有効です。

顧客のアプリに対する保留中のアクションを完了したらすぐに、アドオンを deprovisioned​ とマークする必要があります​。Platform API にアクセスして、整然としたシャットダウンをできるだけ早く実行することをお勧めします。

アドオンサービスのプロビジョニング解除ワークフローで、データベースのバックアップやインフラストラクチャの破棄などの長時間操作が必要な場合は、リソースを deprovisioned​ としてマークした後に、バックグラウンドジョブを使用してこれらのアクションを実行してください。Heroku では、アドオンを deprovisioned​ とマークするためにプロバイダーの側でリソースを完全にプロビジョニング解除することをプロバイダーに義務付けているわけではありません。

アドオンのプロビジョニング解除の完了

最後の手順では、アドオンのプロビジョニングを解除したので Platform API へのアクセスが不要になったことを Heroku に通知します。この手順がプロビジョニング解除リクエストから 12 時間以内に実行されない場合、Heroku はリクエストを完了と見なし、プロバイダーアクセスと共にアドオンを削除します。プロビジョニング解除が完了したことを示すには、アドオンアクションのプロビジョニング解除エンドポイント​を使用します。

POST /addons/:uuid/actions/deprovision

この時点で、アドオン、プロバイダーアクセス、アドオンの環境設定が削除されます。Heroku は新しいリリースを作成し、すべてのアプリケーション dyno を再起動します。

まとめ

非同期プロビジョニング解除を使用すると、アドオンパートナーは、プロビジョニング解除中のユーザーエクスペリエンスを、より良質でリッチな形で実装できます。プロバイダーは、Heroku API との統合方法の一部に変更を加え、機能を有効化する必要があります。実装に関する質問がある場合は、Heroku のエコシステムエンジニアリングチーム​までお問い合わせください。

関連カテゴリー

  • アドオン開発のタスク

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices