azure-sdk-for-js/sdk/eventgrid/test-resources.bicep

142 строки
4.4 KiB
Bicep

param baseName string = resourceGroup().name
param location string = resourceGroup().location
param testApplicationOid string
var eventGridTopicName = '${baseName}-eg'
var cloudEventTopicName = '${baseName}-ce'
var customEventTopicName = '${baseName}-cus'
var serviceBusNamespaceName = '${baseName}-ns'
var egNamespaceName = '${baseName}-egns'
var serviceBusQueueName = '${baseName}-queue'
var dataSenderRoleDefinitionId = 'd5a91429-5739-47e2-a06b-3470a27159e7'
var dataContributorRoleDefinitionId = '1d8c3fe3-8864-474b-8749-01e3783e8157'
var sbApiVersion = '2022-10-01-preview'
// Create Event Grid Topic with EventGridSchema
resource eventGridTopic 'Microsoft.EventGrid/topics@2024-06-01-preview' = {
name: eventGridTopicName
location: location
properties: {
inputSchema: 'EventGridSchema'
publicNetworkAccess: 'Enabled'
}
}
// Create Event Grid Topic with CloudEventSchema
resource cloudEventTopic 'Microsoft.EventGrid/topics@2024-06-01-preview' = {
name: cloudEventTopicName
location: location
properties: {
inputSchema: 'CloudEventSchemaV1_0'
publicNetworkAccess: 'Enabled'
}
}
// Create Event Grid Topic with CustomEventSchema
resource customEventTopic 'Microsoft.EventGrid/topics@2024-06-01-preview' = {
name: customEventTopicName
location: location
properties: {
inputSchema: 'CustomEventSchema'
inputSchemaMapping: {
properties: {
id: {}
topic: {}
eventTime: {}
eventType: {
sourceField: 'typ'
}
subject: {
sourceField: 'sub'
}
dataVersion: {
sourceField: 'ver'
}
}
inputSchemaMappingType: 'Json'
}
publicNetworkAccess: 'Enabled'
}
}
// Create Service Bus Namespace with a Queue
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-10-01-preview' = {
name: serviceBusNamespaceName
location: location
sku: {
name: 'Basic'
}
}
resource serviceBusQueue 'Microsoft.ServiceBus/namespaces/queues@2022-10-01-preview' = {
name: serviceBusQueueName
parent: serviceBusNamespace
}
// Assign Data Sender Role
resource dataSenderRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, baseName, eventGridTopicName, 'DataSender')
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', dataSenderRoleDefinitionId)
principalId: testApplicationOid
}
}
// Assign Data Contributor Role
resource dataContributorRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, baseName, eventGridTopicName, 'DataContributor')
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', dataContributorRoleDefinitionId)
principalId: testApplicationOid
}
}
// Create Event Grid Namespace
resource egNamespace 'Microsoft.EventGrid/namespaces@2024-06-01-preview' = {
name: egNamespaceName
location: location
sku: {
name: 'Standard'
capacity: 1
}
}
// Create Event Grid Namespace Topic
resource egNamespaceTopic 'Microsoft.EventGrid/namespaces/topics@2024-06-01-preview' = {
name: 'testtopic1'
parent: egNamespace
properties: {
publisherType: 'Custom'
inputSchema: 'CloudEventSchemaV1_0'
eventRetentionInDays: 1
}
}
// Create Event Grid Namespace Topic Subscription
resource egNamespaceTopicSubscription 'Microsoft.EventGrid/namespaces/topics/eventSubscriptions@2024-06-01-preview' = {
name: 'testsubscription1'
parent: egNamespaceTopic
properties: {
deliveryConfiguration: {
deliveryMode: 'Queue'
queue: {
receiveLockDurationInSeconds: 60
maxDeliveryCount: 10
eventTimeToLive: 'P1D'
}
}
eventDeliverySchema: 'CloudEventSchemaV1_0'
filtersConfiguration: {
includedEventTypes: []
}
}
}
// Outputs
output EVENT_GRID_EVENT_GRID_SCHEMA_ENDPOINT string = eventGridTopic.properties.endpoint
output EVENT_GRID_CLOUD_EVENT_SCHEMA_ENDPOINT string = cloudEventTopic.properties.endpoint
output EVENT_GRID_CUSTOM_SCHEMA_ENDPOINT string = customEventTopic.properties.endpoint
output SERVICE_BUS_CONNECTION_STRING string = listKeys(resourceId('Microsoft.ServiceBus/namespaces/AuthorizationRules', serviceBusNamespaceName, 'RootManageSharedAccessKey'), sbApiVersion).primaryConnectionString
output SERVICE_BUS_QUEUE_NAME string = serviceBusQueueName
output EVENT_GRID_NAMESPACES_ENDPOINT string = egNamespace.properties.topicsConfiguration.hostname