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 }