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",
  "topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
  "subject": "aci-helloworld:v1",
  "eventType": "Microsoft.ContainerRegistry.ImagePushed",
  "eventTime": "2018-04-25T21:39:47.6549614Z",
  "data": {
    "id": "31c51664-e5bd-416a-a5df-e5206bc47ed0",
    "timestamp": "2018-04-25T21:39:47.276585742Z",
    "action": "push",
    "location": "chinanorth",
    "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\\\\))"
    },
    "connectedRegistry": {
      "name": "edge1"
    }    
  },
  "dataVersion": "2.0",
  "metadataVersion": "1"
}]

The schema for an image deleted event is similar:

[{
  "id": "f06e3921-301f-42ec-b368-212f7d5354bd",
  "topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
  "subject": "aci-helloworld",
  "eventType": "Microsoft.ContainerRegistry.ImageDeleted",
  "eventTime": "2018-04-26T17:56:01.8211268Z",
  "data": {
    "id": "f06e3921-301f-42ec-b368-212f7d5354bd",
    "timestamp": "2018-04-26T17:56:00.996603117Z",
    "action": "delete",
    "location": "chinanorth",
    "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"
    },
    "connectedRegistry": {
      "name": "edge1"
    }    
  },
  "dataVersion": "2.0",
  "metadataVersion": "1"
}]

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",
  "topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
  "subject": "mychart:1.0.0",
  "eventType": "Microsoft.ContainerRegistry.ChartPushed",
  "eventTime": "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",
    "location": "chinanorth",
    "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"
    },
    "connectedRegistry": {
      "name": "edge1"
    }    
  },
  "dataVersion": "2.0",
  "metadataVersion": "1"
}]

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",
  "topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>",
  "subject": "mychart:1.0.0",
  "eventType": "Microsoft.ContainerRegistry.ChartDeleted",
  "eventTime": "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",
    "location": "chinanorth",
    "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"
    },
    "connectedRegistry": {
      "name": "edge1"
    }    
  },
  "dataVersion": "2.0",
  "metadataVersion": "1"
}]

Event properties

An event has the following top-level data:

Property Type Description
topic 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.
eventType string One of the registered event types for this event source.
eventTime string The time the event is generated based on the provider's UTC time.
id string Unique identifier for the event.
location string The location of the event.
connectedRegistry object The connected registry information if the event is generated by a connected registry.
data object Blob storage event data.
dataVersion string The schema version of the data object. The publisher defines the schema version.
metadataVersion string The schema version of the event metadata. Event Grid defines the schema of the top-level properties. Event Grid provides this value.

The data object has the following properties:

Property Type Description
id string The event ID.
timestamp string The time at which 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