All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.awsnative.backup.kotlin.BackupVaultArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.backup.kotlin

import com.pulumi.awsnative.backup.BackupVaultArgs.builder
import com.pulumi.awsnative.backup.kotlin.inputs.BackupVaultLockConfigurationTypeArgs
import com.pulumi.awsnative.backup.kotlin.inputs.BackupVaultLockConfigurationTypeArgsBuilder
import com.pulumi.awsnative.backup.kotlin.inputs.BackupVaultNotificationObjectTypeArgs
import com.pulumi.awsnative.backup.kotlin.inputs.BackupVaultNotificationObjectTypeArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Any
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Resource Type definition for AWS::Backup::BackupVault
 * @property accessPolicy A resource-based policy that is used to manage access permissions on the target backup vault.
 * Search the [CloudFormation User Guide](https://docs.aws.amazon.com/cloudformation/) for `AWS::Backup::BackupVault` for more information about the expected schema for this property.
 * @property backupVaultName The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created.
 * @property backupVaultTags The tags to assign to the backup vault.
 * @property encryptionKeyArn A server-side encryption key you can specify to encrypt your backups from services that support full AWS Backup management; for example, `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` . If you specify a key, you must specify its ARN, not its alias. If you do not specify a key, AWS Backup creates a KMS key for you by default.
 * To learn which AWS Backup services support full AWS Backup management and how AWS Backup handles encryption for backups from services that do not yet support full AWS Backup , see [Encryption for backups in AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/encryption.html)
 * @property lockConfiguration Configuration for [AWS Backup Vault Lock](https://docs.aws.amazon.com/aws-backup/latest/devguide/vault-lock.html) .
 * @property notifications The SNS event notifications for the specified backup vault.
 */
public data class BackupVaultArgs(
    public val accessPolicy: Output? = null,
    public val backupVaultName: Output? = null,
    public val backupVaultTags: Output>? = null,
    public val encryptionKeyArn: Output? = null,
    public val lockConfiguration: Output? = null,
    public val notifications: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.backup.BackupVaultArgs =
        com.pulumi.awsnative.backup.BackupVaultArgs.builder()
            .accessPolicy(accessPolicy?.applyValue({ args0 -> args0 }))
            .backupVaultName(backupVaultName?.applyValue({ args0 -> args0 }))
            .backupVaultTags(
                backupVaultTags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .encryptionKeyArn(encryptionKeyArn?.applyValue({ args0 -> args0 }))
            .lockConfiguration(lockConfiguration?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .notifications(notifications?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) })).build()
}

/**
 * Builder for [BackupVaultArgs].
 */
@PulumiTagMarker
public class BackupVaultArgsBuilder internal constructor() {
    private var accessPolicy: Output? = null

    private var backupVaultName: Output? = null

    private var backupVaultTags: Output>? = null

    private var encryptionKeyArn: Output? = null

    private var lockConfiguration: Output? = null

    private var notifications: Output? = null

    /**
     * @param value A resource-based policy that is used to manage access permissions on the target backup vault.
     * Search the [CloudFormation User Guide](https://docs.aws.amazon.com/cloudformation/) for `AWS::Backup::BackupVault` for more information about the expected schema for this property.
     */
    @JvmName("wnsxirruronnmyge")
    public suspend fun accessPolicy(`value`: Output) {
        this.accessPolicy = value
    }

    /**
     * @param value The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created.
     */
    @JvmName("kmfsxkpmhxiixkgg")
    public suspend fun backupVaultName(`value`: Output) {
        this.backupVaultName = value
    }

    /**
     * @param value The tags to assign to the backup vault.
     */
    @JvmName("oqoeugouamxmmely")
    public suspend fun backupVaultTags(`value`: Output>) {
        this.backupVaultTags = value
    }

    /**
     * @param value A server-side encryption key you can specify to encrypt your backups from services that support full AWS Backup management; for example, `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` . If you specify a key, you must specify its ARN, not its alias. If you do not specify a key, AWS Backup creates a KMS key for you by default.
     * To learn which AWS Backup services support full AWS Backup management and how AWS Backup handles encryption for backups from services that do not yet support full AWS Backup , see [Encryption for backups in AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/encryption.html)
     */
    @JvmName("kcaqckgljyainllm")
    public suspend fun encryptionKeyArn(`value`: Output) {
        this.encryptionKeyArn = value
    }

    /**
     * @param value Configuration for [AWS Backup Vault Lock](https://docs.aws.amazon.com/aws-backup/latest/devguide/vault-lock.html) .
     */
    @JvmName("faeyxcpkcwgvobfh")
    public suspend fun lockConfiguration(`value`: Output) {
        this.lockConfiguration = value
    }

    /**
     * @param value The SNS event notifications for the specified backup vault.
     */
    @JvmName("qkfdjkosckmblppj")
    public suspend fun notifications(`value`: Output) {
        this.notifications = value
    }

    /**
     * @param value A resource-based policy that is used to manage access permissions on the target backup vault.
     * Search the [CloudFormation User Guide](https://docs.aws.amazon.com/cloudformation/) for `AWS::Backup::BackupVault` for more information about the expected schema for this property.
     */
    @JvmName("cmfmhgtucysvbomc")
    public suspend fun accessPolicy(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.accessPolicy = mapped
    }

    /**
     * @param value The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created.
     */
    @JvmName("oplehpndxxvovxbg")
    public suspend fun backupVaultName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.backupVaultName = mapped
    }

    /**
     * @param value The tags to assign to the backup vault.
     */
    @JvmName("dyeloxxvykkdaucx")
    public suspend fun backupVaultTags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.backupVaultTags = mapped
    }

    /**
     * @param values The tags to assign to the backup vault.
     */
    @JvmName("rufpvaeavtplvorx")
    public fun backupVaultTags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.backupVaultTags = mapped
    }

    /**
     * @param value A server-side encryption key you can specify to encrypt your backups from services that support full AWS Backup management; for example, `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` . If you specify a key, you must specify its ARN, not its alias. If you do not specify a key, AWS Backup creates a KMS key for you by default.
     * To learn which AWS Backup services support full AWS Backup management and how AWS Backup handles encryption for backups from services that do not yet support full AWS Backup , see [Encryption for backups in AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/encryption.html)
     */
    @JvmName("bmamlbafdlqtqgdi")
    public suspend fun encryptionKeyArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.encryptionKeyArn = mapped
    }

    /**
     * @param value Configuration for [AWS Backup Vault Lock](https://docs.aws.amazon.com/aws-backup/latest/devguide/vault-lock.html) .
     */
    @JvmName("rweodcyfswglkrqg")
    public suspend fun lockConfiguration(`value`: BackupVaultLockConfigurationTypeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.lockConfiguration = mapped
    }

    /**
     * @param argument Configuration for [AWS Backup Vault Lock](https://docs.aws.amazon.com/aws-backup/latest/devguide/vault-lock.html) .
     */
    @JvmName("shtyuxhdxadnscea")
    public suspend fun lockConfiguration(argument: suspend BackupVaultLockConfigurationTypeArgsBuilder.() -> Unit) {
        val toBeMapped = BackupVaultLockConfigurationTypeArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.lockConfiguration = mapped
    }

    /**
     * @param value The SNS event notifications for the specified backup vault.
     */
    @JvmName("ttapnaabuyasqhqr")
    public suspend fun notifications(`value`: BackupVaultNotificationObjectTypeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.notifications = mapped
    }

    /**
     * @param argument The SNS event notifications for the specified backup vault.
     */
    @JvmName("nyufjpbnmfukbinn")
    public suspend fun notifications(argument: suspend BackupVaultNotificationObjectTypeArgsBuilder.() -> Unit) {
        val toBeMapped = BackupVaultNotificationObjectTypeArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.notifications = mapped
    }

    internal fun build(): BackupVaultArgs = BackupVaultArgs(
        accessPolicy = accessPolicy,
        backupVaultName = backupVaultName,
        backupVaultTags = backupVaultTags,
        encryptionKeyArn = encryptionKeyArn,
        lockConfiguration = lockConfiguration,
        notifications = notifications,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy