ContainerImmutabilityPolicyArgs

data class ContainerImmutabilityPolicyArgs(val immutabilityPeriodInDays: Output<Int>? = null, val locked: Output<Boolean>? = null, val protectedAppendWritesAllEnabled: Output<Boolean>? = null, val protectedAppendWritesEnabled: Output<Boolean>? = null, val storageContainerResourceManagerId: Output<String>? = null) : ConvertibleToJava<ContainerImmutabilityPolicyArgs>

Manages an Immutability Policy for a Container within an Azure Storage Account.

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 exampleAccount = new azure.storage.Account("example", {
name: "examplestoraccount",
resourceGroupName: example.name,
location: example.location,
accountTier: "Standard",
accountReplicationType: "LRS",
tags: {
environment: "staging",
},
});
const exampleContainer = new azure.storage.Container("example", {
name: "example",
storageAccountName: exampleAccount.name,
containerAccessType: "private",
});
const exampleContainerImmutabilityPolicy = new azure.storage.ContainerImmutabilityPolicy("example", {
storageContainerResourceManagerId: exampleContainer.resourceManagerId,
immutabilityPeriodInDays: 14,
protectedAppendWritesAllEnabled: false,
protectedAppendWritesEnabled: true,
});
import pulumi
import pulumi_azure as azure
example = azure.core.ResourceGroup("example",
name="example-resources",
location="West Europe")
example_account = azure.storage.Account("example",
name="examplestoraccount",
resource_group_name=example.name,
location=example.location,
account_tier="Standard",
account_replication_type="LRS",
tags={
"environment": "staging",
})
example_container = azure.storage.Container("example",
name="example",
storage_account_name=example_account.name,
container_access_type="private")
example_container_immutability_policy = azure.storage.ContainerImmutabilityPolicy("example",
storage_container_resource_manager_id=example_container.resource_manager_id,
immutability_period_in_days=14,
protected_append_writes_all_enabled=False,
protected_append_writes_enabled=True)
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 exampleAccount = new Azure.Storage.Account("example", new()
{
Name = "examplestoraccount",
ResourceGroupName = example.Name,
Location = example.Location,
AccountTier = "Standard",
AccountReplicationType = "LRS",
Tags =
{
{ "environment", "staging" },
},
});
var exampleContainer = new Azure.Storage.Container("example", new()
{
Name = "example",
StorageAccountName = exampleAccount.Name,
ContainerAccessType = "private",
});
var exampleContainerImmutabilityPolicy = new Azure.Storage.ContainerImmutabilityPolicy("example", new()
{
StorageContainerResourceManagerId = exampleContainer.ResourceManagerId,
ImmutabilityPeriodInDays = 14,
ProtectedAppendWritesAllEnabled = false,
ProtectedAppendWritesEnabled = true,
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage"
"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
}
exampleAccount, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
Name: pulumi.String("examplestoraccount"),
ResourceGroupName: example.Name,
Location: example.Location,
AccountTier: pulumi.String("Standard"),
AccountReplicationType: pulumi.String("LRS"),
Tags: pulumi.StringMap{
"environment": pulumi.String("staging"),
},
})
if err != nil {
return err
}
exampleContainer, err := storage.NewContainer(ctx, "example", &storage.ContainerArgs{
Name: pulumi.String("example"),
StorageAccountName: exampleAccount.Name,
ContainerAccessType: pulumi.String("private"),
})
if err != nil {
return err
}
_, err = storage.NewContainerImmutabilityPolicy(ctx, "example", &storage.ContainerImmutabilityPolicyArgs{
StorageContainerResourceManagerId: exampleContainer.ResourceManagerId,
ImmutabilityPeriodInDays: pulumi.Int(14),
ProtectedAppendWritesAllEnabled: pulumi.Bool(false),
ProtectedAppendWritesEnabled: pulumi.Bool(true),
})
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.storage.Account;
import com.pulumi.azure.storage.AccountArgs;
import com.pulumi.azure.storage.Container;
import com.pulumi.azure.storage.ContainerArgs;
import com.pulumi.azure.storage.ContainerImmutabilityPolicy;
import com.pulumi.azure.storage.ContainerImmutabilityPolicyArgs;
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 exampleAccount = new Account("exampleAccount", AccountArgs.builder()
.name("examplestoraccount")
.resourceGroupName(example.name())
.location(example.location())
.accountTier("Standard")
.accountReplicationType("LRS")
.tags(Map.of("environment", "staging"))
.build());
var exampleContainer = new Container("exampleContainer", ContainerArgs.builder()
.name("example")
.storageAccountName(exampleAccount.name())
.containerAccessType("private")
.build());
var exampleContainerImmutabilityPolicy = new ContainerImmutabilityPolicy("exampleContainerImmutabilityPolicy", ContainerImmutabilityPolicyArgs.builder()
.storageContainerResourceManagerId(exampleContainer.resourceManagerId())
.immutabilityPeriodInDays(14)
.protectedAppendWritesAllEnabled(false)
.protectedAppendWritesEnabled(true)
.build());
}
}
resources:
example:
type: azure:core:ResourceGroup
properties:
name: example-resources
location: West Europe
exampleAccount:
type: azure:storage:Account
name: example
properties:
name: examplestoraccount
resourceGroupName: ${example.name}
location: ${example.location}
accountTier: Standard
accountReplicationType: LRS
tags:
environment: staging
exampleContainer:
type: azure:storage:Container
name: example
properties:
name: example
storageAccountName: ${exampleAccount.name}
containerAccessType: private
exampleContainerImmutabilityPolicy:
type: azure:storage:ContainerImmutabilityPolicy
name: example
properties:
storageContainerResourceManagerId: ${exampleContainer.resourceManagerId}
immutabilityPeriodInDays: 14
protectedAppendWritesAllEnabled: false
protectedAppendWritesEnabled: true

API Providers

This resource uses the following Azure API Providers:

  • Microsoft.Storage: 2023-05-01

Import

Storage Container Immutability Policies can be imported using the resource id, e.g.

$ pulumi import azure:storage/containerImmutabilityPolicy:ContainerImmutabilityPolicy example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/myaccount/blobServices/default/containers/mycontainer/immutabilityPolicies/default

Constructors

Link copied to clipboard
constructor(immutabilityPeriodInDays: Output<Int>? = null, locked: Output<Boolean>? = null, protectedAppendWritesAllEnabled: Output<Boolean>? = null, protectedAppendWritesEnabled: Output<Boolean>? = null, storageContainerResourceManagerId: Output<String>? = null)

Properties

Link copied to clipboard
val immutabilityPeriodInDays: Output<Int>? = null

The time interval in days that the data needs to be kept in a non-erasable and non-modifiable state.

Link copied to clipboard
val locked: Output<Boolean>? = null

Whether to lock this immutability policy. Cannot be set to false once the policy has been locked. !>Note: Once an Immutability Policy has been locked, it cannot be unlocked. After locking, it will only be possible to increase the value for retention_period_in_days up to 5 times for the lifetime of the policy. No other properties will be updateable. Furthermore, the Storage Container and the Storage Account in which it resides will become protected by the policy. It will no longer be possible to delete the Storage Container or the Storage Account. Please refer to official documentation for more information.

Link copied to clipboard

Whether to allow protected append writes to block and append blobs to the container. Defaults to false. Cannot be set with protected_append_writes_enabled.

Link copied to clipboard

Whether to allow protected append writes to append blobs to the container. Defaults to false. Cannot be set with protected_append_writes_all_enabled.

Link copied to clipboard

The Resource Manager ID of the Storage Container where this Immutability Policy should be applied. Changing this forces a new resource to be created.

Functions

Link copied to clipboard
open override fun toJava(): ContainerImmutabilityPolicyArgs