slug チェックサム
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年03月09日(水)
Table of Contents
チェックサム検証は、現在、Private Space のアプリでのみサポートされています。
Heroku Platform での slug の整合性を保護するために、slug メタデータにはチェックサムが含まれます。チェックサムは、Git を使用してデプロイするときに slug に対して自動的に計算および設定されます。ただし、チェックサムは Platform API を介して slug を作成するときに手動で設定することもできます。チェックサムとともに slug をリリースすると、dyno が起動される前に、チェックサムが検証されます。検証に失敗した場合、R17 エラー が発生し、dyno は起動をブロックされます。
サポートされているアルゴリズム
現在、SHA256
アルゴリズムだけがサポートされています。
チェックサムの計算および設定
チェックサムは、Git を使用してデプロイするときに slug に対して自動的に計算および設定されます。Platform API で直接 slug を作成する場合、slug に対してチェックサムを計算し手動で設定できます。圧縮した slug ファイルの作成後、shasum
などのツールを使用して、チェックサムを計算します。
$ shasum --algorithm 256 slug.tgz
f34f97e65fd1f78cdab0a8c8552bd82c67441a08303e4b479f8824e5a8ec9b13 slug.tgz
Heroku チェックサム形式は <ALGORITHM> ":" <VALUE>
です。たとえば、上記で計算したチェックサムは、SHA256:f34f97e65fd1f78cdab0a8c8552bd82c67441a08303e4b479f8824e5a8ec9b13
として書式設定する必要があります。
チェックサムはその後、slug を作成するためにリクエストに含められます。
$ curl -X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/vnd.heroku+json; version=3' \
-d '{"process_types":{"web":"bin/web"}, "checksum":"SHA256:f34f97e65fd1f78cdab0a8c8552bd82c67441a08303e4b479f8824e5a8ec9b13"}' \
-n https://api.heroku.com/apps/example/slugs
チェックサムの読み取り
次のように、Platform API を介して既存の slug のチェックサムを読み取ります。
$ curl -X GET \
-H 'Accept: application/vnd.heroku+json; version=3' \
-n https://api.heroku.com/apps/example/slugs/$SLUG_ID
{
...
"checksum":"SHA256:f34f97e65fd1f78cdab0a8c8552bd82c67441a08303e4b479f8824e5a8ec9b13",
...
}