Azure Container Registry Webhook 參考
當某些動作對產生事件的容器登錄執行時,您可以針對產生事件的容器登錄設定 Webhook。 例如,啟用在將容器映像或 Helm 圖表推送至登錄或加以刪除時所觸發的 Webhook。 當 Webhook 觸發時,Azure Container Registry 就會發出 HTTP 或 HTTPS 要求,當中包含對您所指定端點之事件的相關資訊。 然後,您的端點就可以據此處理 webhook 並採取行動。
下列各節詳細說明受支援事件所產生的 webhook 要求之結構描述。 事件區段包含事件類型的承載結構描述、範例要求承載,以及一或多個會觸發 webhook 的範例命令。
如需設定 Azure Container Registry 的 Webhook 相關資訊,請參閱使用 Azure Container Registry Webhook。
Webhook 要求
HTTP 要求
當您設定 webhook 時,觸發的 Webhook 會使 HTTP POST
要求您指定的 URL 端點。
HTTP 標頭
如果您尚未指定 webhook 的 Content-Type
自訂標頭,Webhook 要求就會包含 application/json
的 Content-Type
。
不會有其他標頭新增至超出您可能已針對 webhook 指定的這些自訂標頭。
推送事件
當容器映像推送到存放庫時,會觸發 Webhook。
推送事件裝載
Element | 類型 | 描述 |
---|---|---|
id |
String | Webhook 事件的識別碼。 |
timestamp |
Datetime | Webhook 事件觸發的時間。 |
action |
String | 觸發 webhook 事件的動作。 |
目標 | 複雜類型 | 觸發 webhook 事件的事件目標。 |
request | 複雜類型 | 產生 webhook 事件的要求。 |
目標
Element | 類型 | 描述 |
---|---|---|
mediaType |
String | 參考物件的 MIME 類型。 |
size |
Int32 | 內容的位元組數目。 與長度欄位相同。 |
digest |
String | 如 Registry V2 HTTP API 規格所定義的內容摘要。 |
length |
Int32 | 內容的位元組數目。 [與大小相同] 欄位。 |
repository |
String | 存放庫名稱。 |
tag |
String | 映像標記名稱。 |
要求
Element | 類型 | 描述 |
---|---|---|
id |
String | 起始事件之要求的識別碼。 |
host |
String | 登錄執行個體的外部可存取主機名稱,如內送要求上的 HTTP 主機標頭所指定。 |
method |
String | 產生事件的要求方法。 |
useragent |
String | 要求的使用者代理程式標頭。 |
承載範例:映像推送事件
{
"id": "cb8c3971-9adc-488b-xxxx-43cbb4974ff5",
"timestamp": "2017-11-17T16:52:01.343145347Z",
"action": "push",
"target": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 524,
"digest": "sha256:xxxxd5c8786bb9e621a45ece0dbxxxx1cdc624ad20da9fe62e9d25490f33xxxx",
"length": 524,
"repository": "hello-world",
"tag": "v1"
},
"request": {
"id": "3cbb6949-7549-4fa1-xxxx-a6d5451dffc7",
"host": "myregistry.azurecr.io",
"method": "PUT",
"useragent": "docker/17.09.0-ce go/go1.8.3 git-commit/afdb6d4 kernel/4.10.0-27-generic os/linux arch/amd64 UpstreamClient(Docker-Client/17.09.0-ce \\(linux\\))"
}
}
觸發映像 push 事件 Webhook 的範例 Docker CLI \(英文\) 命令:
docker push myregistry.azurecr.io/hello-world:v1
圖表推送事件
將 Helm 圖表推送到存放庫時所觸發的 Webhook。
圖表推送事件承載
Element | 類型 | 描述 |
---|---|---|
id |
String | Webhook 事件的識別碼。 |
timestamp |
Datetime | Webhook 事件觸發的時間。 |
action |
String | 觸發 webhook 事件的動作。 |
目標 | 複雜類型 | 觸發 webhook 事件的事件目標。 |
目標
Element | 類型 | 描述 |
---|---|---|
mediaType |
String | 參考物件的 MIME 類型。 |
size |
Int32 | 內容的位元組數目。 |
digest |
String | 如 Registry V2 HTTP API 規格所定義的內容摘要。 |
repository |
String | 存放庫名稱。 |
tag |
String | 圖表標記名稱。 |
name |
String | 圖表名稱。 |
version |
String | 圖表版本。 |
承載範例:圖表推送事件
{
"id": "6356e9e0-627f-4fed-xxxx-d9059b5143ac",
"timestamp": "2019-03-05T23:45:31.2614267Z",
"action": "chart_push",
"target": {
"mediaType": "application/vnd.acr.helm.chart",
"size": 25265,
"digest": "sha256:xxxx8075264b5ba7c14c23672xxxx52ae6a3ebac1c47916e4efe19cd624dxxxx",
"repository": "repo",
"tag": "wordpress-5.4.0.tgz",
"name": "wordpress",
"version": "5.4.0.tgz"
}
}
觸發 chart_push 事件 Webhook 的範例 Azure CLI 命令:
az acr helm push wordpress-5.4.0.tgz --name MyRegistry
刪除事件
刪除映像存放庫或資訊清單時所觸發的 Webhook。 刪除標記時不會觸發。
刪除事件裝載
Element | 類型 | 描述 |
---|---|---|
id |
String | Webhook 事件的識別碼。 |
timestamp |
Datetime | Webhook 事件觸發的時間。 |
action |
String | 觸發 webhook 事件的動作。 |
目標 | 複雜類型 | 觸發 webhook 事件的事件目標。 |
request | 複雜類型 | 產生 webhook 事件的要求。 |
目標
Element | 類型 | 描述 |
---|---|---|
mediaType |
String | 參考物件的 MIME 類型。 |
digest |
String | 如 Registry V2 HTTP API 規格所定義的內容摘要。 |
repository |
String | 存放庫名稱。 |
要求
Element | 類型 | 描述 |
---|---|---|
id |
String | 起始事件之要求的識別碼。 |
host |
String | 登錄執行個體的外部可存取主機名稱,如內送要求上的 HTTP 主機標頭所指定。 |
method |
String | 產生事件的要求方法。 |
useragent |
String | 要求的使用者代理程式標頭。 |
承載範例:映像刪除事件
{
"id": "afc359ce-df7f-4e32-xxxx-1ff8aa80927b",
"timestamp": "2017-11-17T16:54:53.657764628Z",
"action": "delete",
"target": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:xxxxd5c8786bb9e621a45ece0dbxxxx1cdc624ad20da9fe62e9d25490f33xxxx",
"repository": "hello-world"
},
"request": {
"id": "3d78b540-ab61-4f75-xxxx-7ca9ecf559b3",
"host": "myregistry.azurecr.io",
"method": "DELETE",
"useragent": "python-requests/2.18.4"
}
}
會觸發刪除 事件 webhook 的範例 Azure CLI 命令:
# Delete repository
az acr repository delete --name MyRegistry --repository MyRepository
# Delete image
az acr repository delete --name MyRegistry --image MyRepository:MyTag
圖表刪除事件
刪除 Helm 圖表或存放庫時所觸發的 Webhook。
圖表刪除事件承載
Element | 類型 | 描述 |
---|---|---|
id |
String | Webhook 事件的識別碼。 |
timestamp |
Datetime | Webhook 事件觸發的時間。 |
action |
String | 觸發 webhook 事件的動作。 |
目標 | 複雜類型 | 觸發 webhook 事件的事件目標。 |
目標
Element | 類型 | 描述 |
---|---|---|
mediaType |
String | 參考物件的 MIME 類型。 |
size |
Int32 | 內容的位元組數目。 |
digest |
String | 如 Registry V2 HTTP API 規格所定義的內容摘要。 |
repository |
String | 存放庫名稱。 |
tag |
String | 圖表標記名稱。 |
name |
String | 圖表名稱。 |
version |
String | 圖表版本。 |
承載範例:圖表刪除事件
{
"id": "338a3ef7-ad68-4128-xxxx-fdd3af8e8f67",
"timestamp": "2019-03-06T00:10:48.1270754Z",
"action": "chart_delete",
"target": {
"mediaType": "application/vnd.acr.helm.chart",
"size": 25265,
"digest": "sha256:xxxx8075264b5ba7c14c23672xxxx52ae6a3ebac1c47916e4efe19cd624dxxxx",
"repository": "repo",
"tag": "wordpress-5.4.0.tgz",
"name": "wordpress",
"version": "5.4.0.tgz"
}
}
觸發 chart_delete 事件 Webhook 的範例 Azure CLI 命令:
az acr helm delete wordpress --version 5.4.0 --name MyRegistry