github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/s3/bucketIntelligentTieringConfiguration.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 s3
     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 an [S3 Intelligent-Tiering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering.html) configuration resource.
    16  //
    17  // > This resource cannot be used with S3 directory buckets.
    18  //
    19  // ## Example Usage
    20  //
    21  // ### Add intelligent tiering configuration for entire S3 bucket
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
    30  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    31  //
    32  // )
    33  //
    34  //	func main() {
    35  //		pulumi.Run(func(ctx *pulumi.Context) error {
    36  //			example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{
    37  //				Bucket: pulumi.String("example"),
    38  //			})
    39  //			if err != nil {
    40  //				return err
    41  //			}
    42  //			_, err = s3.NewBucketIntelligentTieringConfiguration(ctx, "example-entire-bucket", &s3.BucketIntelligentTieringConfigurationArgs{
    43  //				Bucket: example.ID(),
    44  //				Name:   pulumi.String("EntireBucket"),
    45  //				Tierings: s3.BucketIntelligentTieringConfigurationTieringArray{
    46  //					&s3.BucketIntelligentTieringConfigurationTieringArgs{
    47  //						AccessTier: pulumi.String("DEEP_ARCHIVE_ACCESS"),
    48  //						Days:       pulumi.Int(180),
    49  //					},
    50  //					&s3.BucketIntelligentTieringConfigurationTieringArgs{
    51  //						AccessTier: pulumi.String("ARCHIVE_ACCESS"),
    52  //						Days:       pulumi.Int(125),
    53  //					},
    54  //				},
    55  //			})
    56  //			if err != nil {
    57  //				return err
    58  //			}
    59  //			return nil
    60  //		})
    61  //	}
    62  //
    63  // ```
    64  // <!--End PulumiCodeChooser -->
    65  //
    66  // ### Add intelligent tiering configuration with S3 object filter
    67  //
    68  // <!--Start PulumiCodeChooser -->
    69  // ```go
    70  // package main
    71  //
    72  // import (
    73  //
    74  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
    75  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    76  //
    77  // )
    78  //
    79  //	func main() {
    80  //		pulumi.Run(func(ctx *pulumi.Context) error {
    81  //			example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{
    82  //				Bucket: pulumi.String("example"),
    83  //			})
    84  //			if err != nil {
    85  //				return err
    86  //			}
    87  //			_, err = s3.NewBucketIntelligentTieringConfiguration(ctx, "example-filtered", &s3.BucketIntelligentTieringConfigurationArgs{
    88  //				Bucket: example.ID(),
    89  //				Name:   pulumi.String("ImportantBlueDocuments"),
    90  //				Status: pulumi.String("Disabled"),
    91  //				Filter: &s3.BucketIntelligentTieringConfigurationFilterArgs{
    92  //					Prefix: pulumi.String("documents/"),
    93  //					Tags: pulumi.StringMap{
    94  //						"priority": pulumi.String("high"),
    95  //						"class":    pulumi.String("blue"),
    96  //					},
    97  //				},
    98  //				Tierings: s3.BucketIntelligentTieringConfigurationTieringArray{
    99  //					&s3.BucketIntelligentTieringConfigurationTieringArgs{
   100  //						AccessTier: pulumi.String("ARCHIVE_ACCESS"),
   101  //						Days:       pulumi.Int(125),
   102  //					},
   103  //				},
   104  //			})
   105  //			if err != nil {
   106  //				return err
   107  //			}
   108  //			return nil
   109  //		})
   110  //	}
   111  //
   112  // ```
   113  // <!--End PulumiCodeChooser -->
   114  //
   115  // ## Import
   116  //
   117  // Using `pulumi import`, import S3 bucket intelligent tiering configurations using `bucket:name`. For example:
   118  //
   119  // ```sh
   120  // $ pulumi import aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration my-bucket-entire-bucket my-bucket:EntireBucket
   121  // ```
   122  type BucketIntelligentTieringConfiguration struct {
   123  	pulumi.CustomResourceState
   124  
   125  	// Name of the bucket this intelligent tiering configuration is associated with.
   126  	Bucket pulumi.StringOutput `pulumi:"bucket"`
   127  	// Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below).
   128  	Filter BucketIntelligentTieringConfigurationFilterPtrOutput `pulumi:"filter"`
   129  	// Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket.
   130  	Name pulumi.StringOutput `pulumi:"name"`
   131  	// Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`.
   132  	Status pulumi.StringPtrOutput `pulumi:"status"`
   133  	// S3 Intelligent-Tiering storage class tiers of the configuration (documented below).
   134  	Tierings BucketIntelligentTieringConfigurationTieringArrayOutput `pulumi:"tierings"`
   135  }
   136  
   137  // NewBucketIntelligentTieringConfiguration registers a new resource with the given unique name, arguments, and options.
   138  func NewBucketIntelligentTieringConfiguration(ctx *pulumi.Context,
   139  	name string, args *BucketIntelligentTieringConfigurationArgs, opts ...pulumi.ResourceOption) (*BucketIntelligentTieringConfiguration, error) {
   140  	if args == nil {
   141  		return nil, errors.New("missing one or more required arguments")
   142  	}
   143  
   144  	if args.Bucket == nil {
   145  		return nil, errors.New("invalid value for required argument 'Bucket'")
   146  	}
   147  	if args.Tierings == nil {
   148  		return nil, errors.New("invalid value for required argument 'Tierings'")
   149  	}
   150  	opts = internal.PkgResourceDefaultOpts(opts)
   151  	var resource BucketIntelligentTieringConfiguration
   152  	err := ctx.RegisterResource("aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration", name, args, &resource, opts...)
   153  	if err != nil {
   154  		return nil, err
   155  	}
   156  	return &resource, nil
   157  }
   158  
   159  // GetBucketIntelligentTieringConfiguration gets an existing BucketIntelligentTieringConfiguration resource's state with the given name, ID, and optional
   160  // state properties that are used to uniquely qualify the lookup (nil if not required).
   161  func GetBucketIntelligentTieringConfiguration(ctx *pulumi.Context,
   162  	name string, id pulumi.IDInput, state *BucketIntelligentTieringConfigurationState, opts ...pulumi.ResourceOption) (*BucketIntelligentTieringConfiguration, error) {
   163  	var resource BucketIntelligentTieringConfiguration
   164  	err := ctx.ReadResource("aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration", name, id, state, &resource, opts...)
   165  	if err != nil {
   166  		return nil, err
   167  	}
   168  	return &resource, nil
   169  }
   170  
   171  // Input properties used for looking up and filtering BucketIntelligentTieringConfiguration resources.
   172  type bucketIntelligentTieringConfigurationState struct {
   173  	// Name of the bucket this intelligent tiering configuration is associated with.
   174  	Bucket *string `pulumi:"bucket"`
   175  	// Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below).
   176  	Filter *BucketIntelligentTieringConfigurationFilter `pulumi:"filter"`
   177  	// Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket.
   178  	Name *string `pulumi:"name"`
   179  	// Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`.
   180  	Status *string `pulumi:"status"`
   181  	// S3 Intelligent-Tiering storage class tiers of the configuration (documented below).
   182  	Tierings []BucketIntelligentTieringConfigurationTiering `pulumi:"tierings"`
   183  }
   184  
   185  type BucketIntelligentTieringConfigurationState struct {
   186  	// Name of the bucket this intelligent tiering configuration is associated with.
   187  	Bucket pulumi.StringPtrInput
   188  	// Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below).
   189  	Filter BucketIntelligentTieringConfigurationFilterPtrInput
   190  	// Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket.
   191  	Name pulumi.StringPtrInput
   192  	// Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`.
   193  	Status pulumi.StringPtrInput
   194  	// S3 Intelligent-Tiering storage class tiers of the configuration (documented below).
   195  	Tierings BucketIntelligentTieringConfigurationTieringArrayInput
   196  }
   197  
   198  func (BucketIntelligentTieringConfigurationState) ElementType() reflect.Type {
   199  	return reflect.TypeOf((*bucketIntelligentTieringConfigurationState)(nil)).Elem()
   200  }
   201  
   202  type bucketIntelligentTieringConfigurationArgs struct {
   203  	// Name of the bucket this intelligent tiering configuration is associated with.
   204  	Bucket string `pulumi:"bucket"`
   205  	// Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below).
   206  	Filter *BucketIntelligentTieringConfigurationFilter `pulumi:"filter"`
   207  	// Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket.
   208  	Name *string `pulumi:"name"`
   209  	// Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`.
   210  	Status *string `pulumi:"status"`
   211  	// S3 Intelligent-Tiering storage class tiers of the configuration (documented below).
   212  	Tierings []BucketIntelligentTieringConfigurationTiering `pulumi:"tierings"`
   213  }
   214  
   215  // The set of arguments for constructing a BucketIntelligentTieringConfiguration resource.
   216  type BucketIntelligentTieringConfigurationArgs struct {
   217  	// Name of the bucket this intelligent tiering configuration is associated with.
   218  	Bucket pulumi.StringInput
   219  	// Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below).
   220  	Filter BucketIntelligentTieringConfigurationFilterPtrInput
   221  	// Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket.
   222  	Name pulumi.StringPtrInput
   223  	// Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`.
   224  	Status pulumi.StringPtrInput
   225  	// S3 Intelligent-Tiering storage class tiers of the configuration (documented below).
   226  	Tierings BucketIntelligentTieringConfigurationTieringArrayInput
   227  }
   228  
   229  func (BucketIntelligentTieringConfigurationArgs) ElementType() reflect.Type {
   230  	return reflect.TypeOf((*bucketIntelligentTieringConfigurationArgs)(nil)).Elem()
   231  }
   232  
   233  type BucketIntelligentTieringConfigurationInput interface {
   234  	pulumi.Input
   235  
   236  	ToBucketIntelligentTieringConfigurationOutput() BucketIntelligentTieringConfigurationOutput
   237  	ToBucketIntelligentTieringConfigurationOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationOutput
   238  }
   239  
   240  func (*BucketIntelligentTieringConfiguration) ElementType() reflect.Type {
   241  	return reflect.TypeOf((**BucketIntelligentTieringConfiguration)(nil)).Elem()
   242  }
   243  
   244  func (i *BucketIntelligentTieringConfiguration) ToBucketIntelligentTieringConfigurationOutput() BucketIntelligentTieringConfigurationOutput {
   245  	return i.ToBucketIntelligentTieringConfigurationOutputWithContext(context.Background())
   246  }
   247  
   248  func (i *BucketIntelligentTieringConfiguration) ToBucketIntelligentTieringConfigurationOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationOutput {
   249  	return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationOutput)
   250  }
   251  
   252  // BucketIntelligentTieringConfigurationArrayInput is an input type that accepts BucketIntelligentTieringConfigurationArray and BucketIntelligentTieringConfigurationArrayOutput values.
   253  // You can construct a concrete instance of `BucketIntelligentTieringConfigurationArrayInput` via:
   254  //
   255  //	BucketIntelligentTieringConfigurationArray{ BucketIntelligentTieringConfigurationArgs{...} }
   256  type BucketIntelligentTieringConfigurationArrayInput interface {
   257  	pulumi.Input
   258  
   259  	ToBucketIntelligentTieringConfigurationArrayOutput() BucketIntelligentTieringConfigurationArrayOutput
   260  	ToBucketIntelligentTieringConfigurationArrayOutputWithContext(context.Context) BucketIntelligentTieringConfigurationArrayOutput
   261  }
   262  
   263  type BucketIntelligentTieringConfigurationArray []BucketIntelligentTieringConfigurationInput
   264  
   265  func (BucketIntelligentTieringConfigurationArray) ElementType() reflect.Type {
   266  	return reflect.TypeOf((*[]*BucketIntelligentTieringConfiguration)(nil)).Elem()
   267  }
   268  
   269  func (i BucketIntelligentTieringConfigurationArray) ToBucketIntelligentTieringConfigurationArrayOutput() BucketIntelligentTieringConfigurationArrayOutput {
   270  	return i.ToBucketIntelligentTieringConfigurationArrayOutputWithContext(context.Background())
   271  }
   272  
   273  func (i BucketIntelligentTieringConfigurationArray) ToBucketIntelligentTieringConfigurationArrayOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationArrayOutput {
   274  	return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationArrayOutput)
   275  }
   276  
   277  // BucketIntelligentTieringConfigurationMapInput is an input type that accepts BucketIntelligentTieringConfigurationMap and BucketIntelligentTieringConfigurationMapOutput values.
   278  // You can construct a concrete instance of `BucketIntelligentTieringConfigurationMapInput` via:
   279  //
   280  //	BucketIntelligentTieringConfigurationMap{ "key": BucketIntelligentTieringConfigurationArgs{...} }
   281  type BucketIntelligentTieringConfigurationMapInput interface {
   282  	pulumi.Input
   283  
   284  	ToBucketIntelligentTieringConfigurationMapOutput() BucketIntelligentTieringConfigurationMapOutput
   285  	ToBucketIntelligentTieringConfigurationMapOutputWithContext(context.Context) BucketIntelligentTieringConfigurationMapOutput
   286  }
   287  
   288  type BucketIntelligentTieringConfigurationMap map[string]BucketIntelligentTieringConfigurationInput
   289  
   290  func (BucketIntelligentTieringConfigurationMap) ElementType() reflect.Type {
   291  	return reflect.TypeOf((*map[string]*BucketIntelligentTieringConfiguration)(nil)).Elem()
   292  }
   293  
   294  func (i BucketIntelligentTieringConfigurationMap) ToBucketIntelligentTieringConfigurationMapOutput() BucketIntelligentTieringConfigurationMapOutput {
   295  	return i.ToBucketIntelligentTieringConfigurationMapOutputWithContext(context.Background())
   296  }
   297  
   298  func (i BucketIntelligentTieringConfigurationMap) ToBucketIntelligentTieringConfigurationMapOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationMapOutput {
   299  	return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationMapOutput)
   300  }
   301  
   302  type BucketIntelligentTieringConfigurationOutput struct{ *pulumi.OutputState }
   303  
   304  func (BucketIntelligentTieringConfigurationOutput) ElementType() reflect.Type {
   305  	return reflect.TypeOf((**BucketIntelligentTieringConfiguration)(nil)).Elem()
   306  }
   307  
   308  func (o BucketIntelligentTieringConfigurationOutput) ToBucketIntelligentTieringConfigurationOutput() BucketIntelligentTieringConfigurationOutput {
   309  	return o
   310  }
   311  
   312  func (o BucketIntelligentTieringConfigurationOutput) ToBucketIntelligentTieringConfigurationOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationOutput {
   313  	return o
   314  }
   315  
   316  // Name of the bucket this intelligent tiering configuration is associated with.
   317  func (o BucketIntelligentTieringConfigurationOutput) Bucket() pulumi.StringOutput {
   318  	return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput)
   319  }
   320  
   321  // Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below).
   322  func (o BucketIntelligentTieringConfigurationOutput) Filter() BucketIntelligentTieringConfigurationFilterPtrOutput {
   323  	return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) BucketIntelligentTieringConfigurationFilterPtrOutput {
   324  		return v.Filter
   325  	}).(BucketIntelligentTieringConfigurationFilterPtrOutput)
   326  }
   327  
   328  // Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket.
   329  func (o BucketIntelligentTieringConfigurationOutput) Name() pulumi.StringOutput {
   330  	return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   331  }
   332  
   333  // Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`.
   334  func (o BucketIntelligentTieringConfigurationOutput) Status() pulumi.StringPtrOutput {
   335  	return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput)
   336  }
   337  
   338  // S3 Intelligent-Tiering storage class tiers of the configuration (documented below).
   339  func (o BucketIntelligentTieringConfigurationOutput) Tierings() BucketIntelligentTieringConfigurationTieringArrayOutput {
   340  	return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) BucketIntelligentTieringConfigurationTieringArrayOutput {
   341  		return v.Tierings
   342  	}).(BucketIntelligentTieringConfigurationTieringArrayOutput)
   343  }
   344  
   345  type BucketIntelligentTieringConfigurationArrayOutput struct{ *pulumi.OutputState }
   346  
   347  func (BucketIntelligentTieringConfigurationArrayOutput) ElementType() reflect.Type {
   348  	return reflect.TypeOf((*[]*BucketIntelligentTieringConfiguration)(nil)).Elem()
   349  }
   350  
   351  func (o BucketIntelligentTieringConfigurationArrayOutput) ToBucketIntelligentTieringConfigurationArrayOutput() BucketIntelligentTieringConfigurationArrayOutput {
   352  	return o
   353  }
   354  
   355  func (o BucketIntelligentTieringConfigurationArrayOutput) ToBucketIntelligentTieringConfigurationArrayOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationArrayOutput {
   356  	return o
   357  }
   358  
   359  func (o BucketIntelligentTieringConfigurationArrayOutput) Index(i pulumi.IntInput) BucketIntelligentTieringConfigurationOutput {
   360  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketIntelligentTieringConfiguration {
   361  		return vs[0].([]*BucketIntelligentTieringConfiguration)[vs[1].(int)]
   362  	}).(BucketIntelligentTieringConfigurationOutput)
   363  }
   364  
   365  type BucketIntelligentTieringConfigurationMapOutput struct{ *pulumi.OutputState }
   366  
   367  func (BucketIntelligentTieringConfigurationMapOutput) ElementType() reflect.Type {
   368  	return reflect.TypeOf((*map[string]*BucketIntelligentTieringConfiguration)(nil)).Elem()
   369  }
   370  
   371  func (o BucketIntelligentTieringConfigurationMapOutput) ToBucketIntelligentTieringConfigurationMapOutput() BucketIntelligentTieringConfigurationMapOutput {
   372  	return o
   373  }
   374  
   375  func (o BucketIntelligentTieringConfigurationMapOutput) ToBucketIntelligentTieringConfigurationMapOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationMapOutput {
   376  	return o
   377  }
   378  
   379  func (o BucketIntelligentTieringConfigurationMapOutput) MapIndex(k pulumi.StringInput) BucketIntelligentTieringConfigurationOutput {
   380  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketIntelligentTieringConfiguration {
   381  		return vs[0].(map[string]*BucketIntelligentTieringConfiguration)[vs[1].(string)]
   382  	}).(BucketIntelligentTieringConfigurationOutput)
   383  }
   384  
   385  func init() {
   386  	pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationInput)(nil)).Elem(), &BucketIntelligentTieringConfiguration{})
   387  	pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationArrayInput)(nil)).Elem(), BucketIntelligentTieringConfigurationArray{})
   388  	pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationMapInput)(nil)).Elem(), BucketIntelligentTieringConfigurationMap{})
   389  	pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationOutput{})
   390  	pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationArrayOutput{})
   391  	pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationMapOutput{})
   392  }