EndpointCosmosdbAccount

class EndpointCosmosdbAccount : KotlinCustomResource

Manages an IotHub Cosmos DB Account Endpoint

NOTE: Endpoints can be defined either directly on the azure.iot.IoTHub resource, or using the azurerm_iothub_endpoint_* resources - but the two ways of defining the endpoints cannot be used together. If both are used against the same IoTHub, spurious changes will occur. Also, defining a azurerm_iothub_endpoint_* resource and another endpoint of a different type directly on the azure.iot.IoTHub resource is not supported.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const example = new azure.core.ResourceGroup("example", {
name: "example-resources",
location: "West Europe",
});
const exampleIoTHub = new azure.iot.IoTHub("example", {
name: "exampleIothub",
resourceGroupName: example.name,
location: example.location,
sku: {
name: "B1",
capacity: 1,
},
tags: {
purpose: "example",
},
});
const exampleAccount = new azure.cosmosdb.Account("example", {
name: "cosmosdb-account",
location: example.location,
resourceGroupName: example.name,
offerType: "Standard",
kind: "GlobalDocumentDB",
consistencyPolicy: {
consistencyLevel: "Strong",
},
geoLocations: [{
location: example.location,
failoverPriority: 0,
}],
});
const exampleSqlDatabase = new azure.cosmosdb.SqlDatabase("example", {
name: "cosmos-sql-db",
resourceGroupName: exampleAccount.resourceGroupName,
accountName: exampleAccount.name,
});
const exampleSqlContainer = new azure.cosmosdb.SqlContainer("example", {
name: "example-container",
resourceGroupName: exampleAccount.resourceGroupName,
accountName: exampleAccount.name,
databaseName: exampleSqlDatabase.name,
partitionKeyPath: "/definition/id",
});
const exampleEndpointCosmosdbAccount = new azure.iot.EndpointCosmosdbAccount("example", {
name: "example",
resourceGroupName: example.name,
iothubId: exampleIoTHub.id,
containerName: exampleSqlContainer.name,
databaseName: exampleSqlDatabase.name,
endpointUri: exampleAccount.endpoint,
primaryKey: exampleAccount.primaryKey,
secondaryKey: exampleAccount.secondaryKey,
});
import pulumi
import pulumi_azure as azure
example = azure.core.ResourceGroup("example",
name="example-resources",
location="West Europe")
example_io_t_hub = azure.iot.IoTHub("example",
name="exampleIothub",
resource_group_name=example.name,
location=example.location,
sku={
"name": "B1",
"capacity": 1,
},
tags={
"purpose": "example",
})
example_account = azure.cosmosdb.Account("example",
name="cosmosdb-account",
location=example.location,
resource_group_name=example.name,
offer_type="Standard",
kind="GlobalDocumentDB",
consistency_policy={
"consistency_level": "Strong",
},
geo_locations=[{
"location": example.location,
"failover_priority": 0,
}])
example_sql_database = azure.cosmosdb.SqlDatabase("example",
name="cosmos-sql-db",
resource_group_name=example_account.resource_group_name,
account_name=example_account.name)
example_sql_container = azure.cosmosdb.SqlContainer("example",
name="example-container",
resource_group_name=example_account.resource_group_name,
account_name=example_account.name,
database_name=example_sql_database.name,
partition_key_path="/definition/id")
example_endpoint_cosmosdb_account = azure.iot.EndpointCosmosdbAccount("example",
name="example",
resource_group_name=example.name,
iothub_id=example_io_t_hub.id,
container_name=example_sql_container.name,
database_name=example_sql_database.name,
endpoint_uri=example_account.endpoint,
primary_key=example_account.primary_key,
secondary_key=example_account.secondary_key)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
return await Deployment.RunAsync(() =>
{
var example = new Azure.Core.ResourceGroup("example", new()
{
Name = "example-resources",
Location = "West Europe",
});
var exampleIoTHub = new Azure.Iot.IoTHub("example", new()
{
Name = "exampleIothub",
ResourceGroupName = example.Name,
Location = example.Location,
Sku = new Azure.Iot.Inputs.IoTHubSkuArgs
{
Name = "B1",
Capacity = 1,
},
Tags =
{
{ "purpose", "example" },
},
});
var exampleAccount = new Azure.CosmosDB.Account("example", new()
{
Name = "cosmosdb-account",
Location = example.Location,
ResourceGroupName = example.Name,
OfferType = "Standard",
Kind = "GlobalDocumentDB",
ConsistencyPolicy = new Azure.CosmosDB.Inputs.AccountConsistencyPolicyArgs
{
ConsistencyLevel = "Strong",
},
GeoLocations = new[]
{
new Azure.CosmosDB.Inputs.AccountGeoLocationArgs
{
Location = example.Location,
FailoverPriority = 0,
},
},
});
var exampleSqlDatabase = new Azure.CosmosDB.SqlDatabase("example", new()
{
Name = "cosmos-sql-db",
ResourceGroupName = exampleAccount.ResourceGroupName,
AccountName = exampleAccount.Name,
});
var exampleSqlContainer = new Azure.CosmosDB.SqlContainer("example", new()
{
Name = "example-container",
ResourceGroupName = exampleAccount.ResourceGroupName,
AccountName = exampleAccount.Name,
DatabaseName = exampleSqlDatabase.Name,
PartitionKeyPath = "/definition/id",
});
var exampleEndpointCosmosdbAccount = new Azure.Iot.EndpointCosmosdbAccount("example", new()
{
Name = "example",
ResourceGroupName = example.Name,
IothubId = exampleIoTHub.Id,
ContainerName = exampleSqlContainer.Name,
DatabaseName = exampleSqlDatabase.Name,
EndpointUri = exampleAccount.Endpoint,
PrimaryKey = exampleAccount.PrimaryKey,
SecondaryKey = exampleAccount.SecondaryKey,
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/cosmosdb"
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/iot"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("example-resources"),
Location: pulumi.String("West Europe"),
})
if err != nil {
return err
}
exampleIoTHub, err := iot.NewIoTHub(ctx, "example", &iot.IoTHubArgs{
Name: pulumi.String("exampleIothub"),
ResourceGroupName: example.Name,
Location: example.Location,
Sku: &iot.IoTHubSkuArgs{
Name: pulumi.String("B1"),
Capacity: pulumi.Int(1),
},
Tags: pulumi.StringMap{
"purpose": pulumi.String("example"),
},
})
if err != nil {
return err
}
exampleAccount, err := cosmosdb.NewAccount(ctx, "example", &cosmosdb.AccountArgs{
Name: pulumi.String("cosmosdb-account"),
Location: example.Location,
ResourceGroupName: example.Name,
OfferType: pulumi.String("Standard"),
Kind: pulumi.String("GlobalDocumentDB"),
ConsistencyPolicy: &cosmosdb.AccountConsistencyPolicyArgs{
ConsistencyLevel: pulumi.String("Strong"),
},
GeoLocations: cosmosdb.AccountGeoLocationArray{
&cosmosdb.AccountGeoLocationArgs{
Location: example.Location,
FailoverPriority: pulumi.Int(0),
},
},
})
if err != nil {
return err
}
exampleSqlDatabase, err := cosmosdb.NewSqlDatabase(ctx, "example", &cosmosdb.SqlDatabaseArgs{
Name: pulumi.String("cosmos-sql-db"),
ResourceGroupName: exampleAccount.ResourceGroupName,
AccountName: exampleAccount.Name,
})
if err != nil {
return err
}
exampleSqlContainer, err := cosmosdb.NewSqlContainer(ctx, "example", &cosmosdb.SqlContainerArgs{
Name: pulumi.String("example-container"),
ResourceGroupName: exampleAccount.ResourceGroupName,
AccountName: exampleAccount.Name,
DatabaseName: exampleSqlDatabase.Name,
PartitionKeyPath: pulumi.String("/definition/id"),
})
if err != nil {
return err
}
_, err = iot.NewEndpointCosmosdbAccount(ctx, "example", &iot.EndpointCosmosdbAccountArgs{
Name: pulumi.String("example"),
ResourceGroupName: example.Name,
IothubId: exampleIoTHub.ID(),
ContainerName: exampleSqlContainer.Name,
DatabaseName: exampleSqlDatabase.Name,
EndpointUri: exampleAccount.Endpoint,
PrimaryKey: exampleAccount.PrimaryKey,
SecondaryKey: exampleAccount.SecondaryKey,
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.iot.IoTHub;
import com.pulumi.azure.iot.IoTHubArgs;
import com.pulumi.azure.iot.inputs.IoTHubSkuArgs;
import com.pulumi.azure.cosmosdb.Account;
import com.pulumi.azure.cosmosdb.AccountArgs;
import com.pulumi.azure.cosmosdb.inputs.AccountConsistencyPolicyArgs;
import com.pulumi.azure.cosmosdb.inputs.AccountGeoLocationArgs;
import com.pulumi.azure.cosmosdb.SqlDatabase;
import com.pulumi.azure.cosmosdb.SqlDatabaseArgs;
import com.pulumi.azure.cosmosdb.SqlContainer;
import com.pulumi.azure.cosmosdb.SqlContainerArgs;
import com.pulumi.azure.iot.EndpointCosmosdbAccount;
import com.pulumi.azure.iot.EndpointCosmosdbAccountArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("example-resources")
.location("West Europe")
.build());
var exampleIoTHub = new IoTHub("exampleIoTHub", IoTHubArgs.builder()
.name("exampleIothub")
.resourceGroupName(example.name())
.location(example.location())
.sku(IoTHubSkuArgs.builder()
.name("B1")
.capacity("1")
.build())
.tags(Map.of("purpose", "example"))
.build());
var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
.name("cosmosdb-account")
.location(example.location())
.resourceGroupName(example.name())
.offerType("Standard")
.kind("GlobalDocumentDB")
.consistencyPolicy(AccountConsistencyPolicyArgs.builder()
.consistencyLevel("Strong")
.build())
.geoLocations(AccountGeoLocationArgs.builder()
.location(example.location())
.failoverPriority(0)
.build())
.build());
var exampleSqlDatabase = new SqlDatabase("exampleSqlDatabase", SqlDatabaseArgs.builder()
.name("cosmos-sql-db")
.resourceGroupName(exampleAccount.resourceGroupName())
.accountName(exampleAccount.name())
.build());
var exampleSqlContainer = new SqlContainer("exampleSqlContainer", SqlContainerArgs.builder()
.name("example-container")
.resourceGroupName(exampleAccount.resourceGroupName())
.accountName(exampleAccount.name())
.databaseName(exampleSqlDatabase.name())
.partitionKeyPath("/definition/id")
.build());
var exampleEndpointCosmosdbAccount = new EndpointCosmosdbAccount("exampleEndpointCosmosdbAccount", EndpointCosmosdbAccountArgs.builder()
.name("example")
.resourceGroupName(example.name())
.iothubId(exampleIoTHub.id())
.containerName(exampleSqlContainer.name())
.databaseName(exampleSqlDatabase.name())
.endpointUri(exampleAccount.endpoint())
.primaryKey(exampleAccount.primaryKey())
.secondaryKey(exampleAccount.secondaryKey())
.build());
}
}
resources:
example:
type: azure:core:ResourceGroup
properties:
name: example-resources
location: West Europe
exampleIoTHub:
type: azure:iot:IoTHub
name: example
properties:
name: exampleIothub
resourceGroupName: ${example.name}
location: ${example.location}
sku:
name: B1
capacity: '1'
tags:
purpose: example
exampleAccount:
type: azure:cosmosdb:Account
name: example
properties:
name: cosmosdb-account
location: ${example.location}
resourceGroupName: ${example.name}
offerType: Standard
kind: GlobalDocumentDB
consistencyPolicy:
consistencyLevel: Strong
geoLocations:
- location: ${example.location}
failoverPriority: 0
exampleSqlDatabase:
type: azure:cosmosdb:SqlDatabase
name: example
properties:
name: cosmos-sql-db
resourceGroupName: ${exampleAccount.resourceGroupName}
accountName: ${exampleAccount.name}
exampleSqlContainer:
type: azure:cosmosdb:SqlContainer
name: example
properties:
name: example-container
resourceGroupName: ${exampleAccount.resourceGroupName}
accountName: ${exampleAccount.name}
databaseName: ${exampleSqlDatabase.name}
partitionKeyPath: /definition/id
exampleEndpointCosmosdbAccount:
type: azure:iot:EndpointCosmosdbAccount
name: example
properties:
name: example
resourceGroupName: ${example.name}
iothubId: ${exampleIoTHub.id}
containerName: ${exampleSqlContainer.name}
databaseName: ${exampleSqlDatabase.name}
endpointUri: ${exampleAccount.endpoint}
primaryKey: ${exampleAccount.primaryKey}
secondaryKey: ${exampleAccount.secondaryKey}

Import

IoTHub Cosmos DB Account Endpoint can be imported using the resource id, e.g.

$ pulumi import azure:iot/endpointCosmosdbAccount:EndpointCosmosdbAccount endpoint1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Devices/iotHubs/hub1/endpoints/cosmosDBAccountEndpoint1

Properties

Link copied to clipboard

The type used to authenticate against the Cosmos DB Account endpoint. Possible values are keyBased and identityBased. Defaults to keyBased.

Link copied to clipboard
val containerName: Output<String>

The name of the Cosmos DB Container in the Cosmos DB Database. Changing this forces a new resource to be created.

Link copied to clipboard
val databaseName: Output<String>

The name of the Cosmos DB Database in the Cosmos DB Account. Changing this forces a new resource to be created.

Link copied to clipboard
val endpointUri: Output<String>

The URI of the Cosmos DB Account. Changing this forces a new resource to be created.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val identityId: Output<String>?

The ID of the User Managed Identity used to authenticate against the Cosmos DB Account endpoint.

Link copied to clipboard
val iothubId: Output<String>

The ID of the IoT Hub to create the endpoint. Changing this forces a new resource to be created.

Link copied to clipboard
val name: Output<String>

The name of the endpoint. The name must be unique across endpoint types. The following names are reserved: events, operationsMonitoringEvents, fileNotifications and $default. Changing this forces a new resource to be created.

Link copied to clipboard
val partitionKeyName: Output<String>?

The name of the partition key associated with the Cosmos DB Container.

Link copied to clipboard

The template for generating a synthetic partition key value for use within the Cosmos DB Container.

Link copied to clipboard
val primaryKey: Output<String>?

The primary key of the Cosmos DB Account.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

The name of the resource group under which the Cosmos DB Account has been created. Changing this forces a new resource to be created.

Link copied to clipboard
val secondaryKey: Output<String>?

The secondary key of the Cosmos DB Account.

Link copied to clipboard
val urn: Output<String>