github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/s3/analyticsConfiguration.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 a S3 bucket [analytics configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html) resource. 16 // 17 // > This resource cannot be used with S3 directory buckets. 18 // 19 // ## Example Usage 20 // 21 // ### Add analytics configuration for entire S3 bucket and export results to a second 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 // analytics, err := s3.NewBucketV2(ctx, "analytics", &s3.BucketV2Args{ 43 // Bucket: pulumi.String("analytics destination"), 44 // }) 45 // if err != nil { 46 // return err 47 // } 48 // _, err = s3.NewAnalyticsConfiguration(ctx, "example-entire-bucket", &s3.AnalyticsConfigurationArgs{ 49 // Bucket: example.ID(), 50 // Name: pulumi.String("EntireBucket"), 51 // StorageClassAnalysis: &s3.AnalyticsConfigurationStorageClassAnalysisArgs{ 52 // DataExport: &s3.AnalyticsConfigurationStorageClassAnalysisDataExportArgs{ 53 // Destination: &s3.AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs{ 54 // S3BucketDestination: &s3.AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs{ 55 // BucketArn: analytics.Arn, 56 // }, 57 // }, 58 // }, 59 // }, 60 // }) 61 // if err != nil { 62 // return err 63 // } 64 // return nil 65 // }) 66 // } 67 // 68 // ``` 69 // <!--End PulumiCodeChooser --> 70 // 71 // ### Add analytics configuration with S3 object filter 72 // 73 // <!--Start PulumiCodeChooser --> 74 // ```go 75 // package main 76 // 77 // import ( 78 // 79 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 80 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 81 // 82 // ) 83 // 84 // func main() { 85 // pulumi.Run(func(ctx *pulumi.Context) error { 86 // example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ 87 // Bucket: pulumi.String("example"), 88 // }) 89 // if err != nil { 90 // return err 91 // } 92 // _, err = s3.NewAnalyticsConfiguration(ctx, "example-filtered", &s3.AnalyticsConfigurationArgs{ 93 // Bucket: example.ID(), 94 // Name: pulumi.String("ImportantBlueDocuments"), 95 // Filter: &s3.AnalyticsConfigurationFilterArgs{ 96 // Prefix: pulumi.String("documents/"), 97 // Tags: pulumi.StringMap{ 98 // "priority": pulumi.String("high"), 99 // "class": pulumi.String("blue"), 100 // }, 101 // }, 102 // }) 103 // if err != nil { 104 // return err 105 // } 106 // return nil 107 // }) 108 // } 109 // 110 // ``` 111 // <!--End PulumiCodeChooser --> 112 // 113 // ## Import 114 // 115 // Using `pulumi import`, import S3 bucket analytics configurations using `bucket:analytics`. For example: 116 // 117 // ```sh 118 // $ pulumi import aws:s3/analyticsConfiguration:AnalyticsConfiguration my-bucket-entire-bucket my-bucket:EntireBucket 119 // ``` 120 type AnalyticsConfiguration struct { 121 pulumi.CustomResourceState 122 123 // Name of the bucket this analytics configuration is associated with. 124 Bucket pulumi.StringOutput `pulumi:"bucket"` 125 // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). 126 Filter AnalyticsConfigurationFilterPtrOutput `pulumi:"filter"` 127 // Unique identifier of the analytics configuration for the bucket. 128 Name pulumi.StringOutput `pulumi:"name"` 129 // Configuration for the analytics data export (documented below). 130 StorageClassAnalysis AnalyticsConfigurationStorageClassAnalysisPtrOutput `pulumi:"storageClassAnalysis"` 131 } 132 133 // NewAnalyticsConfiguration registers a new resource with the given unique name, arguments, and options. 134 func NewAnalyticsConfiguration(ctx *pulumi.Context, 135 name string, args *AnalyticsConfigurationArgs, opts ...pulumi.ResourceOption) (*AnalyticsConfiguration, error) { 136 if args == nil { 137 return nil, errors.New("missing one or more required arguments") 138 } 139 140 if args.Bucket == nil { 141 return nil, errors.New("invalid value for required argument 'Bucket'") 142 } 143 opts = internal.PkgResourceDefaultOpts(opts) 144 var resource AnalyticsConfiguration 145 err := ctx.RegisterResource("aws:s3/analyticsConfiguration:AnalyticsConfiguration", name, args, &resource, opts...) 146 if err != nil { 147 return nil, err 148 } 149 return &resource, nil 150 } 151 152 // GetAnalyticsConfiguration gets an existing AnalyticsConfiguration resource's state with the given name, ID, and optional 153 // state properties that are used to uniquely qualify the lookup (nil if not required). 154 func GetAnalyticsConfiguration(ctx *pulumi.Context, 155 name string, id pulumi.IDInput, state *AnalyticsConfigurationState, opts ...pulumi.ResourceOption) (*AnalyticsConfiguration, error) { 156 var resource AnalyticsConfiguration 157 err := ctx.ReadResource("aws:s3/analyticsConfiguration:AnalyticsConfiguration", name, id, state, &resource, opts...) 158 if err != nil { 159 return nil, err 160 } 161 return &resource, nil 162 } 163 164 // Input properties used for looking up and filtering AnalyticsConfiguration resources. 165 type analyticsConfigurationState struct { 166 // Name of the bucket this analytics configuration is associated with. 167 Bucket *string `pulumi:"bucket"` 168 // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). 169 Filter *AnalyticsConfigurationFilter `pulumi:"filter"` 170 // Unique identifier of the analytics configuration for the bucket. 171 Name *string `pulumi:"name"` 172 // Configuration for the analytics data export (documented below). 173 StorageClassAnalysis *AnalyticsConfigurationStorageClassAnalysis `pulumi:"storageClassAnalysis"` 174 } 175 176 type AnalyticsConfigurationState struct { 177 // Name of the bucket this analytics configuration is associated with. 178 Bucket pulumi.StringPtrInput 179 // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). 180 Filter AnalyticsConfigurationFilterPtrInput 181 // Unique identifier of the analytics configuration for the bucket. 182 Name pulumi.StringPtrInput 183 // Configuration for the analytics data export (documented below). 184 StorageClassAnalysis AnalyticsConfigurationStorageClassAnalysisPtrInput 185 } 186 187 func (AnalyticsConfigurationState) ElementType() reflect.Type { 188 return reflect.TypeOf((*analyticsConfigurationState)(nil)).Elem() 189 } 190 191 type analyticsConfigurationArgs struct { 192 // Name of the bucket this analytics configuration is associated with. 193 Bucket string `pulumi:"bucket"` 194 // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). 195 Filter *AnalyticsConfigurationFilter `pulumi:"filter"` 196 // Unique identifier of the analytics configuration for the bucket. 197 Name *string `pulumi:"name"` 198 // Configuration for the analytics data export (documented below). 199 StorageClassAnalysis *AnalyticsConfigurationStorageClassAnalysis `pulumi:"storageClassAnalysis"` 200 } 201 202 // The set of arguments for constructing a AnalyticsConfiguration resource. 203 type AnalyticsConfigurationArgs struct { 204 // Name of the bucket this analytics configuration is associated with. 205 Bucket pulumi.StringInput 206 // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). 207 Filter AnalyticsConfigurationFilterPtrInput 208 // Unique identifier of the analytics configuration for the bucket. 209 Name pulumi.StringPtrInput 210 // Configuration for the analytics data export (documented below). 211 StorageClassAnalysis AnalyticsConfigurationStorageClassAnalysisPtrInput 212 } 213 214 func (AnalyticsConfigurationArgs) ElementType() reflect.Type { 215 return reflect.TypeOf((*analyticsConfigurationArgs)(nil)).Elem() 216 } 217 218 type AnalyticsConfigurationInput interface { 219 pulumi.Input 220 221 ToAnalyticsConfigurationOutput() AnalyticsConfigurationOutput 222 ToAnalyticsConfigurationOutputWithContext(ctx context.Context) AnalyticsConfigurationOutput 223 } 224 225 func (*AnalyticsConfiguration) ElementType() reflect.Type { 226 return reflect.TypeOf((**AnalyticsConfiguration)(nil)).Elem() 227 } 228 229 func (i *AnalyticsConfiguration) ToAnalyticsConfigurationOutput() AnalyticsConfigurationOutput { 230 return i.ToAnalyticsConfigurationOutputWithContext(context.Background()) 231 } 232 233 func (i *AnalyticsConfiguration) ToAnalyticsConfigurationOutputWithContext(ctx context.Context) AnalyticsConfigurationOutput { 234 return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationOutput) 235 } 236 237 // AnalyticsConfigurationArrayInput is an input type that accepts AnalyticsConfigurationArray and AnalyticsConfigurationArrayOutput values. 238 // You can construct a concrete instance of `AnalyticsConfigurationArrayInput` via: 239 // 240 // AnalyticsConfigurationArray{ AnalyticsConfigurationArgs{...} } 241 type AnalyticsConfigurationArrayInput interface { 242 pulumi.Input 243 244 ToAnalyticsConfigurationArrayOutput() AnalyticsConfigurationArrayOutput 245 ToAnalyticsConfigurationArrayOutputWithContext(context.Context) AnalyticsConfigurationArrayOutput 246 } 247 248 type AnalyticsConfigurationArray []AnalyticsConfigurationInput 249 250 func (AnalyticsConfigurationArray) ElementType() reflect.Type { 251 return reflect.TypeOf((*[]*AnalyticsConfiguration)(nil)).Elem() 252 } 253 254 func (i AnalyticsConfigurationArray) ToAnalyticsConfigurationArrayOutput() AnalyticsConfigurationArrayOutput { 255 return i.ToAnalyticsConfigurationArrayOutputWithContext(context.Background()) 256 } 257 258 func (i AnalyticsConfigurationArray) ToAnalyticsConfigurationArrayOutputWithContext(ctx context.Context) AnalyticsConfigurationArrayOutput { 259 return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationArrayOutput) 260 } 261 262 // AnalyticsConfigurationMapInput is an input type that accepts AnalyticsConfigurationMap and AnalyticsConfigurationMapOutput values. 263 // You can construct a concrete instance of `AnalyticsConfigurationMapInput` via: 264 // 265 // AnalyticsConfigurationMap{ "key": AnalyticsConfigurationArgs{...} } 266 type AnalyticsConfigurationMapInput interface { 267 pulumi.Input 268 269 ToAnalyticsConfigurationMapOutput() AnalyticsConfigurationMapOutput 270 ToAnalyticsConfigurationMapOutputWithContext(context.Context) AnalyticsConfigurationMapOutput 271 } 272 273 type AnalyticsConfigurationMap map[string]AnalyticsConfigurationInput 274 275 func (AnalyticsConfigurationMap) ElementType() reflect.Type { 276 return reflect.TypeOf((*map[string]*AnalyticsConfiguration)(nil)).Elem() 277 } 278 279 func (i AnalyticsConfigurationMap) ToAnalyticsConfigurationMapOutput() AnalyticsConfigurationMapOutput { 280 return i.ToAnalyticsConfigurationMapOutputWithContext(context.Background()) 281 } 282 283 func (i AnalyticsConfigurationMap) ToAnalyticsConfigurationMapOutputWithContext(ctx context.Context) AnalyticsConfigurationMapOutput { 284 return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationMapOutput) 285 } 286 287 type AnalyticsConfigurationOutput struct{ *pulumi.OutputState } 288 289 func (AnalyticsConfigurationOutput) ElementType() reflect.Type { 290 return reflect.TypeOf((**AnalyticsConfiguration)(nil)).Elem() 291 } 292 293 func (o AnalyticsConfigurationOutput) ToAnalyticsConfigurationOutput() AnalyticsConfigurationOutput { 294 return o 295 } 296 297 func (o AnalyticsConfigurationOutput) ToAnalyticsConfigurationOutputWithContext(ctx context.Context) AnalyticsConfigurationOutput { 298 return o 299 } 300 301 // Name of the bucket this analytics configuration is associated with. 302 func (o AnalyticsConfigurationOutput) Bucket() pulumi.StringOutput { 303 return o.ApplyT(func(v *AnalyticsConfiguration) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) 304 } 305 306 // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). 307 func (o AnalyticsConfigurationOutput) Filter() AnalyticsConfigurationFilterPtrOutput { 308 return o.ApplyT(func(v *AnalyticsConfiguration) AnalyticsConfigurationFilterPtrOutput { return v.Filter }).(AnalyticsConfigurationFilterPtrOutput) 309 } 310 311 // Unique identifier of the analytics configuration for the bucket. 312 func (o AnalyticsConfigurationOutput) Name() pulumi.StringOutput { 313 return o.ApplyT(func(v *AnalyticsConfiguration) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) 314 } 315 316 // Configuration for the analytics data export (documented below). 317 func (o AnalyticsConfigurationOutput) StorageClassAnalysis() AnalyticsConfigurationStorageClassAnalysisPtrOutput { 318 return o.ApplyT(func(v *AnalyticsConfiguration) AnalyticsConfigurationStorageClassAnalysisPtrOutput { 319 return v.StorageClassAnalysis 320 }).(AnalyticsConfigurationStorageClassAnalysisPtrOutput) 321 } 322 323 type AnalyticsConfigurationArrayOutput struct{ *pulumi.OutputState } 324 325 func (AnalyticsConfigurationArrayOutput) ElementType() reflect.Type { 326 return reflect.TypeOf((*[]*AnalyticsConfiguration)(nil)).Elem() 327 } 328 329 func (o AnalyticsConfigurationArrayOutput) ToAnalyticsConfigurationArrayOutput() AnalyticsConfigurationArrayOutput { 330 return o 331 } 332 333 func (o AnalyticsConfigurationArrayOutput) ToAnalyticsConfigurationArrayOutputWithContext(ctx context.Context) AnalyticsConfigurationArrayOutput { 334 return o 335 } 336 337 func (o AnalyticsConfigurationArrayOutput) Index(i pulumi.IntInput) AnalyticsConfigurationOutput { 338 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AnalyticsConfiguration { 339 return vs[0].([]*AnalyticsConfiguration)[vs[1].(int)] 340 }).(AnalyticsConfigurationOutput) 341 } 342 343 type AnalyticsConfigurationMapOutput struct{ *pulumi.OutputState } 344 345 func (AnalyticsConfigurationMapOutput) ElementType() reflect.Type { 346 return reflect.TypeOf((*map[string]*AnalyticsConfiguration)(nil)).Elem() 347 } 348 349 func (o AnalyticsConfigurationMapOutput) ToAnalyticsConfigurationMapOutput() AnalyticsConfigurationMapOutput { 350 return o 351 } 352 353 func (o AnalyticsConfigurationMapOutput) ToAnalyticsConfigurationMapOutputWithContext(ctx context.Context) AnalyticsConfigurationMapOutput { 354 return o 355 } 356 357 func (o AnalyticsConfigurationMapOutput) MapIndex(k pulumi.StringInput) AnalyticsConfigurationOutput { 358 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AnalyticsConfiguration { 359 return vs[0].(map[string]*AnalyticsConfiguration)[vs[1].(string)] 360 }).(AnalyticsConfigurationOutput) 361 } 362 363 func init() { 364 pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationInput)(nil)).Elem(), &AnalyticsConfiguration{}) 365 pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationArrayInput)(nil)).Elem(), AnalyticsConfigurationArray{}) 366 pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationMapInput)(nil)).Elem(), AnalyticsConfigurationMap{}) 367 pulumi.RegisterOutputType(AnalyticsConfigurationOutput{}) 368 pulumi.RegisterOutputType(AnalyticsConfigurationArrayOutput{}) 369 pulumi.RegisterOutputType(AnalyticsConfigurationMapOutput{}) 370 }