Event Grid 원본으로서의 Azure Blob Storage

이 문서에서는 Blob Storage 이벤트에 대한 속성 및 스키마를 제공합니다. 이벤트 스키마에 대한 소개는 Azure Event Grid 이벤트 스키마를 참조하세요. 또한 이벤트 원본으로서 Azure Blob Storage를 사용하기 위한 빠른 시작 및 자습서의 목록을 제공합니다.

참고 항목

StorageV2(범용 v2), BlockBlobStorage, BlobStorage 종류의 스토리지 계정만 이벤트 통합을 지원합니다. 스토리지(범용 v1)는 Event Grid와의 통합을 지원하지 않습니다.

사용할 수 있는 이벤트 유형

Blob Storage 이벤트

해당 이벤트는 클라이언트가 Blob REST API를 호출하여 Blob을 만들거나 바꾸거나 또는 삭제할 때 실행됩니다.

참고 항목

$logs$blobchangefeed 컨테이너는 Event Grid와 통합되지 않으므로 해당 컨테이너의 작업은 이벤트를 생성하지 않습니다. 또한 비계층 구조 네임스페이스 사용 계정에 dfs 엔드포인트 (abfss://URI) 를 사용하면 이벤트가 생성되지 않지만 Blob 엔드포인트 (wasb:// URI)는 이벤트를 생성합니다.

이벤트 이름 설명
Microsoft.Storage.BlobCreated Blob 생성 또는 교체 시 트리거됩니다.
특히 이 이벤트는 클라이언트가 Blob REST API에서 사용할 수 있는 PutBlob, PutBlockList 또는 CopyBlob 작업을 사용할 때, 그리고 블록 Blob이 완전히 커밋될 때 트리거됩니다.
계층 구조 네임스페이스 기능이 사용되는 계정에서 클라이언트가 CopyBlob 작업을 사용하는 경우, CopyBlob 작업은 약간 다르게 작동합니다. 이 경우 Microsoft.Storage.BlobCreated 이벤트는 블록 Blob이 완전히 커밋될 때가 아니라 CopyBlob 작업이 시작될 때 트리거됩니다.
Microsoft.Storage.BlobDeleted Blob 삭제 시 트리거됩니다.
특히 해당 이벤트는 클라이언트가 DeleteBlob Blob REST API에서 사용할 수 있는 작업을 호출하는 경우 트리거됩니다.
Microsoft.Storage.BlobTierChanged Blob 액세스 계층이 변경될 때 트리거됩니다. 특히 클라이언트가 Blob REST API에서 사용할 수 있는 Set Blob Tier 작업을 호출하면 이 이벤트는 계층 변경이 완료된 후에 트리거됩니다.
Microsoft.Storage.AsyncOperationInitiated 보관에서 핫 또는 쿨 계층으로 데이터를 이동하거나 복사하는 작업이 시작될 때 트리거됩니다. 특히 이 이벤트는 클라이언트가 Set Blob Tier API를 호출하여 보관 계층의 Blob을 핫 또는 쿨 계층으로 이동하는 경우 또는 클라이언트가 Copy Blob API를 호출하여 보관 계층의 Blob에서 핫 또는 쿨 계층의 Blob으로 데이터를 복사하는 경우 트리거됩니다.

예제 이벤트

Microsoft.Storage.BlobCreated 이벤트

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/test-container/blobs/new-file.txt",
  "type": "Microsoft.Storage.BlobCreated",
  "time": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "PutBlockList",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "eTag": "\"0x8D4BCC2E4835CD0\"",
    "contentType": "text/plain",
    "contentLength": 524288,
    "blobType": "BlockBlob",
    "url": "https://my-storage-account.blob.core.windows.net/testcontainer/new-file.txt",
    "sequencer": "00000000000004420000000000028963",
    "storageDiagnostics": {
      "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.BlobDeleted 이벤트

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/testcontainer/blobs/file-to-delete.txt",
  "type": "Microsoft.Storage.BlobDeleted",
  "time": "2017-11-07T20:09:22.5674003Z",
  "id": "4c2359fe-001e-00ba-0e04-58586806d298",
  "data": {
    "api": "DeleteBlob",
    "requestId": "4c2359fe-001e-00ba-0e04-585868000000",
    "contentType": "text/plain",
    "blobType": "BlockBlob",
    "url": "https://my-storage-account.blob.core.windows.net/testcontainer/file-to-delete.txt",
    "sequencer": "0000000000000281000000000002F5CA",
    "storageDiagnostics": {
      "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.BlobTierChanged 이벤트

{
	"source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
	"subject": "/blobServices/default/containers/testcontainer/blobs/Auto.jpg",
	"type": "Microsoft.Storage.BlobTierChanged",
	"time": "2021-05-04T15:00:00.8350154Z",  
	"id": "0fdefc06-b01e-0034-39f6-4016610696f6",
	"data": {
		"api": "SetBlobTier",
		"clientRequestId": "68be434c-1a0d-432f-9cd7-1db90bff83d7",
		"requestId": "0fdefc06-b01e-0034-39f6-401661000000",
		"contentType": "image/jpeg",
		"contentLength": 105891,
		"blobType": "BlockBlob",
		"url": "https://my-storage-account.blob.core.windows.net/testcontainer/Auto.jpg",
		"sequencer": "000000000000000000000000000089A4000000000018d6ea",
		"storageDiagnostics": {
			"batchId": "3418f7a9-7006-0014-00f6-406dc6000000"
		}
	},
  "specversion": "1.0"
}

Microsoft.Storage.AsyncOperationInitiated 이벤트

{
	"source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
	"subject": "/blobServices/default/containers/testcontainer/blobs/00000.avro",
	"type": "Microsoft.Storage.AsyncOperationInitiated",
	"time": "2021-05-04T14:44:59.3204652Z",
	"id": "8ea4e3f2-101e-003d-5ff4-4053b2061016",
	"data": {
		"api": "SetBlobTier",
		"clientRequestId": "777fb4cd-f890-4c5b-b024-fb47300bae62",
		"requestId": "8ea4e3f2-101e-003d-5ff4-4053b2000000",
		"contentType": "application/octet-stream",
		"contentLength": 3660,
		"blobType": "BlockBlob",
		"url": "https://my-storage-account.blob.core.windows.net/testcontainer/00000.avro",
		"sequencer": "000000000000000000000000000089A4000000000018c6d7",
		"storageDiagnostics": {
			"batchId": "34128c8a-7006-0014-00f4-406dc6000000"
		}
	},
	"specversion": "1.0"
}

Data Lake Storage Gen 2 이벤트

해당 이벤트는 스토리지 계정에서 계층 구조 네임스페이스를 사용하도록 설정하며, 클라이언트는 Azure Data Lake Storage Gen2 REST API 사용 시 실행됩니다. Azure Data Lake Storage Gen2에 대한 자세한 사항은 Azure Data Lake Storage Gen2 소개를 참조하세요.

이벤트 이름 설명
Microsoft.Storage.BlobCreated Blob 생성 또는 교체 시 트리거됩니다.
특히 해당 이벤트는 클라이언트가 Azure Data Lake Storage Gen2 REST API에서 이용 가능한 CreateFileFlushWithClose 작업 사용 시 트리거됩니다.
Microsoft.Storage.BlobDeleted Blob 삭제 시 트리거됩니다.
특히 해당 이벤트는 클라이언트가 DeleteFile Azure Data Lake Storage Gen2 REST API에서 이용 가능한 작업을 호출하는 경우에도 트리거됩니다.
Microsoft.Storage.BlobRenamed Blob의 이름을 바꾸면 트리거됩니다.
특히 해당 이벤트는 클라이언트가 RenameFileAzure Data Lake Storage Gen2 REST API에서 이용 가능한 작업 사용 시 트리거됩니다.
Microsoft.Storage.DirectoryCreated 디렉터리를 만들면 트리거됩니다.
특히 해당 이벤트는 클라이언트가 CreateDirectoryAzure Data Lake Storage Gen2 REST API에서 이용 가능한 작업 사용 시 트리거됩니다.
Microsoft.Storage.DirectoryRenamed 디렉터리의 이름을 바꾸면 트리거됩니다.
특히 해당 이벤트는 클라이언트가 RenameDirectoryAzure Data Lake Storage Gen2 REST API에서 이용 가능한 작업 사용 시 트리거됩니다.
Microsoft.Storage.DirectoryDeleted 디렉터리를 삭제하면 트리거됩니다.
특히 해당 이벤트는 클라이언트가 DeleteDirectoryAzure Data Lake Storage Gen2 REST API에서 이용 가능한 작업 사용 시 트리거됩니다.

참고 항목

Azure Data Lake Storage Gen2는 블록 Blob이 완전히 커밋되었을 때만 Microsoft.Storage.BlobCreated 이벤트가 트리거되는지 확인하려면 FlushWithClose REST API 호출에 대한 이벤트를 필터링합니다. 해당 API 호출은 데이터가 블록 Blob에 완전히 커밋된 후에만 Microsoft.Storage.BlobCreated 이벤트를 트리거합니다. 필터를 만드는 방법은 Event Grid에 대한 필터 이벤트를 참조하세요.

예제 이벤트

Microsoft.Storage.BlobCreated 이벤트(Data Lake Storage Gen2)

Blob Storage 계정에 계층 구조 네임스페이스가 있는 경우, 데이터는 해당 변경 내용을 제외하고 이전 예제와 유사하게 표시됩니다.

  • data.api 키가 CreateFile 또는 FlushWithClose 문자열로 설정됩니다.
  • contentOffset 키는 해당 데이터 세트에 포함됩니다.

참고 항목

애플리케이션에서 PutBlockList 작업을 사용하여 새 Blob을 계정에 업로드하는 경우, 데이터는 해당 변경 내용을 포함하지 않습니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/my-file-system/blobs/new-file.txt",
  "type": "Microsoft.Storage.BlobCreated",
  "time": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "CreateFile",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "eTag": "\"0x8D4BCC2E4835CD0\"",
    "contentType": "text/plain",
    "contentLength": 0,
    "contentOffset": 0,
    "blobType": "BlockBlob",
    "url": "https://my-storage-account.dfs.core.windows.net/my-file-system/new-file.txt",
    "sequencer": "00000000000004420000000000028963",  
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.BlobDeleted 이벤트(Data Lake Storage Gen2)

Blob Storage 계정에 계층 구조 네임스페이스가 있는 경우, 데이터는 해당 변경 내용을 제외하고 이전 예제와 유사하게 표시됩니다.

  • data.api 키가 DeleteFile 문자열로 설정됩니다.
  • url 키는 dfs.core.windows.net 경로를 포함합니다.

참고 항목

애플리케이션이 DeleteBlob 작업을 사용하여 계정에서 Blob을 삭제할 경우, 데이터는 해당 변경 내용을 포함하지 않습니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/my-file-system/blobs/file-to-delete.txt",
  "type": "Microsoft.Storage.BlobDeleted",
  "time": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
    "data": {
    "api": "DeleteFile",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "contentType": "text/plain",
    "blobType": "BlockBlob",
    "url": "https://my-storage-account.dfs.core.windows.net/my-file-system/file-to-delete.txt",
    "sequencer": "00000000000004420000000000028963",  
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.BlobRenamed 이벤트(Data Lake Storage Gen2)

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/my-file-system/blobs/my-renamed-file.txt",
  "type": "Microsoft.Storage.BlobRenamed",
  "time": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "RenameFile",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "destinationUrl": "https://my-storage-account.dfs.core.windows.net/my-file-system/my-renamed-file.txt",
    "sourceUrl": "https://my-storage-account.dfs.core.windows.net/my-file-system/my-original-file.txt",
    "sequencer": "00000000000004420000000000028963",  
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.DirectoryCreated 이벤트(Data Lake Storage Gen2)

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/my-file-system/blobs/my-new-directory",
  "type": "Microsoft.Storage.DirectoryCreated",
  "time": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "CreateDirectory",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "url": "https://my-storage-account.dfs.core.windows.net/my-file-system/my-new-directory",
    "sequencer": "00000000000004420000000000028963",  
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.DirectoryRenamed 이벤트(Data Lake Storage Gen2)

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/my-file-system/blobs/my-renamed-directory",
  "type": "Microsoft.Storage.DirectoryRenamed",
  "time": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "RenameDirectory",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "destinationUrl": "https://my-storage-account.dfs.core.windows.net/my-file-system/my-renamed-directory",
    "sourceUrl": "https://my-storage-account.dfs.core.windows.net/my-file-system/my-original-directory",
    "sequencer": "00000000000004420000000000028963",  
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.DirectoryDeleted 이벤트(Data Lake Storage Gen2)

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/my-file-system/blobs/directory-to-delete",
  "type": "Microsoft.Storage.DirectoryDeleted",
  "time": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "DeleteDirectory",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "url": "https://my-storage-account.dfs.core.windows.net/my-file-system/directory-to-delete",
    "recursive": "true", 
    "sequencer": "00000000000004420000000000028963",  
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

SFTP 이벤트

이러한 이벤트는 스토리지 계정에서 계층 구조 네임스페이스를 사용하도록 설정하고 클라이언트가 SFTP API를 사용하는 경우 트리거됩니다. Azure Blob Storage에 대한 SFTP 지원에 대한 자세한 내용은 Azure Blob Storage의 SFTP(SSH 파일 전송 프로토콜)을 참조하세요.

이벤트 이름 설명
Microsoft.Storage.BlobCreated Blob이 만들어지거나 덮어쓸 때 트리거됩니다.
특히 이 이벤트는 클라이언트가 SftpCreateSftpCommit API에 해당하는 put 작업을 사용할 때 트리거됩니다. 파일이 열리면 빈 Blob이 만들어지고 파일이 닫힐 때 업로드된 콘텐츠가 커밋됩니다.
Microsoft.Storage.BlobDeleted Blob 삭제 시 트리거됩니다.
특히 이 이벤트는 클라이언트가 SftpRemove API에 해당하는 rm 작업을 호출할 때도 트리거됩니다.
Microsoft.Storage.BlobRenamed Blob의 이름을 바꾸면 트리거됩니다.
특히 이 이벤트는 클라이언트가 SftpRename API에 해당하는 파일에서 rename 작업을 사용할 때 트리거됩니다.
Microsoft.Storage.DirectoryCreated 디렉터리를 만들면 트리거됩니다.
특히 이 이벤트는 클라이언트가 SftpMakeDir API에 해당하는 mkdir 작업을 사용할 때 트리거됩니다.
Microsoft.Storage.DirectoryRenamed 디렉터리의 이름을 바꾸면 트리거됩니다.
특히 이 이벤트는 클라이언트가 SftpRename API에 해당하는 디렉터리에서 rename 작업을 사용할 때 트리거됩니다.
Microsoft.Storage.DirectoryDeleted 디렉터리를 삭제하면 트리거됩니다.
특히 이 이벤트는 클라이언트가 SftpRemoveDir API에 해당하는 rmdir 작업을 사용할 때 트리거됩니다.

예제 이벤트

이벤트가 트리거될 때 Event Grid 서비스는 해당 이벤트에 대한 데이터를 구독 엔드포인트로 보냅니다. 이 섹션에는 각 Blob Storage 이벤트에서 데이터가 표시되는 방법에 대한 예제가 포함되어 있습니다.

Microsoft.Storage.BlobCreated 이벤트(SFTP)

Blob Storage 계정이 SFTP를 사용하여 Blob을 만들거나 덮어쓰는 경우 데이터는 다음 변경 내용을 제외하고 이전 예와 유사하게 보입니다.

  • dataVersion 키가 3 값으로 설정됩니다.

  • data.api 키가 SftpCreate 또는 SftpCommit 문자열로 설정됩니다.

  • clientRequestId 키는 포함되어 있지 않습니다.

  • contentType 키는 application/octet-stream으로 설정됩니다.

  • contentOffset 키는 해당 데이터 세트에 포함됩니다.

  • identity 키는 해당 데이터 세트에 포함됩니다. SFTP 인증에 사용되는 로컬 사용자에 해당합니다.

참고 항목

SFTP 업로드는 2개의 이벤트를 생성합니다. 파일을 열 때 만들어진 초기 빈 blob에 대한 SftpCreate 하나와 파일 내용이 기록될 때 SftpCommit 하나입니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/testcontainer/blobs/new-file.txt",
  "type": "Microsoft.Storage.BlobCreated",
  "time": "2022-04-25T19:13:00.1522383Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "SftpCommit",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "eTag": "\"0x8D4BCC2E4835CD0\"",
    "contentType": "application/octet-stream",
    "contentLength": 0,
    "contentOffset": 0,
    "blobType": "BlockBlob",
    "url": "https://my-storage-account.blob.core.windows.net/testcontainer/new-file.txt",
    "sequencer": "00000000000004420000000000028963",
    "identity":"localuser",
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.BlobDeleted 이벤트(SFTP)

Blob Storage 계정이 SFTP를 사용하여 Blob을 삭제하는 경우 데이터는 다음 변경 내용을 제외하고 이전 예와 유사하게 보입니다.

  • dataVersion 키가 2 값으로 설정됩니다.

  • data.api 키가 SftpRemove 문자열로 설정됩니다.

  • clientRequestId 키는 포함되어 있지 않습니다.

  • contentType 키는 application/octet-stream으로 설정됩니다.

  • identity 키는 해당 데이터 세트에 포함됩니다. SFTP 인증에 사용되는 로컬 사용자에 해당합니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/testcontainer/blobs/new-file.txt",
  "type": "Microsoft.Storage.BlobDeleted",
  "time": "2022-04-25T19:13:00.1522383Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "SftpRemove",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "contentType": "text/plain",
    "blobType": "BlockBlob",
    "url": "https://my-storage-account.blob.core.windows.net/testcontainer/new-file.txt",
    "sequencer": "00000000000004420000000000028963",  
    "identity":"localuser",
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.BlobRenamed 이벤트(SFTP)

Blob Storage 계정이 SFTP를 사용하여 Blob의 이름을 바꾸는 경우 데이터는 다음 변경 내용을 제외하고 이전 예와 유사하게 보입니다.

  • data.api 키가 SftpRename 문자열로 설정됩니다.

  • clientRequestId 키는 포함되어 있지 않습니다.

  • identity 키는 해당 데이터 세트에 포함됩니다. SFTP 인증에 사용되는 로컬 사용자에 해당합니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/testcontainer/blobs/my-renamed-file.txt",
  "type": "Microsoft.Storage.BlobRenamed",
  "time": "2022-04-25T19:13:00.1522383Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "SftpRename",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "destinationUrl": "https://my-storage-account.blob.core.windows.net/testcontainer/my-renamed-file.txt",
    "sourceUrl": "https://my-storage-account.blob.core.windows.net/testcontainer/my-original-file.txt",
    "sequencer": "00000000000004420000000000028963",  
    "identity":"localuser",
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.DirectoryCreated 이벤트(SFTP)

Blob Storage 계정이 SFTP를 사용하여 디렉터리를 만드는 경우 데이터는 다음 변경 내용을 제외하고 이전 예와 유사하게 보입니다.

  • dataVersion 키가 2 값으로 설정됩니다.

  • data.api 키가 SftpMakeDir 문자열로 설정됩니다.

  • clientRequestId 키는 포함되어 있지 않습니다.

  • identity 키는 해당 데이터 세트에 포함됩니다. SFTP 인증에 사용되는 로컬 사용자에 해당합니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/testcontainer/blobs/my-new-directory",
  "type": "Microsoft.Storage.DirectoryCreated",
  "time": "2022-04-25T19:13:00.1522383Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "SftpMakeDir",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "url": "https://my-storage-account.blob.core.windows.net/testcontainer/my-new-directory",
    "sequencer": "00000000000004420000000000028963",  
    "identity":"localuser",
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.DirectoryRenamed 이벤트(SFTP)

Blob Storage 계정이 SFTP를 사용하여 디렉터리 이름을 바꾸는 경우 데이터는 다음 변경 내용을 제외하고 이전 예와 유사하게 보입니다.

  • data.api 키가 SftpRename 문자열로 설정됩니다.

  • clientRequestId 키는 포함되어 있지 않습니다.

  • identity 키는 해당 데이터 세트에 포함됩니다. SFTP 인증에 사용되는 로컬 사용자에 해당합니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/testcontainer/blobs/my-renamed-directory",
  "type": "Microsoft.Storage.DirectoryRenamed",
  "time": "2022-04-25T19:13:00.1522383Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "SftpRename",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "destinationUrl": "https://my-storage-account.blob.core.windows.net/testcontainer/my-renamed-directory",
    "sourceUrl": "https://my-storage-account.blob.core.windows.net/testcontainer/my-original-directory",
    "sequencer": "00000000000004420000000000028963",  
    "identity":"localuser",
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

Microsoft.Storage.DirectoryDeleted 이벤트(SFTP)

Blob Storage 계정이 SFTP를 사용하여 디렉터리를 삭제하는 경우 데이터는 다음 변경 내용을 제외하고 이전 예와 유사하게 보입니다.

  • data.api 키가 SftpRemoveDir 문자열로 설정됩니다.

  • clientRequestId 키는 포함되어 있지 않습니다.

  • identity 키는 해당 데이터 세트에 포함됩니다. SFTP 인증에 사용되는 로컬 사용자에 해당합니다.

[{
  "source": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
  "subject": "/blobServices/default/containers/testcontainer/blobs/directory-to-delete",
  "type": "Microsoft.Storage.DirectoryDeleted",
  "time": "2022-04-25T19:13:00.1522383Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "SftpRemoveDir",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "url": "https://my-storage-account.blob.core.windows.net/testcontainer/directory-to-delete",
    "recursive": "false", 
    "sequencer": "00000000000004420000000000028963",  
    "identity":"localuser",
    "storageDiagnostics": {
    "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "specversion": "1.0"
}]

이러한 이벤트는 정책에 의해 정의된 작업이 수행될 때 트리거됩니다.

이벤트 이름 설명
Microsoft.Storage.BlobInventoryPolicyCompleted 인벤토리 정책에 정의된 규칙에 대해 인벤토리 실행이 완료될 때 트리거됩니다. 인벤토리가 실행되기 전에 사용자 오류로 인해 인벤토리 실행이 실패하는 경우에도 이 이벤트가 발생합니다. 예를 들어 잘못된 정책 또는 대상 컨테이너가 없어서 발생하는 오류는 이 이벤트를 트리거합니다.
Microsoft.Storage.LifecyclePolicyCompleted 수명 주기 관리 정책에 의해 정의된 작업이 수행될 때 트리거됩니다.

예제 이벤트

이벤트가 트리거될 때 Event Grid 서비스는 해당 이벤트에 대한 데이터를 구독 엔드포인트로 보냅니다. 이 섹션에는 각 Blob Storage 이벤트에서 데이터가 표시되는 방법에 대한 예제가 포함되어 있습니다.

Microsoft.Storage.BlobInventoryPolicyCompleted 이벤트

{
  "source": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/BlobInventory/providers/Microsoft.EventGrid/topics/BlobInventoryTopic",
  "subject": "BlobDataManagement/BlobInventory",
  "type": "Microsoft.Storage.BlobInventoryPolicyCompleted",
  "time": "2021-05-28T15:03:18Z",  
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "data": {
    "scheduleDateTime": "2021-05-28T03:50:27Z",
    "accountName": "testaccount",
    "ruleName": "Rule_1",
    "policyRunStatus": "Succeeded",
    "policyRunStatusMessage": "Inventory run succeeded, refer manifest file for inventory details.",
    "policyRunId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "manifestBlobUrl": "https://testaccount.blob.core.windows.net/inventory-destination-container/2021/05/26/13-25-36/Rule_1/Rule_1.csv"
  },
  "specversion": "1.0"
}

Microsoft.Storage.LifecyclePolicyCompleted 이벤트

{
    "source": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/contosoresourcegroup/providers/Microsoft.Storage/storageAccounts/contosostorageaccount",
    "subject": "BlobDataManagement/LifeCycleManagement/SummaryReport",
    "type": "Microsoft.Storage.LifecyclePolicyCompleted",
    "time": "2022-05-26T00:00:40.1880331",    
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "data": {
        "scheduleTime": "2022/05/24 22:57:29.3260160",
        "deleteSummary": {
            "totalObjectsCount": 16,
            "successCount": 14,
            "errorList": ""
        },
        "tierToCoolSummary": {
            "totalObjectsCount": 0,
            "successCount": 0,
            "errorList": ""
        },
        "tierToArchiveSummary": {
            "totalObjectsCount": 0,
            "successCount": 0,
            "errorList": ""
        }
    },
    "specversion": "1.0"
}

이벤트 속성

이벤트에는 다음과 같은 최상위 데이터가 있습니다.

속성 Type Description
source string 이벤트 원본에 대한 전체 리소스 경로입니다. 이 필드는 쓸 수 없습니다. Event Grid는 이 값을 제공합니다.
subject string 게시자가 정의한 이벤트 주체의 경로입니다.
type string 이 이벤트 원본에 대해 등록된 이벤트 유형 중 하나입니다.
time string 공급자의 UTC 시간을 기준으로 이벤트가 생성되는 시간입니다.
id string 이벤트에 대한 고유 식별자입니다.
data 개체 Blob Storage 이벤트 데이터입니다.
specversion string CloudEvents 스키마 사양 버전입니다.

데이터 개체의 속성은 다음과 같습니다.

속성 Type Description
api string 이벤트를 트리거하는 작업입니다.
clientRequestId string 스토리지 API 작업에 대한 클라이언트 제공 요청 ID입니다. 해당 ID는 로그의 ‘client-request-id’ 필드를 사용하여 Azure Storage 진단 로그와의 상관관계를 지정하는 데 사용할 수 있으며, ‘x-ms-client-request-id’ 헤더를 사용하여 클라이언트 요청에 제공할 수 있습니다. 로그 형식을 참조하세요.
requestId string 스토리지 API 작업에 대한 서비스에서 생성된 요청 ID입니다. 로그의 "request-id-header" 필드를 사용하여 Azure Storage 진단 로그와의 상관 관계를 지정하는 데 사용할 수 있으며, 'x-ms-request-id' 헤더에서 API 호출을 시작하여 반환됩니다. 로그 형식을 참조하세요.
eTag string 조건부로 작업을 수행하는 데 사용할 수 있는 값입니다.
contentType string Blob에 대해 지정된 콘텐츠 형식입니다.
contentLength 정수 Blob의 크기(바이트)입니다.
blobType string Blob의 형식입니다. 유효한 값은 "BlockBlob" 또는 "PageBlob"입니다.
contentOffset number 이벤트 트리거 애플리케이션에서 파일에 쓰기를 완료한 시점에 수행된 쓰기 작업의 바이트 단위 오프셋입니다.
계층 구조 네임스페이스가 있는 Blob Storage 계정에서 활성화되는 이벤트에 대해서만 나타납니다.
destinationUrl string 작업이 완료된 후 존재하는 파일의 URL입니다. 예를 들어, 파일의 이름을 바꾸면 destinationUrl 속성에 새 파일 이름의 URL이 포함됩니다.
계층 구조 네임스페이스가 있는 Blob Storage 계정에서 활성화되는 이벤트에 대해서만 나타납니다.
sourceUrl string 작업을 완료하기 전에 존재하는 파일의 URL입니다. 예를 들어, 파일의 이름을 바꾸면 sourceUrl은 이름 바꾸기 작업 전 원래 파일 이름의 URL을 포함합니다.
계층 구조 네임스페이스가 있는 Blob Storage 계정에서 활성화되는 이벤트에 대해서만 나타납니다.
url string Blob에 대한 경로입니다.
클라이언트가 Blob REST API를 사용할 경우 URL의 구조는 다음과 같습니다<storage-account-name>.blob.core.windows.net\<container-name>\<file-name>.
클라이언트가 Data Lake Storage REST API를 사용할 경우 URL의 구조는 다음과 같습니다<storage-account-name>.dfs.core.windows.net/<file-system-name>/<file-name>.
recursive string 모든 자식 디렉터리에서 작업을 실행하려면 True, 그렇지 않으면 False입니다.
계층 구조 네임스페이스가 있는 Blob Storage 계정에서 활성화되는 이벤트에 대해서만 나타납니다.
sequencer string 특정 Blob 이름에 대한 이벤트의 논리적 순서를 나타내는 불투명 문자열 값입니다. 사용자는 표준 문자열 비교를 사용하여 동일한 Blob 이름에 대한 두 이벤트의 상대적 순서를 이해할 수 있습니다.
identity string 이벤트와 연결된 ID를 나타내는 문자열 값입니다. SFTP의 경우 이는 로컬 사용자 이름입니다.
storageDiagnostics 개체 경우에 따라 Azure Storage 서비스에 의해 포함되는 진단 데이터입니다. 포함될 경우, 이벤트 소비자는 무시해야 합니다.

자습서 및 방법

제목 설명
빠른 시작: Azure CLI를 사용하여 Blob Storage 이벤트를 사용자 지정 웹 엔드포인트로 라우팅 Azure CLI를 사용하여 Blob Storage 이벤트를 WebHook로 전송하는 방법을 보여줍니다.
빠른 시작: PowerShell을 사용하여 Blob Storage 이벤트를 사용자 지정 웹 엔드포인트로 라우팅 Azure PowerShell을 사용하여 Blob Storage 이벤트를 WebHook로 전송하는 방법을 보여줍니다.
빠른 시작: Azure Portal을 사용하여 Blob Storage 이벤트 만들기 및 라우팅 포털를 사용하여 Blob Storage 이벤트를 WebHook로 전송하는 방법을 보여줍니다.
Azure CLI: Blob Storage 계정에 대한 이벤트 구독 Blob Storage 계정에 대한 이벤트를 구독하는 샘플 스크립트입니다. 이벤트를 WebHook로 전송합니다.
PowerShell: Blob Storage 계정에 대한 이벤트 구독 Blob Storage 계정에 대한 이벤트를 구독하는 샘플 스크립트입니다. 이벤트를 WebHook로 전송합니다.
Resource Manager 템플릿: Blob Storage 및 구독 만들기 Azure Blob Storage 계정을 배포하고 해당 스토리지 계정에 대한 이벤트를 구독합니다. WebHook에 이벤트를 보냅니다.
개요: Blob Storage 이벤트에 대응 Event Grid와 Blob Storage 통합의 개요입니다.

다음 단계