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

com.pulumi.aws.ssm.kotlin.MaintenanceWindowTargetArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.aws.ssm.kotlin

import com.pulumi.aws.ssm.MaintenanceWindowTargetArgs.builder
import com.pulumi.aws.ssm.kotlin.inputs.MaintenanceWindowTargetTargetArgs
import com.pulumi.aws.ssm.kotlin.inputs.MaintenanceWindowTargetTargetArgsBuilder
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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Provides an SSM Maintenance Window Target resource
 * ## Example Usage
 * ### Instance Target
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const window = new aws.ssm.MaintenanceWindow("window", {
 *     name: "maintenance-window-webapp",
 *     schedule: "cron(0 16 ? * TUE *)",
 *     duration: 3,
 *     cutoff: 1,
 * });
 * const target1 = new aws.ssm.MaintenanceWindowTarget("target1", {
 *     windowId: window.id,
 *     name: "maintenance-window-target",
 *     description: "This is a maintenance window target",
 *     resourceType: "INSTANCE",
 *     targets: [{
 *         key: "tag:Name",
 *         values: ["acceptance_test"],
 *     }],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * window = aws.ssm.MaintenanceWindow("window",
 *     name="maintenance-window-webapp",
 *     schedule="cron(0 16 ? * TUE *)",
 *     duration=3,
 *     cutoff=1)
 * target1 = aws.ssm.MaintenanceWindowTarget("target1",
 *     window_id=window.id,
 *     name="maintenance-window-target",
 *     description="This is a maintenance window target",
 *     resource_type="INSTANCE",
 *     targets=[{
 *         "key": "tag:Name",
 *         "values": ["acceptance_test"],
 *     }])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var window = new Aws.Ssm.MaintenanceWindow("window", new()
 *     {
 *         Name = "maintenance-window-webapp",
 *         Schedule = "cron(0 16 ? * TUE *)",
 *         Duration = 3,
 *         Cutoff = 1,
 *     });
 *     var target1 = new Aws.Ssm.MaintenanceWindowTarget("target1", new()
 *     {
 *         WindowId = window.Id,
 *         Name = "maintenance-window-target",
 *         Description = "This is a maintenance window target",
 *         ResourceType = "INSTANCE",
 *         Targets = new[]
 *         {
 *             new Aws.Ssm.Inputs.MaintenanceWindowTargetTargetArgs
 *             {
 *                 Key = "tag:Name",
 *                 Values = new[]
 *                 {
 *                     "acceptance_test",
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		window, err := ssm.NewMaintenanceWindow(ctx, "window", &ssm.MaintenanceWindowArgs{
 * 			Name:     pulumi.String("maintenance-window-webapp"),
 * 			Schedule: pulumi.String("cron(0 16 ? * TUE *)"),
 * 			Duration: pulumi.Int(3),
 * 			Cutoff:   pulumi.Int(1),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = ssm.NewMaintenanceWindowTarget(ctx, "target1", &ssm.MaintenanceWindowTargetArgs{
 * 			WindowId:     window.ID(),
 * 			Name:         pulumi.String("maintenance-window-target"),
 * 			Description:  pulumi.String("This is a maintenance window target"),
 * 			ResourceType: pulumi.String("INSTANCE"),
 * 			Targets: ssm.MaintenanceWindowTargetTargetArray{
 * 				&ssm.MaintenanceWindowTargetTargetArgs{
 * 					Key: pulumi.String("tag:Name"),
 * 					Values: pulumi.StringArray{
 * 						pulumi.String("acceptance_test"),
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.ssm.MaintenanceWindow;
 * import com.pulumi.aws.ssm.MaintenanceWindowArgs;
 * import com.pulumi.aws.ssm.MaintenanceWindowTarget;
 * import com.pulumi.aws.ssm.MaintenanceWindowTargetArgs;
 * import com.pulumi.aws.ssm.inputs.MaintenanceWindowTargetTargetArgs;
 * 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 window = new MaintenanceWindow("window", MaintenanceWindowArgs.builder()
 *             .name("maintenance-window-webapp")
 *             .schedule("cron(0 16 ? * TUE *)")
 *             .duration(3)
 *             .cutoff(1)
 *             .build());
 *         var target1 = new MaintenanceWindowTarget("target1", MaintenanceWindowTargetArgs.builder()
 *             .windowId(window.id())
 *             .name("maintenance-window-target")
 *             .description("This is a maintenance window target")
 *             .resourceType("INSTANCE")
 *             .targets(MaintenanceWindowTargetTargetArgs.builder()
 *                 .key("tag:Name")
 *                 .values("acceptance_test")
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   window:
 *     type: aws:ssm:MaintenanceWindow
 *     properties:
 *       name: maintenance-window-webapp
 *       schedule: cron(0 16 ? * TUE *)
 *       duration: 3
 *       cutoff: 1
 *   target1:
 *     type: aws:ssm:MaintenanceWindowTarget
 *     properties:
 *       windowId: ${window.id}
 *       name: maintenance-window-target
 *       description: This is a maintenance window target
 *       resourceType: INSTANCE
 *       targets:
 *         - key: tag:Name
 *           values:
 *             - acceptance_test
 * ```
 * 
 * ### Resource Group Target
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const window = new aws.ssm.MaintenanceWindow("window", {
 *     name: "maintenance-window-webapp",
 *     schedule: "cron(0 16 ? * TUE *)",
 *     duration: 3,
 *     cutoff: 1,
 * });
 * const target1 = new aws.ssm.MaintenanceWindowTarget("target1", {
 *     windowId: window.id,
 *     name: "maintenance-window-target",
 *     description: "This is a maintenance window target",
 *     resourceType: "RESOURCE_GROUP",
 *     targets: [{
 *         key: "resource-groups:ResourceTypeFilters",
 *         values: ["AWS::EC2::Instance"],
 *     }],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * window = aws.ssm.MaintenanceWindow("window",
 *     name="maintenance-window-webapp",
 *     schedule="cron(0 16 ? * TUE *)",
 *     duration=3,
 *     cutoff=1)
 * target1 = aws.ssm.MaintenanceWindowTarget("target1",
 *     window_id=window.id,
 *     name="maintenance-window-target",
 *     description="This is a maintenance window target",
 *     resource_type="RESOURCE_GROUP",
 *     targets=[{
 *         "key": "resource-groups:ResourceTypeFilters",
 *         "values": ["AWS::EC2::Instance"],
 *     }])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var window = new Aws.Ssm.MaintenanceWindow("window", new()
 *     {
 *         Name = "maintenance-window-webapp",
 *         Schedule = "cron(0 16 ? * TUE *)",
 *         Duration = 3,
 *         Cutoff = 1,
 *     });
 *     var target1 = new Aws.Ssm.MaintenanceWindowTarget("target1", new()
 *     {
 *         WindowId = window.Id,
 *         Name = "maintenance-window-target",
 *         Description = "This is a maintenance window target",
 *         ResourceType = "RESOURCE_GROUP",
 *         Targets = new[]
 *         {
 *             new Aws.Ssm.Inputs.MaintenanceWindowTargetTargetArgs
 *             {
 *                 Key = "resource-groups:ResourceTypeFilters",
 *                 Values = new[]
 *                 {
 *                     "AWS::EC2::Instance",
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		window, err := ssm.NewMaintenanceWindow(ctx, "window", &ssm.MaintenanceWindowArgs{
 * 			Name:     pulumi.String("maintenance-window-webapp"),
 * 			Schedule: pulumi.String("cron(0 16 ? * TUE *)"),
 * 			Duration: pulumi.Int(3),
 * 			Cutoff:   pulumi.Int(1),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = ssm.NewMaintenanceWindowTarget(ctx, "target1", &ssm.MaintenanceWindowTargetArgs{
 * 			WindowId:     window.ID(),
 * 			Name:         pulumi.String("maintenance-window-target"),
 * 			Description:  pulumi.String("This is a maintenance window target"),
 * 			ResourceType: pulumi.String("RESOURCE_GROUP"),
 * 			Targets: ssm.MaintenanceWindowTargetTargetArray{
 * 				&ssm.MaintenanceWindowTargetTargetArgs{
 * 					Key: pulumi.String("resource-groups:ResourceTypeFilters"),
 * 					Values: pulumi.StringArray{
 * 						pulumi.String("AWS::EC2::Instance"),
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.ssm.MaintenanceWindow;
 * import com.pulumi.aws.ssm.MaintenanceWindowArgs;
 * import com.pulumi.aws.ssm.MaintenanceWindowTarget;
 * import com.pulumi.aws.ssm.MaintenanceWindowTargetArgs;
 * import com.pulumi.aws.ssm.inputs.MaintenanceWindowTargetTargetArgs;
 * 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 window = new MaintenanceWindow("window", MaintenanceWindowArgs.builder()
 *             .name("maintenance-window-webapp")
 *             .schedule("cron(0 16 ? * TUE *)")
 *             .duration(3)
 *             .cutoff(1)
 *             .build());
 *         var target1 = new MaintenanceWindowTarget("target1", MaintenanceWindowTargetArgs.builder()
 *             .windowId(window.id())
 *             .name("maintenance-window-target")
 *             .description("This is a maintenance window target")
 *             .resourceType("RESOURCE_GROUP")
 *             .targets(MaintenanceWindowTargetTargetArgs.builder()
 *                 .key("resource-groups:ResourceTypeFilters")
 *                 .values("AWS::EC2::Instance")
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   window:
 *     type: aws:ssm:MaintenanceWindow
 *     properties:
 *       name: maintenance-window-webapp
 *       schedule: cron(0 16 ? * TUE *)
 *       duration: 3
 *       cutoff: 1
 *   target1:
 *     type: aws:ssm:MaintenanceWindowTarget
 *     properties:
 *       windowId: ${window.id}
 *       name: maintenance-window-target
 *       description: This is a maintenance window target
 *       resourceType: RESOURCE_GROUP
 *       targets:
 *         - key: resource-groups:ResourceTypeFilters
 *           values:
 *             - AWS::EC2::Instance
 * ```
 * 
 * ## Import
 * Using `pulumi import`, import SSM Maintenance Window targets using `WINDOW_ID/WINDOW_TARGET_ID`. For example:
 * ```sh
 * $ pulumi import aws:ssm/maintenanceWindowTarget:MaintenanceWindowTarget example mw-0c50858d01EXAMPLE/23639a0b-ddbc-4bca-9e72-78d96EXAMPLE
 * ```
 * @property description The description of the maintenance window target.
 * @property name The name of the maintenance window target.
 * @property ownerInformation User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
 * @property resourceType The type of target being registered with the Maintenance Window. Possible values are `INSTANCE` and `RESOURCE_GROUP`.
 * @property targets The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
 * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
 * @property windowId The Id of the maintenance window to register the target with.
 */
public data class MaintenanceWindowTargetArgs(
    public val description: Output? = null,
    public val name: Output? = null,
    public val ownerInformation: Output? = null,
    public val resourceType: Output? = null,
    public val targets: Output>? = null,
    public val windowId: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.aws.ssm.MaintenanceWindowTargetArgs =
        com.pulumi.aws.ssm.MaintenanceWindowTargetArgs.builder()
            .description(description?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .ownerInformation(ownerInformation?.applyValue({ args0 -> args0 }))
            .resourceType(resourceType?.applyValue({ args0 -> args0 }))
            .targets(
                targets?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .windowId(windowId?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [MaintenanceWindowTargetArgs].
 */
@PulumiTagMarker
public class MaintenanceWindowTargetArgsBuilder internal constructor() {
    private var description: Output? = null

    private var name: Output? = null

    private var ownerInformation: Output? = null

    private var resourceType: Output? = null

    private var targets: Output>? = null

    private var windowId: Output? = null

    /**
     * @param value The description of the maintenance window target.
     */
    @JvmName("atblvedmagsgamhi")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The name of the maintenance window target.
     */
    @JvmName("kiapjiseowxkoneb")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
     */
    @JvmName("vmswdlovcqdlekxq")
    public suspend fun ownerInformation(`value`: Output) {
        this.ownerInformation = value
    }

    /**
     * @param value The type of target being registered with the Maintenance Window. Possible values are `INSTANCE` and `RESOURCE_GROUP`.
     */
    @JvmName("ktmlloncireldkyq")
    public suspend fun resourceType(`value`: Output) {
        this.resourceType = value
    }

    /**
     * @param value The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
     * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
     */
    @JvmName("twcmctkkyudbstxx")
    public suspend fun targets(`value`: Output>) {
        this.targets = value
    }

    @JvmName("boyqqytticmbgbww")
    public suspend fun targets(vararg values: Output) {
        this.targets = Output.all(values.asList())
    }

    /**
     * @param values The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
     * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
     */
    @JvmName("pgdqpogwydyaynsn")
    public suspend fun targets(values: List>) {
        this.targets = Output.all(values)
    }

    /**
     * @param value The Id of the maintenance window to register the target with.
     */
    @JvmName("mikmdqocfqjghhve")
    public suspend fun windowId(`value`: Output) {
        this.windowId = value
    }

    /**
     * @param value The description of the maintenance window target.
     */
    @JvmName("mjmaibgoohfrfwfx")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value The name of the maintenance window target.
     */
    @JvmName("qrxyslnhjwqkqpvd")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
     */
    @JvmName("hfjkicqaiclmoyhj")
    public suspend fun ownerInformation(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ownerInformation = mapped
    }

    /**
     * @param value The type of target being registered with the Maintenance Window. Possible values are `INSTANCE` and `RESOURCE_GROUP`.
     */
    @JvmName("gvuadnhoyldlnagy")
    public suspend fun resourceType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceType = mapped
    }

    /**
     * @param value The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
     * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
     */
    @JvmName("duvlfkxhmetljiwy")
    public suspend fun targets(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.targets = mapped
    }

    /**
     * @param argument The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
     * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
     */
    @JvmName("rksylfujyplxfvdg")
    public suspend fun targets(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            MaintenanceWindowTargetTargetArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.targets = mapped
    }

    /**
     * @param argument The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
     * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
     */
    @JvmName("ukkcnraaqutaqhwv")
    public suspend fun targets(vararg argument: suspend MaintenanceWindowTargetTargetArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            MaintenanceWindowTargetTargetArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.targets = mapped
    }

    /**
     * @param argument The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
     * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
     */
    @JvmName("vmgjlnpgnpvqehyt")
    public suspend fun targets(argument: suspend MaintenanceWindowTargetTargetArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            MaintenanceWindowTargetTargetArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.targets = mapped
    }

    /**
     * @param values The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs. You can specify targets using instance IDs, resource group names, or tags that have been applied to instances. For more information about these examples formats see
     * (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)
     */
    @JvmName("ocaglegfcjkvyene")
    public suspend fun targets(vararg values: MaintenanceWindowTargetTargetArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.targets = mapped
    }

    /**
     * @param value The Id of the maintenance window to register the target with.
     */
    @JvmName("yxsaubntlvfdyllx")
    public suspend fun windowId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.windowId = mapped
    }

    internal fun build(): MaintenanceWindowTargetArgs = MaintenanceWindowTargetArgs(
        description = description,
        name = name,
        ownerInformation = ownerInformation,
        resourceType = resourceType,
        targets = targets,
        windowId = windowId,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy