Azure Container Registry as an Event Grid source
This article provides the properties and schema for Container Registry events. For an introduction to event schemas, see Azure Event Grid event schema.
Available event types
Azure Container Registry emits the following event types:
Event type | Description |
---|---|
Microsoft.ContainerRegistry.ImagePushed | Raised when an image is pushed. |
Microsoft.ContainerRegistry.ImageDeleted | Raised when an image is deleted. |
Microsoft.ContainerRegistry.ChartPushed | Raised when a Helm chart is pushed. |
Microsoft.ContainerRegistry.ChartDeleted | Raised when a Helm chart is deleted. |
Example event
The following example shows the schema of an image pushed event:
[{
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"source": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
"subject": "aci-helloworld:v1",
"type": "Microsoft.ContainerRegistry.ImagePushed",
"time": "2018-04-25T21:39:47.6549614Z",
"data": {
"id": "31c51664-e5bd-416a-a5df-e5206bc47ed0",
"timestamp": "2018-04-25T21:39:47.276585742Z",
"action": "push",
"target": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 3023,
"digest": "sha256:213bbc182920ab41e18edc2001e06abcca6735d87782d9cef68abd83941cf0e5",
"length": 3023,
"repository": "aci-helloworld",
"tag": "v1"
},
"request": {
"id": "7c66f28b-de19-40a4-821c-6f5f6c0003a4",
"host": "demo.azurecr.io",
"method": "PUT",
"useragent": "docker/18.03.0-ce go/go1.9.4 git-commit/0520e24 os/windows arch/amd64 UpstreamClient(Docker-Client/18.03.0-ce \\\\(windows\\\\))"
}
},
"specversion": "1.0"
}]
The schema for an image deleted event is similar:
[{
"id": "f06e3921-301f-42ec-b368-212f7d5354bd",
"source": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
"subject": "aci-helloworld",
"type": "Microsoft.ContainerRegistry.ImageDeleted",
"time": "2018-04-26T17:56:01.8211268Z",
"data": {
"id": "f06e3921-301f-42ec-b368-212f7d5354bd",
"timestamp": "2018-04-26T17:56:00.996603117Z",
"action": "delete",
"target": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:213bbc182920ab41e18edc2001e06abcca6735d87782d9cef68abd83941cf0e5",
"repository": "aci-helloworld"
},
"request": {
"id": "aeda5b99-4197-409f-b8a8-ff539edb7de2",
"host": "demo.azurecr.io",
"method": "DELETE",
"useragent": "python-requests/2.18.4"
}
},
"specversion": "1.0"
}]
The schema for a chart pushed event is similar to the schema for an imaged pushed event, but it doesn't include a request object:
[{
"id": "ea3a9c28-5b17-40f6-a500-3f02b6829277",
"source": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
"subject": "mychart:1.0.0",
"type": "Microsoft.ContainerRegistry.ChartPushed",
"time": "2019-03-12T22:16:31.5164086Z",
"data": {
"id":"ea3a9c28-5b17-40f6-a500-3f02b682927",
"timestamp":"2019-03-12T22:16:31.0087496+00:00",
"action":"chart_push",
"target":{
"mediaType":"application/vnd.acr.helm.chart",
"size":25265,
"digest":"sha256:7f060075264b5ba7c14c23672698152ae6a3ebac1c47916e4efe19cd624d5fab",
"repository":"repo",
"tag":"mychart-1.0.0.tgz",
"name":"mychart",
"version":"1.0.0"
}
},
"specversion": "1.0"
}]
The schema for a chart deleted event is similar to the schema for an imaged deleted event, but it doesn't include a request object:
[{
"id": "39136b3a-1a7e-416f-a09e-5c85d5402fca",
"source": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
"subject": "mychart:1.0.0",
"type": "Microsoft.ContainerRegistry.ChartDeleted",
"time": "019-03-12T22:42:08.7034064Z",
"data": {
"id":"ea3a9c28-5b17-40f6-a500-3f02b682927",
"timestamp":"2019-03-12T22:42:08.3783775+00:00",
"action":"chart_delete",
"target":{
"mediaType":"application/vnd.acr.helm.chart",
"size":25265,
"digest":"sha256:7f060075264b5ba7c14c23672698152ae6a3ebac1c47916e4efe19cd624d5fab",
"repository":"repo",
"tag":"mychart-1.0.0.tgz",
"name":"mychart",
"version":"1.0.0"
}
},
"specversion": "1.0"
}]
Event properties
An event has the following top-level data:
Property | Type | Description |
---|---|---|
source |
string | Full resource path to the event source. This field isn't writeable. Event Grid provides this value. |
subject |
string | Publisher-defined path to the event subject. |
type |
string | One of the registered event types for this event source. |
time |
string | The time the event is generated based on the provider's UTC time. |
id |
string | Unique identifier for the event. |
data |
object | Blob storage event data. |
specversion |
string | CloudEvents schema specification version. |
The data object has the following properties:
Property | Type | Description |
---|---|---|
id |
string | The event ID. |
timestamp |
string | The time when the event occurred. |
action |
string | The action that encompasses the provided event. |
target |
object | The target of the event. |
request |
object | The request that generated the event. |
The target object has the following properties:
Property | Type | Description |
---|---|---|
mediaType |
string | The MIME type of the referenced object. |
size |
integer | The number of bytes of the content. Same as Length field. |
digest |
string | The digest of the content, as defined by the Registry V2 HTTP API Specification. |
length |
integer | The number of bytes of the content. Same as Size field. |
repository |
string | The repository name. |
tag |
string | The tag name. |
name |
string | The chart name. |
version |
string | The chart version. |
The request object has the following properties:
Property | Type | Description |
---|---|---|
id |
string | The ID of the request that initiated the event. |
addr |
string | The IP or hostname and possibly port of the client connection that initiated the event. This value is the RemoteAddr from the standard http request. |
host |
string | The externally accessible hostname of the registry instance, as specified by the http host header on incoming requests. |
method |
string | The request method that generated the event. |
useragent |
string | The user agent header of the request. |
The connectedRegistry object has the following properties:
Property | Type | Description |
---|---|---|
name |
string | The name of the connected registry that generated this event. |
Next steps
- For an introduction to Azure Event Grid, see What is Event Grid?
- For more information about creating an Azure Event Grid subscription, see Event Grid subscription schema.