github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/dlm/lifecyclePolicy.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package dlm
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides a [Data Lifecycle Manager (DLM) lifecycle policy](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshot-lifecycle.html) for managing snapshots.
    16  //
    17  // ## Example Usage
    18  //
    19  // ### Basic
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dlm"
    28  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    29  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    30  //
    31  // )
    32  //
    33  //	func main() {
    34  //		pulumi.Run(func(ctx *pulumi.Context) error {
    35  //			assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    36  //				Statements: []iam.GetPolicyDocumentStatement{
    37  //					{
    38  //						Effect: pulumi.StringRef("Allow"),
    39  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    40  //							{
    41  //								Type: "Service",
    42  //								Identifiers: []string{
    43  //									"dlm.amazonaws.com",
    44  //								},
    45  //							},
    46  //						},
    47  //						Actions: []string{
    48  //							"sts:AssumeRole",
    49  //						},
    50  //					},
    51  //				},
    52  //			}, nil)
    53  //			if err != nil {
    54  //				return err
    55  //			}
    56  //			dlmLifecycleRole, err := iam.NewRole(ctx, "dlm_lifecycle_role", &iam.RoleArgs{
    57  //				Name:             pulumi.String("dlm-lifecycle-role"),
    58  //				AssumeRolePolicy: pulumi.String(assumeRole.Json),
    59  //			})
    60  //			if err != nil {
    61  //				return err
    62  //			}
    63  //			dlmLifecycle, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    64  //				Statements: pulumi.Array{
    65  //					iam.GetPolicyDocumentStatement{
    66  //						Effect: pulumi.StringRef("Allow"),
    67  //						Actions: []string{
    68  //							"ec2:CreateSnapshot",
    69  //							"ec2:CreateSnapshots",
    70  //							"ec2:DeleteSnapshot",
    71  //							"ec2:DescribeInstances",
    72  //							"ec2:DescribeVolumes",
    73  //							"ec2:DescribeSnapshots",
    74  //						},
    75  //						Resources: []string{
    76  //							"*",
    77  //						},
    78  //					},
    79  //					iam.GetPolicyDocumentStatement{
    80  //						Effect: pulumi.StringRef("Allow"),
    81  //						Actions: []string{
    82  //							"ec2:CreateTags",
    83  //						},
    84  //						Resources: []string{
    85  //							"arn:aws:ec2:*::snapshot/*",
    86  //						},
    87  //					},
    88  //				},
    89  //			}, nil)
    90  //			if err != nil {
    91  //				return err
    92  //			}
    93  //			_, err = iam.NewRolePolicy(ctx, "dlm_lifecycle", &iam.RolePolicyArgs{
    94  //				Name:   pulumi.String("dlm-lifecycle-policy"),
    95  //				Role:   dlmLifecycleRole.ID(),
    96  //				Policy: pulumi.String(dlmLifecycle.Json),
    97  //			})
    98  //			if err != nil {
    99  //				return err
   100  //			}
   101  //			_, err = dlm.NewLifecyclePolicy(ctx, "example", &dlm.LifecyclePolicyArgs{
   102  //				Description:      pulumi.String("example DLM lifecycle policy"),
   103  //				ExecutionRoleArn: dlmLifecycleRole.Arn,
   104  //				State:            pulumi.String("ENABLED"),
   105  //				PolicyDetails: &dlm.LifecyclePolicyPolicyDetailsArgs{
   106  //					ResourceTypes: pulumi.StringArray("VOLUME"),
   107  //					Schedules: dlm.LifecyclePolicyPolicyDetailsScheduleArray{
   108  //						&dlm.LifecyclePolicyPolicyDetailsScheduleArgs{
   109  //							Name: pulumi.String("2 weeks of daily snapshots"),
   110  //							CreateRule: &dlm.LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs{
   111  //								Interval:     pulumi.Int(24),
   112  //								IntervalUnit: pulumi.String("HOURS"),
   113  //								Times:        pulumi.String("23:45"),
   114  //							},
   115  //							RetainRule: &dlm.LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs{
   116  //								Count: pulumi.Int(14),
   117  //							},
   118  //							TagsToAdd: pulumi.StringMap{
   119  //								"SnapshotCreator": pulumi.String("DLM"),
   120  //							},
   121  //							CopyTags: pulumi.Bool(false),
   122  //						},
   123  //					},
   124  //					TargetTags: pulumi.StringMap{
   125  //						"Snapshot": pulumi.String("true"),
   126  //					},
   127  //				},
   128  //			})
   129  //			if err != nil {
   130  //				return err
   131  //			}
   132  //			return nil
   133  //		})
   134  //	}
   135  //
   136  // ```
   137  // <!--End PulumiCodeChooser -->
   138  //
   139  // ### Example Cross-Region Snapshot Copy Usage
   140  //
   141  // <!--Start PulumiCodeChooser -->
   142  // ```go
   143  // package main
   144  //
   145  // import (
   146  //
   147  //	"fmt"
   148  //
   149  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
   150  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dlm"
   151  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   152  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms"
   153  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   154  //
   155  // )
   156  //
   157  //	func main() {
   158  //		pulumi.Run(func(ctx *pulumi.Context) error {
   159  //			// ...other configuration...
   160  //			current, err := aws.GetCallerIdentity(ctx, nil, nil)
   161  //			if err != nil {
   162  //				return err
   163  //			}
   164  //			key, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
   165  //				Statements: []iam.GetPolicyDocumentStatement{
   166  //					{
   167  //						Sid:    pulumi.StringRef("Enable IAM User Permissions"),
   168  //						Effect: pulumi.StringRef("Allow"),
   169  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
   170  //							{
   171  //								Type: "AWS",
   172  //								Identifiers: []string{
   173  //									fmt.Sprintf("arn:aws:iam::%v:root", current.AccountId),
   174  //								},
   175  //							},
   176  //						},
   177  //						Actions: []string{
   178  //							"kms:*",
   179  //						},
   180  //						Resources: []string{
   181  //							"*",
   182  //						},
   183  //					},
   184  //				},
   185  //			}, nil)
   186  //			if err != nil {
   187  //				return err
   188  //			}
   189  //			dlmCrossRegionCopyCmk, err := kms.NewKey(ctx, "dlm_cross_region_copy_cmk", &kms.KeyArgs{
   190  //				Description: pulumi.String("Example Alternate Region KMS Key"),
   191  //				Policy:      pulumi.String(key.Json),
   192  //			})
   193  //			if err != nil {
   194  //				return err
   195  //			}
   196  //			_, err = dlm.NewLifecyclePolicy(ctx, "example", &dlm.LifecyclePolicyArgs{
   197  //				Description:      pulumi.String("example DLM lifecycle policy"),
   198  //				ExecutionRoleArn: pulumi.Any(dlmLifecycleRole.Arn),
   199  //				State:            pulumi.String("ENABLED"),
   200  //				PolicyDetails: &dlm.LifecyclePolicyPolicyDetailsArgs{
   201  //					ResourceTypes: pulumi.StringArray("VOLUME"),
   202  //					Schedules: dlm.LifecyclePolicyPolicyDetailsScheduleArray{
   203  //						&dlm.LifecyclePolicyPolicyDetailsScheduleArgs{
   204  //							Name: pulumi.String("2 weeks of daily snapshots"),
   205  //							CreateRule: &dlm.LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs{
   206  //								Interval:     pulumi.Int(24),
   207  //								IntervalUnit: pulumi.String("HOURS"),
   208  //								Times:        pulumi.String("23:45"),
   209  //							},
   210  //							RetainRule: &dlm.LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs{
   211  //								Count: pulumi.Int(14),
   212  //							},
   213  //							TagsToAdd: pulumi.StringMap{
   214  //								"SnapshotCreator": pulumi.String("DLM"),
   215  //							},
   216  //							CopyTags: pulumi.Bool(false),
   217  //							CrossRegionCopyRules: dlm.LifecyclePolicyPolicyDetailsScheduleCrossRegionCopyRuleArray{
   218  //								&dlm.LifecyclePolicyPolicyDetailsScheduleCrossRegionCopyRuleArgs{
   219  //									Target:    pulumi.String("us-west-2"),
   220  //									Encrypted: pulumi.Bool(true),
   221  //									CmkArn:    dlmCrossRegionCopyCmk.Arn,
   222  //									CopyTags:  pulumi.Bool(true),
   223  //									RetainRule: &dlm.LifecyclePolicyPolicyDetailsScheduleCrossRegionCopyRuleRetainRuleArgs{
   224  //										Interval:     pulumi.Int(30),
   225  //										IntervalUnit: pulumi.String("DAYS"),
   226  //									},
   227  //								},
   228  //							},
   229  //						},
   230  //					},
   231  //					TargetTags: pulumi.StringMap{
   232  //						"Snapshot": pulumi.String("true"),
   233  //					},
   234  //				},
   235  //			})
   236  //			if err != nil {
   237  //				return err
   238  //			}
   239  //			return nil
   240  //		})
   241  //	}
   242  //
   243  // ```
   244  // <!--End PulumiCodeChooser -->
   245  //
   246  // ### Example Event Based Policy Usage
   247  //
   248  // <!--Start PulumiCodeChooser -->
   249  // ```go
   250  // package main
   251  //
   252  // import (
   253  //
   254  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
   255  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dlm"
   256  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   257  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   258  //
   259  // )
   260  //
   261  //	func main() {
   262  //		pulumi.Run(func(ctx *pulumi.Context) error {
   263  //			current, err := aws.GetCallerIdentity(ctx, nil, nil)
   264  //			if err != nil {
   265  //				return err
   266  //			}
   267  //			_, err = dlm.NewLifecyclePolicy(ctx, "example", &dlm.LifecyclePolicyArgs{
   268  //				Description:      pulumi.String("tf-acc-basic"),
   269  //				ExecutionRoleArn: pulumi.Any(exampleAwsIamRole.Arn),
   270  //				PolicyDetails: &dlm.LifecyclePolicyPolicyDetailsArgs{
   271  //					PolicyType: pulumi.String("EVENT_BASED_POLICY"),
   272  //					Action: &dlm.LifecyclePolicyPolicyDetailsActionArgs{
   273  //						Name: pulumi.String("tf-acc-basic"),
   274  //						CrossRegionCopies: dlm.LifecyclePolicyPolicyDetailsActionCrossRegionCopyArray{
   275  //							&dlm.LifecyclePolicyPolicyDetailsActionCrossRegionCopyArgs{
   276  //								EncryptionConfiguration: nil,
   277  //								RetainRule: &dlm.LifecyclePolicyPolicyDetailsActionCrossRegionCopyRetainRuleArgs{
   278  //									Interval:     pulumi.Int(15),
   279  //									IntervalUnit: pulumi.String("MONTHS"),
   280  //								},
   281  //								Target: pulumi.String("us-east-1"),
   282  //							},
   283  //						},
   284  //					},
   285  //					EventSource: &dlm.LifecyclePolicyPolicyDetailsEventSourceArgs{
   286  //						Type: pulumi.String("MANAGED_CWE"),
   287  //						Parameters: &dlm.LifecyclePolicyPolicyDetailsEventSourceParametersArgs{
   288  //							DescriptionRegex: pulumi.String("^.*Created for policy: policy-1234567890abcdef0.*$"),
   289  //							EventType:        pulumi.String("shareSnapshot"),
   290  //							SnapshotOwners: pulumi.StringArray{
   291  //								pulumi.String(current.AccountId),
   292  //							},
   293  //						},
   294  //					},
   295  //				},
   296  //			})
   297  //			if err != nil {
   298  //				return err
   299  //			}
   300  //			example, err := iam.LookupPolicy(ctx, &iam.LookupPolicyArgs{
   301  //				Name: pulumi.StringRef("AWSDataLifecycleManagerServiceRole"),
   302  //			}, nil)
   303  //			if err != nil {
   304  //				return err
   305  //			}
   306  //			_, err = iam.NewRolePolicyAttachment(ctx, "example", &iam.RolePolicyAttachmentArgs{
   307  //				Role:      pulumi.Any(exampleAwsIamRole.Id),
   308  //				PolicyArn: pulumi.String(example.Arn),
   309  //			})
   310  //			if err != nil {
   311  //				return err
   312  //			}
   313  //			return nil
   314  //		})
   315  //	}
   316  //
   317  // ```
   318  // <!--End PulumiCodeChooser -->
   319  //
   320  // ## Import
   321  //
   322  // Using `pulumi import`, import DLM lifecycle policies using their policy ID. For example:
   323  //
   324  // ```sh
   325  // $ pulumi import aws:dlm/lifecyclePolicy:LifecyclePolicy example policy-abcdef12345678901
   326  // ```
   327  type LifecyclePolicy struct {
   328  	pulumi.CustomResourceState
   329  
   330  	// Amazon Resource Name (ARN) of the DLM Lifecycle Policy.
   331  	Arn pulumi.StringOutput `pulumi:"arn"`
   332  	// A description for the DLM lifecycle policy.
   333  	Description pulumi.StringOutput `pulumi:"description"`
   334  	// The ARN of an IAM role that is able to be assumed by the DLM service.
   335  	ExecutionRoleArn pulumi.StringOutput `pulumi:"executionRoleArn"`
   336  	// See the `policyDetails` configuration block. Max of 1.
   337  	PolicyDetails LifecyclePolicyPolicyDetailsOutput `pulumi:"policyDetails"`
   338  	// Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are valid values. Defaults to `ENABLED`.
   339  	State pulumi.StringPtrOutput `pulumi:"state"`
   340  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   341  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   342  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   343  	//
   344  	// Deprecated: Please use `tags` instead.
   345  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   346  }
   347  
   348  // NewLifecyclePolicy registers a new resource with the given unique name, arguments, and options.
   349  func NewLifecyclePolicy(ctx *pulumi.Context,
   350  	name string, args *LifecyclePolicyArgs, opts ...pulumi.ResourceOption) (*LifecyclePolicy, error) {
   351  	if args == nil {
   352  		return nil, errors.New("missing one or more required arguments")
   353  	}
   354  
   355  	if args.Description == nil {
   356  		return nil, errors.New("invalid value for required argument 'Description'")
   357  	}
   358  	if args.ExecutionRoleArn == nil {
   359  		return nil, errors.New("invalid value for required argument 'ExecutionRoleArn'")
   360  	}
   361  	if args.PolicyDetails == nil {
   362  		return nil, errors.New("invalid value for required argument 'PolicyDetails'")
   363  	}
   364  	opts = internal.PkgResourceDefaultOpts(opts)
   365  	var resource LifecyclePolicy
   366  	err := ctx.RegisterResource("aws:dlm/lifecyclePolicy:LifecyclePolicy", name, args, &resource, opts...)
   367  	if err != nil {
   368  		return nil, err
   369  	}
   370  	return &resource, nil
   371  }
   372  
   373  // GetLifecyclePolicy gets an existing LifecyclePolicy resource's state with the given name, ID, and optional
   374  // state properties that are used to uniquely qualify the lookup (nil if not required).
   375  func GetLifecyclePolicy(ctx *pulumi.Context,
   376  	name string, id pulumi.IDInput, state *LifecyclePolicyState, opts ...pulumi.ResourceOption) (*LifecyclePolicy, error) {
   377  	var resource LifecyclePolicy
   378  	err := ctx.ReadResource("aws:dlm/lifecyclePolicy:LifecyclePolicy", name, id, state, &resource, opts...)
   379  	if err != nil {
   380  		return nil, err
   381  	}
   382  	return &resource, nil
   383  }
   384  
   385  // Input properties used for looking up and filtering LifecyclePolicy resources.
   386  type lifecyclePolicyState struct {
   387  	// Amazon Resource Name (ARN) of the DLM Lifecycle Policy.
   388  	Arn *string `pulumi:"arn"`
   389  	// A description for the DLM lifecycle policy.
   390  	Description *string `pulumi:"description"`
   391  	// The ARN of an IAM role that is able to be assumed by the DLM service.
   392  	ExecutionRoleArn *string `pulumi:"executionRoleArn"`
   393  	// See the `policyDetails` configuration block. Max of 1.
   394  	PolicyDetails *LifecyclePolicyPolicyDetails `pulumi:"policyDetails"`
   395  	// Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are valid values. Defaults to `ENABLED`.
   396  	State *string `pulumi:"state"`
   397  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   398  	Tags map[string]string `pulumi:"tags"`
   399  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   400  	//
   401  	// Deprecated: Please use `tags` instead.
   402  	TagsAll map[string]string `pulumi:"tagsAll"`
   403  }
   404  
   405  type LifecyclePolicyState struct {
   406  	// Amazon Resource Name (ARN) of the DLM Lifecycle Policy.
   407  	Arn pulumi.StringPtrInput
   408  	// A description for the DLM lifecycle policy.
   409  	Description pulumi.StringPtrInput
   410  	// The ARN of an IAM role that is able to be assumed by the DLM service.
   411  	ExecutionRoleArn pulumi.StringPtrInput
   412  	// See the `policyDetails` configuration block. Max of 1.
   413  	PolicyDetails LifecyclePolicyPolicyDetailsPtrInput
   414  	// Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are valid values. Defaults to `ENABLED`.
   415  	State pulumi.StringPtrInput
   416  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   417  	Tags pulumi.StringMapInput
   418  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   419  	//
   420  	// Deprecated: Please use `tags` instead.
   421  	TagsAll pulumi.StringMapInput
   422  }
   423  
   424  func (LifecyclePolicyState) ElementType() reflect.Type {
   425  	return reflect.TypeOf((*lifecyclePolicyState)(nil)).Elem()
   426  }
   427  
   428  type lifecyclePolicyArgs struct {
   429  	// A description for the DLM lifecycle policy.
   430  	Description string `pulumi:"description"`
   431  	// The ARN of an IAM role that is able to be assumed by the DLM service.
   432  	ExecutionRoleArn string `pulumi:"executionRoleArn"`
   433  	// See the `policyDetails` configuration block. Max of 1.
   434  	PolicyDetails LifecyclePolicyPolicyDetails `pulumi:"policyDetails"`
   435  	// Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are valid values. Defaults to `ENABLED`.
   436  	State *string `pulumi:"state"`
   437  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   438  	Tags map[string]string `pulumi:"tags"`
   439  }
   440  
   441  // The set of arguments for constructing a LifecyclePolicy resource.
   442  type LifecyclePolicyArgs struct {
   443  	// A description for the DLM lifecycle policy.
   444  	Description pulumi.StringInput
   445  	// The ARN of an IAM role that is able to be assumed by the DLM service.
   446  	ExecutionRoleArn pulumi.StringInput
   447  	// See the `policyDetails` configuration block. Max of 1.
   448  	PolicyDetails LifecyclePolicyPolicyDetailsInput
   449  	// Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are valid values. Defaults to `ENABLED`.
   450  	State pulumi.StringPtrInput
   451  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   452  	Tags pulumi.StringMapInput
   453  }
   454  
   455  func (LifecyclePolicyArgs) ElementType() reflect.Type {
   456  	return reflect.TypeOf((*lifecyclePolicyArgs)(nil)).Elem()
   457  }
   458  
   459  type LifecyclePolicyInput interface {
   460  	pulumi.Input
   461  
   462  	ToLifecyclePolicyOutput() LifecyclePolicyOutput
   463  	ToLifecyclePolicyOutputWithContext(ctx context.Context) LifecyclePolicyOutput
   464  }
   465  
   466  func (*LifecyclePolicy) ElementType() reflect.Type {
   467  	return reflect.TypeOf((**LifecyclePolicy)(nil)).Elem()
   468  }
   469  
   470  func (i *LifecyclePolicy) ToLifecyclePolicyOutput() LifecyclePolicyOutput {
   471  	return i.ToLifecyclePolicyOutputWithContext(context.Background())
   472  }
   473  
   474  func (i *LifecyclePolicy) ToLifecyclePolicyOutputWithContext(ctx context.Context) LifecyclePolicyOutput {
   475  	return pulumi.ToOutputWithContext(ctx, i).(LifecyclePolicyOutput)
   476  }
   477  
   478  // LifecyclePolicyArrayInput is an input type that accepts LifecyclePolicyArray and LifecyclePolicyArrayOutput values.
   479  // You can construct a concrete instance of `LifecyclePolicyArrayInput` via:
   480  //
   481  //	LifecyclePolicyArray{ LifecyclePolicyArgs{...} }
   482  type LifecyclePolicyArrayInput interface {
   483  	pulumi.Input
   484  
   485  	ToLifecyclePolicyArrayOutput() LifecyclePolicyArrayOutput
   486  	ToLifecyclePolicyArrayOutputWithContext(context.Context) LifecyclePolicyArrayOutput
   487  }
   488  
   489  type LifecyclePolicyArray []LifecyclePolicyInput
   490  
   491  func (LifecyclePolicyArray) ElementType() reflect.Type {
   492  	return reflect.TypeOf((*[]*LifecyclePolicy)(nil)).Elem()
   493  }
   494  
   495  func (i LifecyclePolicyArray) ToLifecyclePolicyArrayOutput() LifecyclePolicyArrayOutput {
   496  	return i.ToLifecyclePolicyArrayOutputWithContext(context.Background())
   497  }
   498  
   499  func (i LifecyclePolicyArray) ToLifecyclePolicyArrayOutputWithContext(ctx context.Context) LifecyclePolicyArrayOutput {
   500  	return pulumi.ToOutputWithContext(ctx, i).(LifecyclePolicyArrayOutput)
   501  }
   502  
   503  // LifecyclePolicyMapInput is an input type that accepts LifecyclePolicyMap and LifecyclePolicyMapOutput values.
   504  // You can construct a concrete instance of `LifecyclePolicyMapInput` via:
   505  //
   506  //	LifecyclePolicyMap{ "key": LifecyclePolicyArgs{...} }
   507  type LifecyclePolicyMapInput interface {
   508  	pulumi.Input
   509  
   510  	ToLifecyclePolicyMapOutput() LifecyclePolicyMapOutput
   511  	ToLifecyclePolicyMapOutputWithContext(context.Context) LifecyclePolicyMapOutput
   512  }
   513  
   514  type LifecyclePolicyMap map[string]LifecyclePolicyInput
   515  
   516  func (LifecyclePolicyMap) ElementType() reflect.Type {
   517  	return reflect.TypeOf((*map[string]*LifecyclePolicy)(nil)).Elem()
   518  }
   519  
   520  func (i LifecyclePolicyMap) ToLifecyclePolicyMapOutput() LifecyclePolicyMapOutput {
   521  	return i.ToLifecyclePolicyMapOutputWithContext(context.Background())
   522  }
   523  
   524  func (i LifecyclePolicyMap) ToLifecyclePolicyMapOutputWithContext(ctx context.Context) LifecyclePolicyMapOutput {
   525  	return pulumi.ToOutputWithContext(ctx, i).(LifecyclePolicyMapOutput)
   526  }
   527  
   528  type LifecyclePolicyOutput struct{ *pulumi.OutputState }
   529  
   530  func (LifecyclePolicyOutput) ElementType() reflect.Type {
   531  	return reflect.TypeOf((**LifecyclePolicy)(nil)).Elem()
   532  }
   533  
   534  func (o LifecyclePolicyOutput) ToLifecyclePolicyOutput() LifecyclePolicyOutput {
   535  	return o
   536  }
   537  
   538  func (o LifecyclePolicyOutput) ToLifecyclePolicyOutputWithContext(ctx context.Context) LifecyclePolicyOutput {
   539  	return o
   540  }
   541  
   542  // Amazon Resource Name (ARN) of the DLM Lifecycle Policy.
   543  func (o LifecyclePolicyOutput) Arn() pulumi.StringOutput {
   544  	return o.ApplyT(func(v *LifecyclePolicy) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   545  }
   546  
   547  // A description for the DLM lifecycle policy.
   548  func (o LifecyclePolicyOutput) Description() pulumi.StringOutput {
   549  	return o.ApplyT(func(v *LifecyclePolicy) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput)
   550  }
   551  
   552  // The ARN of an IAM role that is able to be assumed by the DLM service.
   553  func (o LifecyclePolicyOutput) ExecutionRoleArn() pulumi.StringOutput {
   554  	return o.ApplyT(func(v *LifecyclePolicy) pulumi.StringOutput { return v.ExecutionRoleArn }).(pulumi.StringOutput)
   555  }
   556  
   557  // See the `policyDetails` configuration block. Max of 1.
   558  func (o LifecyclePolicyOutput) PolicyDetails() LifecyclePolicyPolicyDetailsOutput {
   559  	return o.ApplyT(func(v *LifecyclePolicy) LifecyclePolicyPolicyDetailsOutput { return v.PolicyDetails }).(LifecyclePolicyPolicyDetailsOutput)
   560  }
   561  
   562  // Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are valid values. Defaults to `ENABLED`.
   563  func (o LifecyclePolicyOutput) State() pulumi.StringPtrOutput {
   564  	return o.ApplyT(func(v *LifecyclePolicy) pulumi.StringPtrOutput { return v.State }).(pulumi.StringPtrOutput)
   565  }
   566  
   567  // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   568  func (o LifecyclePolicyOutput) Tags() pulumi.StringMapOutput {
   569  	return o.ApplyT(func(v *LifecyclePolicy) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   570  }
   571  
   572  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   573  //
   574  // Deprecated: Please use `tags` instead.
   575  func (o LifecyclePolicyOutput) TagsAll() pulumi.StringMapOutput {
   576  	return o.ApplyT(func(v *LifecyclePolicy) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   577  }
   578  
   579  type LifecyclePolicyArrayOutput struct{ *pulumi.OutputState }
   580  
   581  func (LifecyclePolicyArrayOutput) ElementType() reflect.Type {
   582  	return reflect.TypeOf((*[]*LifecyclePolicy)(nil)).Elem()
   583  }
   584  
   585  func (o LifecyclePolicyArrayOutput) ToLifecyclePolicyArrayOutput() LifecyclePolicyArrayOutput {
   586  	return o
   587  }
   588  
   589  func (o LifecyclePolicyArrayOutput) ToLifecyclePolicyArrayOutputWithContext(ctx context.Context) LifecyclePolicyArrayOutput {
   590  	return o
   591  }
   592  
   593  func (o LifecyclePolicyArrayOutput) Index(i pulumi.IntInput) LifecyclePolicyOutput {
   594  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LifecyclePolicy {
   595  		return vs[0].([]*LifecyclePolicy)[vs[1].(int)]
   596  	}).(LifecyclePolicyOutput)
   597  }
   598  
   599  type LifecyclePolicyMapOutput struct{ *pulumi.OutputState }
   600  
   601  func (LifecyclePolicyMapOutput) ElementType() reflect.Type {
   602  	return reflect.TypeOf((*map[string]*LifecyclePolicy)(nil)).Elem()
   603  }
   604  
   605  func (o LifecyclePolicyMapOutput) ToLifecyclePolicyMapOutput() LifecyclePolicyMapOutput {
   606  	return o
   607  }
   608  
   609  func (o LifecyclePolicyMapOutput) ToLifecyclePolicyMapOutputWithContext(ctx context.Context) LifecyclePolicyMapOutput {
   610  	return o
   611  }
   612  
   613  func (o LifecyclePolicyMapOutput) MapIndex(k pulumi.StringInput) LifecyclePolicyOutput {
   614  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LifecyclePolicy {
   615  		return vs[0].(map[string]*LifecyclePolicy)[vs[1].(string)]
   616  	}).(LifecyclePolicyOutput)
   617  }
   618  
   619  func init() {
   620  	pulumi.RegisterInputType(reflect.TypeOf((*LifecyclePolicyInput)(nil)).Elem(), &LifecyclePolicy{})
   621  	pulumi.RegisterInputType(reflect.TypeOf((*LifecyclePolicyArrayInput)(nil)).Elem(), LifecyclePolicyArray{})
   622  	pulumi.RegisterInputType(reflect.TypeOf((*LifecyclePolicyMapInput)(nil)).Elem(), LifecyclePolicyMap{})
   623  	pulumi.RegisterOutputType(LifecyclePolicyOutput{})
   624  	pulumi.RegisterOutputType(LifecyclePolicyArrayOutput{})
   625  	pulumi.RegisterOutputType(LifecyclePolicyMapOutput{})
   626  }