We recommend using Azure Native.
published on Monday, Mar 9, 2026 by Pulumi
We recommend using Azure Native.
published on Monday, Mar 9, 2026 by Pulumi
Manages a Azure recovery vault protection container mapping. A protection container mapping decides how to translate the protection container when a VM is migrated from one region to another.
Example Usage
using Pulumi;
using Azure = Pulumi.Azure;
class MyStack : Stack
{
public MyStack()
{
var primaryResourceGroup = new Azure.Core.ResourceGroup("primaryResourceGroup", new Azure.Core.ResourceGroupArgs
{
Location = "West US",
});
var secondaryResourceGroup = new Azure.Core.ResourceGroup("secondaryResourceGroup", new Azure.Core.ResourceGroupArgs
{
Location = "East US",
});
var vault = new Azure.RecoveryServices.Vault("vault", new Azure.RecoveryServices.VaultArgs
{
Location = secondaryResourceGroup.Location,
ResourceGroupName = secondaryResourceGroup.Name,
Sku = "Standard",
});
var primaryFabric = new Azure.SiteRecovery.Fabric("primaryFabric", new Azure.SiteRecovery.FabricArgs
{
ResourceGroupName = secondaryResourceGroup.Name,
RecoveryVaultName = vault.Name,
Location = primaryResourceGroup.Location,
});
var secondaryFabric = new Azure.SiteRecovery.Fabric("secondaryFabric", new Azure.SiteRecovery.FabricArgs
{
ResourceGroupName = secondaryResourceGroup.Name,
RecoveryVaultName = vault.Name,
Location = secondaryResourceGroup.Location,
});
var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer("primaryProtectionContainer", new Azure.SiteRecovery.ProtectionContainerArgs
{
ResourceGroupName = secondaryResourceGroup.Name,
RecoveryVaultName = vault.Name,
RecoveryFabricName = primaryFabric.Name,
});
var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer("secondaryProtectionContainer", new Azure.SiteRecovery.ProtectionContainerArgs
{
ResourceGroupName = secondaryResourceGroup.Name,
RecoveryVaultName = vault.Name,
RecoveryFabricName = secondaryFabric.Name,
});
var policy = new Azure.SiteRecovery.ReplicationPolicy("policy", new Azure.SiteRecovery.ReplicationPolicyArgs
{
ResourceGroupName = secondaryResourceGroup.Name,
RecoveryVaultName = vault.Name,
RecoveryPointRetentionInMinutes = 24 * 60,
ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,
});
var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping("container-mapping", new Azure.SiteRecovery.ProtectionContainerMappingArgs
{
ResourceGroupName = secondaryResourceGroup.Name,
RecoveryVaultName = vault.Name,
RecoveryFabricName = primaryFabric.Name,
RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,
RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,
RecoveryReplicationPolicyId = policy.Id,
});
}
}
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v4/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v4/go/azure/recoveryservices"
"github.com/pulumi/pulumi-azure/sdk/v4/go/azure/siterecovery"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
primaryResourceGroup, err := core.NewResourceGroup(ctx, "primaryResourceGroup", &core.ResourceGroupArgs{
Location: pulumi.String("West US"),
})
if err != nil {
return err
}
secondaryResourceGroup, err := core.NewResourceGroup(ctx, "secondaryResourceGroup", &core.ResourceGroupArgs{
Location: pulumi.String("East US"),
})
if err != nil {
return err
}
vault, err := recoveryservices.NewVault(ctx, "vault", &recoveryservices.VaultArgs{
Location: secondaryResourceGroup.Location,
ResourceGroupName: secondaryResourceGroup.Name,
Sku: pulumi.String("Standard"),
})
if err != nil {
return err
}
primaryFabric, err := siterecovery.NewFabric(ctx, "primaryFabric", &siterecovery.FabricArgs{
ResourceGroupName: secondaryResourceGroup.Name,
RecoveryVaultName: vault.Name,
Location: primaryResourceGroup.Location,
})
if err != nil {
return err
}
secondaryFabric, err := siterecovery.NewFabric(ctx, "secondaryFabric", &siterecovery.FabricArgs{
ResourceGroupName: secondaryResourceGroup.Name,
RecoveryVaultName: vault.Name,
Location: secondaryResourceGroup.Location,
})
if err != nil {
return err
}
primaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, "primaryProtectionContainer", &siterecovery.ProtectionContainerArgs{
ResourceGroupName: secondaryResourceGroup.Name,
RecoveryVaultName: vault.Name,
RecoveryFabricName: primaryFabric.Name,
})
if err != nil {
return err
}
secondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, "secondaryProtectionContainer", &siterecovery.ProtectionContainerArgs{
ResourceGroupName: secondaryResourceGroup.Name,
RecoveryVaultName: vault.Name,
RecoveryFabricName: secondaryFabric.Name,
})
if err != nil {
return err
}
policy, err := siterecovery.NewReplicationPolicy(ctx, "policy", &siterecovery.ReplicationPolicyArgs{
ResourceGroupName: secondaryResourceGroup.Name,
RecoveryVaultName: vault.Name,
RecoveryPointRetentionInMinutes: 24 * 60,
ApplicationConsistentSnapshotFrequencyInMinutes: 4 * 60,
})
if err != nil {
return err
}
_, err = siterecovery.NewProtectionContainerMapping(ctx, "container-mapping", &siterecovery.ProtectionContainerMappingArgs{
ResourceGroupName: secondaryResourceGroup.Name,
RecoveryVaultName: vault.Name,
RecoveryFabricName: primaryFabric.Name,
RecoverySourceProtectionContainerName: primaryProtectionContainer.Name,
RecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),
RecoveryReplicationPolicyId: policy.ID(),
})
if err != nil {
return err
}
return nil
})
}
Example coming soon!
import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const primaryResourceGroup = new azure.core.ResourceGroup("primaryResourceGroup", {location: "West US"});
const secondaryResourceGroup = new azure.core.ResourceGroup("secondaryResourceGroup", {location: "East US"});
const vault = new azure.recoveryservices.Vault("vault", {
location: secondaryResourceGroup.location,
resourceGroupName: secondaryResourceGroup.name,
sku: "Standard",
});
const primaryFabric = new azure.siterecovery.Fabric("primaryFabric", {
resourceGroupName: secondaryResourceGroup.name,
recoveryVaultName: vault.name,
location: primaryResourceGroup.location,
});
const secondaryFabric = new azure.siterecovery.Fabric("secondaryFabric", {
resourceGroupName: secondaryResourceGroup.name,
recoveryVaultName: vault.name,
location: secondaryResourceGroup.location,
});
const primaryProtectionContainer = new azure.siterecovery.ProtectionContainer("primaryProtectionContainer", {
resourceGroupName: secondaryResourceGroup.name,
recoveryVaultName: vault.name,
recoveryFabricName: primaryFabric.name,
});
const secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer("secondaryProtectionContainer", {
resourceGroupName: secondaryResourceGroup.name,
recoveryVaultName: vault.name,
recoveryFabricName: secondaryFabric.name,
});
const policy = new azure.siterecovery.ReplicationPolicy("policy", {
resourceGroupName: secondaryResourceGroup.name,
recoveryVaultName: vault.name,
recoveryPointRetentionInMinutes: 24 * 60,
applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,
});
const container_mapping = new azure.siterecovery.ProtectionContainerMapping("container-mapping", {
resourceGroupName: secondaryResourceGroup.name,
recoveryVaultName: vault.name,
recoveryFabricName: primaryFabric.name,
recoverySourceProtectionContainerName: primaryProtectionContainer.name,
recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,
recoveryReplicationPolicyId: policy.id,
});
import pulumi
import pulumi_azure as azure
primary_resource_group = azure.core.ResourceGroup("primaryResourceGroup", location="West US")
secondary_resource_group = azure.core.ResourceGroup("secondaryResourceGroup", location="East US")
vault = azure.recoveryservices.Vault("vault",
location=secondary_resource_group.location,
resource_group_name=secondary_resource_group.name,
sku="Standard")
primary_fabric = azure.siterecovery.Fabric("primaryFabric",
resource_group_name=secondary_resource_group.name,
recovery_vault_name=vault.name,
location=primary_resource_group.location)
secondary_fabric = azure.siterecovery.Fabric("secondaryFabric",
resource_group_name=secondary_resource_group.name,
recovery_vault_name=vault.name,
location=secondary_resource_group.location)
primary_protection_container = azure.siterecovery.ProtectionContainer("primaryProtectionContainer",
resource_group_name=secondary_resource_group.name,
recovery_vault_name=vault.name,
recovery_fabric_name=primary_fabric.name)
secondary_protection_container = azure.siterecovery.ProtectionContainer("secondaryProtectionContainer",
resource_group_name=secondary_resource_group.name,
recovery_vault_name=vault.name,
recovery_fabric_name=secondary_fabric.name)
policy = azure.siterecovery.ReplicationPolicy("policy",
resource_group_name=secondary_resource_group.name,
recovery_vault_name=vault.name,
recovery_point_retention_in_minutes=24 * 60,
application_consistent_snapshot_frequency_in_minutes=4 * 60)
container_mapping = azure.siterecovery.ProtectionContainerMapping("container-mapping",
resource_group_name=secondary_resource_group.name,
recovery_vault_name=vault.name,
recovery_fabric_name=primary_fabric.name,
recovery_source_protection_container_name=primary_protection_container.name,
recovery_target_protection_container_id=secondary_protection_container.id,
recovery_replication_policy_id=policy.id)
Example coming soon!
Create ProtectionContainerMapping Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new ProtectionContainerMapping(name: string, args: ProtectionContainerMappingArgs, opts?: CustomResourceOptions);@overload
def ProtectionContainerMapping(resource_name: str,
args: ProtectionContainerMappingArgs,
opts: Optional[ResourceOptions] = None)
@overload
def ProtectionContainerMapping(resource_name: str,
opts: Optional[ResourceOptions] = None,
recovery_fabric_name: Optional[str] = None,
recovery_replication_policy_id: Optional[str] = None,
recovery_source_protection_container_name: Optional[str] = None,
recovery_target_protection_container_id: Optional[str] = None,
recovery_vault_name: Optional[str] = None,
resource_group_name: Optional[str] = None,
name: Optional[str] = None)func NewProtectionContainerMapping(ctx *Context, name string, args ProtectionContainerMappingArgs, opts ...ResourceOption) (*ProtectionContainerMapping, error)public ProtectionContainerMapping(string name, ProtectionContainerMappingArgs args, CustomResourceOptions? opts = null)
public ProtectionContainerMapping(String name, ProtectionContainerMappingArgs args)
public ProtectionContainerMapping(String name, ProtectionContainerMappingArgs args, CustomResourceOptions options)
type: azure:siterecovery:ProtectionContainerMapping
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args ProtectionContainerMappingArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args ProtectionContainerMappingArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args ProtectionContainerMappingArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args ProtectionContainerMappingArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args ProtectionContainerMappingArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var protectionContainerMappingResource = new Azure.SiteRecovery.ProtectionContainerMapping("protectionContainerMappingResource", new()
{
RecoveryFabricName = "string",
RecoveryReplicationPolicyId = "string",
RecoverySourceProtectionContainerName = "string",
RecoveryTargetProtectionContainerId = "string",
RecoveryVaultName = "string",
ResourceGroupName = "string",
Name = "string",
});
example, err := siterecovery.NewProtectionContainerMapping(ctx, "protectionContainerMappingResource", &siterecovery.ProtectionContainerMappingArgs{
RecoveryFabricName: pulumi.String("string"),
RecoveryReplicationPolicyId: pulumi.String("string"),
RecoverySourceProtectionContainerName: pulumi.String("string"),
RecoveryTargetProtectionContainerId: pulumi.String("string"),
RecoveryVaultName: pulumi.String("string"),
ResourceGroupName: pulumi.String("string"),
Name: pulumi.String("string"),
})
var protectionContainerMappingResource = new ProtectionContainerMapping("protectionContainerMappingResource", ProtectionContainerMappingArgs.builder()
.recoveryFabricName("string")
.recoveryReplicationPolicyId("string")
.recoverySourceProtectionContainerName("string")
.recoveryTargetProtectionContainerId("string")
.recoveryVaultName("string")
.resourceGroupName("string")
.name("string")
.build());
protection_container_mapping_resource = azure.siterecovery.ProtectionContainerMapping("protectionContainerMappingResource",
recovery_fabric_name="string",
recovery_replication_policy_id="string",
recovery_source_protection_container_name="string",
recovery_target_protection_container_id="string",
recovery_vault_name="string",
resource_group_name="string",
name="string")
const protectionContainerMappingResource = new azure.siterecovery.ProtectionContainerMapping("protectionContainerMappingResource", {
recoveryFabricName: "string",
recoveryReplicationPolicyId: "string",
recoverySourceProtectionContainerName: "string",
recoveryTargetProtectionContainerId: "string",
recoveryVaultName: "string",
resourceGroupName: "string",
name: "string",
});
type: azure:siterecovery:ProtectionContainerMapping
properties:
name: string
recoveryFabricName: string
recoveryReplicationPolicyId: string
recoverySourceProtectionContainerName: string
recoveryTargetProtectionContainerId: string
recoveryVaultName: string
resourceGroupName: string
ProtectionContainerMapping Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The ProtectionContainerMapping resource accepts the following input properties:
- Recovery
Fabric stringName - Name of fabric that should contains the protection container to map.
- Recovery
Replication stringPolicy Id - Id of the policy to use for this mapping.
- Recovery
Source stringProtection Container Name - Name of the source protection container to map.
- Recovery
Target stringProtection Container Id - Id of target protection container to map to.
- Recovery
Vault stringName - The name of the vault that should be updated.
- Resource
Group stringName - Name of the resource group where the vault that should be updated is located.
- Name string
- The name of the protection container mapping.
- Recovery
Fabric stringName - Name of fabric that should contains the protection container to map.
- Recovery
Replication stringPolicy Id - Id of the policy to use for this mapping.
- Recovery
Source stringProtection Container Name - Name of the source protection container to map.
- Recovery
Target stringProtection Container Id - Id of target protection container to map to.
- Recovery
Vault stringName - The name of the vault that should be updated.
- Resource
Group stringName - Name of the resource group where the vault that should be updated is located.
- Name string
- The name of the protection container mapping.
- recovery
Fabric StringName - Name of fabric that should contains the protection container to map.
- recovery
Replication StringPolicy Id - Id of the policy to use for this mapping.
- recovery
Source StringProtection Container Name - Name of the source protection container to map.
- recovery
Target StringProtection Container Id - Id of target protection container to map to.
- recovery
Vault StringName - The name of the vault that should be updated.
- resource
Group StringName - Name of the resource group where the vault that should be updated is located.
- name String
- The name of the protection container mapping.
- recovery
Fabric stringName - Name of fabric that should contains the protection container to map.
- recovery
Replication stringPolicy Id - Id of the policy to use for this mapping.
- recovery
Source stringProtection Container Name - Name of the source protection container to map.
- recovery
Target stringProtection Container Id - Id of target protection container to map to.
- recovery
Vault stringName - The name of the vault that should be updated.
- resource
Group stringName - Name of the resource group where the vault that should be updated is located.
- name string
- The name of the protection container mapping.
- recovery_
fabric_ strname - Name of fabric that should contains the protection container to map.
- recovery_
replication_ strpolicy_ id - Id of the policy to use for this mapping.
- recovery_
source_ strprotection_ container_ name - Name of the source protection container to map.
- recovery_
target_ strprotection_ container_ id - Id of target protection container to map to.
- recovery_
vault_ strname - The name of the vault that should be updated.
- resource_
group_ strname - Name of the resource group where the vault that should be updated is located.
- name str
- The name of the protection container mapping.
- recovery
Fabric StringName - Name of fabric that should contains the protection container to map.
- recovery
Replication StringPolicy Id - Id of the policy to use for this mapping.
- recovery
Source StringProtection Container Name - Name of the source protection container to map.
- recovery
Target StringProtection Container Id - Id of target protection container to map to.
- recovery
Vault StringName - The name of the vault that should be updated.
- resource
Group StringName - Name of the resource group where the vault that should be updated is located.
- name String
- The name of the protection container mapping.
Outputs
All input properties are implicitly available as output properties. Additionally, the ProtectionContainerMapping resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Id string
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
- id string
- The provider-assigned unique ID for this managed resource.
- id str
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
Look up Existing ProtectionContainerMapping Resource
Get an existing ProtectionContainerMapping resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: ProtectionContainerMappingState, opts?: CustomResourceOptions): ProtectionContainerMapping@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
name: Optional[str] = None,
recovery_fabric_name: Optional[str] = None,
recovery_replication_policy_id: Optional[str] = None,
recovery_source_protection_container_name: Optional[str] = None,
recovery_target_protection_container_id: Optional[str] = None,
recovery_vault_name: Optional[str] = None,
resource_group_name: Optional[str] = None) -> ProtectionContainerMappingfunc GetProtectionContainerMapping(ctx *Context, name string, id IDInput, state *ProtectionContainerMappingState, opts ...ResourceOption) (*ProtectionContainerMapping, error)public static ProtectionContainerMapping Get(string name, Input<string> id, ProtectionContainerMappingState? state, CustomResourceOptions? opts = null)public static ProtectionContainerMapping get(String name, Output<String> id, ProtectionContainerMappingState state, CustomResourceOptions options)resources: _: type: azure:siterecovery:ProtectionContainerMapping get: id: ${id}- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Name string
- The name of the protection container mapping.
- Recovery
Fabric stringName - Name of fabric that should contains the protection container to map.
- Recovery
Replication stringPolicy Id - Id of the policy to use for this mapping.
- Recovery
Source stringProtection Container Name - Name of the source protection container to map.
- Recovery
Target stringProtection Container Id - Id of target protection container to map to.
- Recovery
Vault stringName - The name of the vault that should be updated.
- Resource
Group stringName - Name of the resource group where the vault that should be updated is located.
- Name string
- The name of the protection container mapping.
- Recovery
Fabric stringName - Name of fabric that should contains the protection container to map.
- Recovery
Replication stringPolicy Id - Id of the policy to use for this mapping.
- Recovery
Source stringProtection Container Name - Name of the source protection container to map.
- Recovery
Target stringProtection Container Id - Id of target protection container to map to.
- Recovery
Vault stringName - The name of the vault that should be updated.
- Resource
Group stringName - Name of the resource group where the vault that should be updated is located.
- name String
- The name of the protection container mapping.
- recovery
Fabric StringName - Name of fabric that should contains the protection container to map.
- recovery
Replication StringPolicy Id - Id of the policy to use for this mapping.
- recovery
Source StringProtection Container Name - Name of the source protection container to map.
- recovery
Target StringProtection Container Id - Id of target protection container to map to.
- recovery
Vault StringName - The name of the vault that should be updated.
- resource
Group StringName - Name of the resource group where the vault that should be updated is located.
- name string
- The name of the protection container mapping.
- recovery
Fabric stringName - Name of fabric that should contains the protection container to map.
- recovery
Replication stringPolicy Id - Id of the policy to use for this mapping.
- recovery
Source stringProtection Container Name - Name of the source protection container to map.
- recovery
Target stringProtection Container Id - Id of target protection container to map to.
- recovery
Vault stringName - The name of the vault that should be updated.
- resource
Group stringName - Name of the resource group where the vault that should be updated is located.
- name str
- The name of the protection container mapping.
- recovery_
fabric_ strname - Name of fabric that should contains the protection container to map.
- recovery_
replication_ strpolicy_ id - Id of the policy to use for this mapping.
- recovery_
source_ strprotection_ container_ name - Name of the source protection container to map.
- recovery_
target_ strprotection_ container_ id - Id of target protection container to map to.
- recovery_
vault_ strname - The name of the vault that should be updated.
- resource_
group_ strname - Name of the resource group where the vault that should be updated is located.
- name String
- The name of the protection container mapping.
- recovery
Fabric StringName - Name of fabric that should contains the protection container to map.
- recovery
Replication StringPolicy Id - Id of the policy to use for this mapping.
- recovery
Source StringProtection Container Name - Name of the source protection container to map.
- recovery
Target StringProtection Container Id - Id of target protection container to map to.
- recovery
Vault StringName - The name of the vault that should be updated.
- resource
Group StringName - Name of the resource group where the vault that should be updated is located.
Import
Site Recovery Protection Container Mappings can be imported using the resource id, e.g.
$ pulumi import azure:siterecovery/protectionContainerMapping:ProtectionContainerMapping mymapping /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.RecoveryServices/vaults/recovery-vault-name
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- Azure Classic pulumi/pulumi-azure
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
azurermTerraform Provider.
We recommend using Azure Native.
published on Monday, Mar 9, 2026 by Pulumi