github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/servicecatalog/product.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 servicecatalog 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 // Manages a Service Catalog Product. 16 // 17 // > **NOTE:** The user or role that uses this resources must have the `cloudformation:GetTemplate` IAM policy permission. This policy permission is required when using the `templatePhysicalId` argument. 18 // 19 // > A "provisioning artifact" is also referred to as a "version." A "distributor" is also referred to as a "vendor." 20 // 21 // ## Example Usage 22 // 23 // ### Basic Usage 24 // 25 // <!--Start PulumiCodeChooser --> 26 // ```go 27 // package main 28 // 29 // import ( 30 // 31 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/servicecatalog" 32 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 33 // 34 // ) 35 // 36 // func main() { 37 // pulumi.Run(func(ctx *pulumi.Context) error { 38 // _, err := servicecatalog.NewProduct(ctx, "example", &servicecatalog.ProductArgs{ 39 // Name: pulumi.String("example"), 40 // Owner: pulumi.String("example-owner"), 41 // Type: pulumi.String("CLOUD_FORMATION_TEMPLATE"), 42 // ProvisioningArtifactParameters: &servicecatalog.ProductProvisioningArtifactParametersArgs{ 43 // TemplateUrl: pulumi.String("https://s3.amazonaws.com/cf-templates-ozkq9d3hgiq2-us-east-1/temp1.json"), 44 // }, 45 // Tags: pulumi.StringMap{ 46 // "foo": pulumi.String("bar"), 47 // }, 48 // }) 49 // if err != nil { 50 // return err 51 // } 52 // return nil 53 // }) 54 // } 55 // 56 // ``` 57 // <!--End PulumiCodeChooser --> 58 // 59 // ## Import 60 // 61 // Using `pulumi import`, import `aws_servicecatalog_product` using the product ID. For example: 62 // 63 // ```sh 64 // $ pulumi import aws:servicecatalog/product:Product example prod-dnigbtea24ste 65 // ``` 66 type Product struct { 67 pulumi.CustomResourceState 68 69 // Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`. 70 AcceptLanguage pulumi.StringPtrOutput `pulumi:"acceptLanguage"` 71 // ARN of the product. 72 Arn pulumi.StringOutput `pulumi:"arn"` 73 // Time when the product was created. 74 CreatedTime pulumi.StringOutput `pulumi:"createdTime"` 75 // Description of the product. 76 Description pulumi.StringOutput `pulumi:"description"` 77 // Distributor (i.e., vendor) of the product. 78 Distributor pulumi.StringOutput `pulumi:"distributor"` 79 // Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths. Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`. 80 HasDefaultPath pulumi.BoolOutput `pulumi:"hasDefaultPath"` 81 // Name of the product. 82 Name pulumi.StringOutput `pulumi:"name"` 83 // Owner of the product. 84 Owner pulumi.StringOutput `pulumi:"owner"` 85 // Configuration block for provisioning artifact (i.e., version) parameters. Detailed below. 86 ProvisioningArtifactParameters ProductProvisioningArtifactParametersOutput `pulumi:"provisioningArtifactParameters"` 87 // Status of the product. 88 Status pulumi.StringOutput `pulumi:"status"` 89 // Support information about the product. 90 SupportDescription pulumi.StringOutput `pulumi:"supportDescription"` 91 // Contact email for product support. 92 SupportEmail pulumi.StringOutput `pulumi:"supportEmail"` 93 // Contact URL for product support. 94 SupportUrl pulumi.StringOutput `pulumi:"supportUrl"` 95 // Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 96 Tags pulumi.StringMapOutput `pulumi:"tags"` 97 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 98 // 99 // Deprecated: Please use `tags` instead. 100 TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` 101 // Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values. 102 // 103 // The following arguments are optional: 104 Type pulumi.StringOutput `pulumi:"type"` 105 } 106 107 // NewProduct registers a new resource with the given unique name, arguments, and options. 108 func NewProduct(ctx *pulumi.Context, 109 name string, args *ProductArgs, opts ...pulumi.ResourceOption) (*Product, error) { 110 if args == nil { 111 return nil, errors.New("missing one or more required arguments") 112 } 113 114 if args.Owner == nil { 115 return nil, errors.New("invalid value for required argument 'Owner'") 116 } 117 if args.ProvisioningArtifactParameters == nil { 118 return nil, errors.New("invalid value for required argument 'ProvisioningArtifactParameters'") 119 } 120 if args.Type == nil { 121 return nil, errors.New("invalid value for required argument 'Type'") 122 } 123 opts = internal.PkgResourceDefaultOpts(opts) 124 var resource Product 125 err := ctx.RegisterResource("aws:servicecatalog/product:Product", name, args, &resource, opts...) 126 if err != nil { 127 return nil, err 128 } 129 return &resource, nil 130 } 131 132 // GetProduct gets an existing Product resource's state with the given name, ID, and optional 133 // state properties that are used to uniquely qualify the lookup (nil if not required). 134 func GetProduct(ctx *pulumi.Context, 135 name string, id pulumi.IDInput, state *ProductState, opts ...pulumi.ResourceOption) (*Product, error) { 136 var resource Product 137 err := ctx.ReadResource("aws:servicecatalog/product:Product", name, id, state, &resource, opts...) 138 if err != nil { 139 return nil, err 140 } 141 return &resource, nil 142 } 143 144 // Input properties used for looking up and filtering Product resources. 145 type productState struct { 146 // Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`. 147 AcceptLanguage *string `pulumi:"acceptLanguage"` 148 // ARN of the product. 149 Arn *string `pulumi:"arn"` 150 // Time when the product was created. 151 CreatedTime *string `pulumi:"createdTime"` 152 // Description of the product. 153 Description *string `pulumi:"description"` 154 // Distributor (i.e., vendor) of the product. 155 Distributor *string `pulumi:"distributor"` 156 // Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths. Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`. 157 HasDefaultPath *bool `pulumi:"hasDefaultPath"` 158 // Name of the product. 159 Name *string `pulumi:"name"` 160 // Owner of the product. 161 Owner *string `pulumi:"owner"` 162 // Configuration block for provisioning artifact (i.e., version) parameters. Detailed below. 163 ProvisioningArtifactParameters *ProductProvisioningArtifactParameters `pulumi:"provisioningArtifactParameters"` 164 // Status of the product. 165 Status *string `pulumi:"status"` 166 // Support information about the product. 167 SupportDescription *string `pulumi:"supportDescription"` 168 // Contact email for product support. 169 SupportEmail *string `pulumi:"supportEmail"` 170 // Contact URL for product support. 171 SupportUrl *string `pulumi:"supportUrl"` 172 // Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 173 Tags map[string]string `pulumi:"tags"` 174 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 175 // 176 // Deprecated: Please use `tags` instead. 177 TagsAll map[string]string `pulumi:"tagsAll"` 178 // Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values. 179 // 180 // The following arguments are optional: 181 Type *string `pulumi:"type"` 182 } 183 184 type ProductState struct { 185 // Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`. 186 AcceptLanguage pulumi.StringPtrInput 187 // ARN of the product. 188 Arn pulumi.StringPtrInput 189 // Time when the product was created. 190 CreatedTime pulumi.StringPtrInput 191 // Description of the product. 192 Description pulumi.StringPtrInput 193 // Distributor (i.e., vendor) of the product. 194 Distributor pulumi.StringPtrInput 195 // Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths. Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`. 196 HasDefaultPath pulumi.BoolPtrInput 197 // Name of the product. 198 Name pulumi.StringPtrInput 199 // Owner of the product. 200 Owner pulumi.StringPtrInput 201 // Configuration block for provisioning artifact (i.e., version) parameters. Detailed below. 202 ProvisioningArtifactParameters ProductProvisioningArtifactParametersPtrInput 203 // Status of the product. 204 Status pulumi.StringPtrInput 205 // Support information about the product. 206 SupportDescription pulumi.StringPtrInput 207 // Contact email for product support. 208 SupportEmail pulumi.StringPtrInput 209 // Contact URL for product support. 210 SupportUrl pulumi.StringPtrInput 211 // Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 212 Tags pulumi.StringMapInput 213 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 214 // 215 // Deprecated: Please use `tags` instead. 216 TagsAll pulumi.StringMapInput 217 // Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values. 218 // 219 // The following arguments are optional: 220 Type pulumi.StringPtrInput 221 } 222 223 func (ProductState) ElementType() reflect.Type { 224 return reflect.TypeOf((*productState)(nil)).Elem() 225 } 226 227 type productArgs struct { 228 // Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`. 229 AcceptLanguage *string `pulumi:"acceptLanguage"` 230 // Description of the product. 231 Description *string `pulumi:"description"` 232 // Distributor (i.e., vendor) of the product. 233 Distributor *string `pulumi:"distributor"` 234 // Name of the product. 235 Name *string `pulumi:"name"` 236 // Owner of the product. 237 Owner string `pulumi:"owner"` 238 // Configuration block for provisioning artifact (i.e., version) parameters. Detailed below. 239 ProvisioningArtifactParameters ProductProvisioningArtifactParameters `pulumi:"provisioningArtifactParameters"` 240 // Support information about the product. 241 SupportDescription *string `pulumi:"supportDescription"` 242 // Contact email for product support. 243 SupportEmail *string `pulumi:"supportEmail"` 244 // Contact URL for product support. 245 SupportUrl *string `pulumi:"supportUrl"` 246 // Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 247 Tags map[string]string `pulumi:"tags"` 248 // Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values. 249 // 250 // The following arguments are optional: 251 Type string `pulumi:"type"` 252 } 253 254 // The set of arguments for constructing a Product resource. 255 type ProductArgs struct { 256 // Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`. 257 AcceptLanguage pulumi.StringPtrInput 258 // Description of the product. 259 Description pulumi.StringPtrInput 260 // Distributor (i.e., vendor) of the product. 261 Distributor pulumi.StringPtrInput 262 // Name of the product. 263 Name pulumi.StringPtrInput 264 // Owner of the product. 265 Owner pulumi.StringInput 266 // Configuration block for provisioning artifact (i.e., version) parameters. Detailed below. 267 ProvisioningArtifactParameters ProductProvisioningArtifactParametersInput 268 // Support information about the product. 269 SupportDescription pulumi.StringPtrInput 270 // Contact email for product support. 271 SupportEmail pulumi.StringPtrInput 272 // Contact URL for product support. 273 SupportUrl pulumi.StringPtrInput 274 // Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 275 Tags pulumi.StringMapInput 276 // Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values. 277 // 278 // The following arguments are optional: 279 Type pulumi.StringInput 280 } 281 282 func (ProductArgs) ElementType() reflect.Type { 283 return reflect.TypeOf((*productArgs)(nil)).Elem() 284 } 285 286 type ProductInput interface { 287 pulumi.Input 288 289 ToProductOutput() ProductOutput 290 ToProductOutputWithContext(ctx context.Context) ProductOutput 291 } 292 293 func (*Product) ElementType() reflect.Type { 294 return reflect.TypeOf((**Product)(nil)).Elem() 295 } 296 297 func (i *Product) ToProductOutput() ProductOutput { 298 return i.ToProductOutputWithContext(context.Background()) 299 } 300 301 func (i *Product) ToProductOutputWithContext(ctx context.Context) ProductOutput { 302 return pulumi.ToOutputWithContext(ctx, i).(ProductOutput) 303 } 304 305 // ProductArrayInput is an input type that accepts ProductArray and ProductArrayOutput values. 306 // You can construct a concrete instance of `ProductArrayInput` via: 307 // 308 // ProductArray{ ProductArgs{...} } 309 type ProductArrayInput interface { 310 pulumi.Input 311 312 ToProductArrayOutput() ProductArrayOutput 313 ToProductArrayOutputWithContext(context.Context) ProductArrayOutput 314 } 315 316 type ProductArray []ProductInput 317 318 func (ProductArray) ElementType() reflect.Type { 319 return reflect.TypeOf((*[]*Product)(nil)).Elem() 320 } 321 322 func (i ProductArray) ToProductArrayOutput() ProductArrayOutput { 323 return i.ToProductArrayOutputWithContext(context.Background()) 324 } 325 326 func (i ProductArray) ToProductArrayOutputWithContext(ctx context.Context) ProductArrayOutput { 327 return pulumi.ToOutputWithContext(ctx, i).(ProductArrayOutput) 328 } 329 330 // ProductMapInput is an input type that accepts ProductMap and ProductMapOutput values. 331 // You can construct a concrete instance of `ProductMapInput` via: 332 // 333 // ProductMap{ "key": ProductArgs{...} } 334 type ProductMapInput interface { 335 pulumi.Input 336 337 ToProductMapOutput() ProductMapOutput 338 ToProductMapOutputWithContext(context.Context) ProductMapOutput 339 } 340 341 type ProductMap map[string]ProductInput 342 343 func (ProductMap) ElementType() reflect.Type { 344 return reflect.TypeOf((*map[string]*Product)(nil)).Elem() 345 } 346 347 func (i ProductMap) ToProductMapOutput() ProductMapOutput { 348 return i.ToProductMapOutputWithContext(context.Background()) 349 } 350 351 func (i ProductMap) ToProductMapOutputWithContext(ctx context.Context) ProductMapOutput { 352 return pulumi.ToOutputWithContext(ctx, i).(ProductMapOutput) 353 } 354 355 type ProductOutput struct{ *pulumi.OutputState } 356 357 func (ProductOutput) ElementType() reflect.Type { 358 return reflect.TypeOf((**Product)(nil)).Elem() 359 } 360 361 func (o ProductOutput) ToProductOutput() ProductOutput { 362 return o 363 } 364 365 func (o ProductOutput) ToProductOutputWithContext(ctx context.Context) ProductOutput { 366 return o 367 } 368 369 // Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`. 370 func (o ProductOutput) AcceptLanguage() pulumi.StringPtrOutput { 371 return o.ApplyT(func(v *Product) pulumi.StringPtrOutput { return v.AcceptLanguage }).(pulumi.StringPtrOutput) 372 } 373 374 // ARN of the product. 375 func (o ProductOutput) Arn() pulumi.StringOutput { 376 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) 377 } 378 379 // Time when the product was created. 380 func (o ProductOutput) CreatedTime() pulumi.StringOutput { 381 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.CreatedTime }).(pulumi.StringOutput) 382 } 383 384 // Description of the product. 385 func (o ProductOutput) Description() pulumi.StringOutput { 386 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) 387 } 388 389 // Distributor (i.e., vendor) of the product. 390 func (o ProductOutput) Distributor() pulumi.StringOutput { 391 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Distributor }).(pulumi.StringOutput) 392 } 393 394 // Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths. Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`. 395 func (o ProductOutput) HasDefaultPath() pulumi.BoolOutput { 396 return o.ApplyT(func(v *Product) pulumi.BoolOutput { return v.HasDefaultPath }).(pulumi.BoolOutput) 397 } 398 399 // Name of the product. 400 func (o ProductOutput) Name() pulumi.StringOutput { 401 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) 402 } 403 404 // Owner of the product. 405 func (o ProductOutput) Owner() pulumi.StringOutput { 406 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Owner }).(pulumi.StringOutput) 407 } 408 409 // Configuration block for provisioning artifact (i.e., version) parameters. Detailed below. 410 func (o ProductOutput) ProvisioningArtifactParameters() ProductProvisioningArtifactParametersOutput { 411 return o.ApplyT(func(v *Product) ProductProvisioningArtifactParametersOutput { return v.ProvisioningArtifactParameters }).(ProductProvisioningArtifactParametersOutput) 412 } 413 414 // Status of the product. 415 func (o ProductOutput) Status() pulumi.StringOutput { 416 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput) 417 } 418 419 // Support information about the product. 420 func (o ProductOutput) SupportDescription() pulumi.StringOutput { 421 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.SupportDescription }).(pulumi.StringOutput) 422 } 423 424 // Contact email for product support. 425 func (o ProductOutput) SupportEmail() pulumi.StringOutput { 426 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.SupportEmail }).(pulumi.StringOutput) 427 } 428 429 // Contact URL for product support. 430 func (o ProductOutput) SupportUrl() pulumi.StringOutput { 431 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.SupportUrl }).(pulumi.StringOutput) 432 } 433 434 // Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 435 func (o ProductOutput) Tags() pulumi.StringMapOutput { 436 return o.ApplyT(func(v *Product) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) 437 } 438 439 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 440 // 441 // Deprecated: Please use `tags` instead. 442 func (o ProductOutput) TagsAll() pulumi.StringMapOutput { 443 return o.ApplyT(func(v *Product) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) 444 } 445 446 // Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values. 447 // 448 // The following arguments are optional: 449 func (o ProductOutput) Type() pulumi.StringOutput { 450 return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) 451 } 452 453 type ProductArrayOutput struct{ *pulumi.OutputState } 454 455 func (ProductArrayOutput) ElementType() reflect.Type { 456 return reflect.TypeOf((*[]*Product)(nil)).Elem() 457 } 458 459 func (o ProductArrayOutput) ToProductArrayOutput() ProductArrayOutput { 460 return o 461 } 462 463 func (o ProductArrayOutput) ToProductArrayOutputWithContext(ctx context.Context) ProductArrayOutput { 464 return o 465 } 466 467 func (o ProductArrayOutput) Index(i pulumi.IntInput) ProductOutput { 468 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Product { 469 return vs[0].([]*Product)[vs[1].(int)] 470 }).(ProductOutput) 471 } 472 473 type ProductMapOutput struct{ *pulumi.OutputState } 474 475 func (ProductMapOutput) ElementType() reflect.Type { 476 return reflect.TypeOf((*map[string]*Product)(nil)).Elem() 477 } 478 479 func (o ProductMapOutput) ToProductMapOutput() ProductMapOutput { 480 return o 481 } 482 483 func (o ProductMapOutput) ToProductMapOutputWithContext(ctx context.Context) ProductMapOutput { 484 return o 485 } 486 487 func (o ProductMapOutput) MapIndex(k pulumi.StringInput) ProductOutput { 488 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Product { 489 return vs[0].(map[string]*Product)[vs[1].(string)] 490 }).(ProductOutput) 491 } 492 493 func init() { 494 pulumi.RegisterInputType(reflect.TypeOf((*ProductInput)(nil)).Elem(), &Product{}) 495 pulumi.RegisterInputType(reflect.TypeOf((*ProductArrayInput)(nil)).Elem(), ProductArray{}) 496 pulumi.RegisterInputType(reflect.TypeOf((*ProductMapInput)(nil)).Elem(), ProductMap{}) 497 pulumi.RegisterOutputType(ProductOutput{}) 498 pulumi.RegisterOutputType(ProductArrayOutput{}) 499 pulumi.RegisterOutputType(ProductMapOutput{}) 500 }