github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/securityhub/standardsSubscription.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 securityhub
     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  // Subscribes to a Security Hub standard.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"fmt"
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    28  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/securityhub"
    29  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    30  //
    31  // )
    32  //
    33  //	func main() {
    34  //		pulumi.Run(func(ctx *pulumi.Context) error {
    35  //			example, err := securityhub.NewAccount(ctx, "example", nil)
    36  //			if err != nil {
    37  //				return err
    38  //			}
    39  //			current, err := aws.GetRegion(ctx, nil, nil)
    40  //			if err != nil {
    41  //				return err
    42  //			}
    43  //			_, err = securityhub.NewStandardsSubscription(ctx, "cis", &securityhub.StandardsSubscriptionArgs{
    44  //				StandardsArn: pulumi.String("arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0"),
    45  //			}, pulumi.DependsOn([]pulumi.Resource{
    46  //				example,
    47  //			}))
    48  //			if err != nil {
    49  //				return err
    50  //			}
    51  //			_, err = securityhub.NewStandardsSubscription(ctx, "pci_321", &securityhub.StandardsSubscriptionArgs{
    52  //				StandardsArn: pulumi.String(fmt.Sprintf("arn:aws:securityhub:%v::standards/pci-dss/v/3.2.1", current.Name)),
    53  //			}, pulumi.DependsOn([]pulumi.Resource{
    54  //				example,
    55  //			}))
    56  //			if err != nil {
    57  //				return err
    58  //			}
    59  //			return nil
    60  //		})
    61  //	}
    62  //
    63  // ```
    64  // <!--End PulumiCodeChooser -->
    65  //
    66  // ## Import
    67  //
    68  // Using `pulumi import`, import Security Hub standards subscriptions using the standards subscription ARN. For example:
    69  //
    70  // ```sh
    71  // $ pulumi import aws:securityhub/standardsSubscription:StandardsSubscription cis arn:aws:securityhub:eu-west-1:123456789012:subscription/cis-aws-foundations-benchmark/v/1.2.0
    72  // ```
    73  // ```sh
    74  // $ pulumi import aws:securityhub/standardsSubscription:StandardsSubscription pci_321 arn:aws:securityhub:eu-west-1:123456789012:subscription/pci-dss/v/3.2.1
    75  // ```
    76  // ```sh
    77  // $ pulumi import aws:securityhub/standardsSubscription:StandardsSubscription nist_800_53_rev_5 arn:aws:securityhub:eu-west-1:123456789012:subscription/nist-800-53/v/5.0.0
    78  // ```
    79  type StandardsSubscription struct {
    80  	pulumi.CustomResourceState
    81  
    82  	// The ARN of a standard - see below.
    83  	//
    84  	// Currently available standards (remember to replace `${var.region}` as appropriate):
    85  	//
    86  	// | Name                                     | ARN                                                                                             |
    87  	// |------------------------------------------|-------------------------------------------------------------------------------------------------|
    88  	// | AWS Foundational Security Best Practices | `arn:aws:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |
    89  	// | CIS AWS Foundations Benchmark v1.2.0     | `arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0`                           |
    90  	// | CIS AWS Foundations Benchmark v1.4.0     | `arn:aws:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0`            |
    91  	// | NIST SP 800-53 Rev. 5                    | `arn:aws:securityhub:${var.region}::standards/nist-800-53/v/5.0.0`                              |
    92  	// | PCI DSS                                  | `arn:aws:securityhub:${var.region}::standards/pci-dss/v/3.2.1`                                  |
    93  	StandardsArn pulumi.StringOutput `pulumi:"standardsArn"`
    94  }
    95  
    96  // NewStandardsSubscription registers a new resource with the given unique name, arguments, and options.
    97  func NewStandardsSubscription(ctx *pulumi.Context,
    98  	name string, args *StandardsSubscriptionArgs, opts ...pulumi.ResourceOption) (*StandardsSubscription, error) {
    99  	if args == nil {
   100  		return nil, errors.New("missing one or more required arguments")
   101  	}
   102  
   103  	if args.StandardsArn == nil {
   104  		return nil, errors.New("invalid value for required argument 'StandardsArn'")
   105  	}
   106  	opts = internal.PkgResourceDefaultOpts(opts)
   107  	var resource StandardsSubscription
   108  	err := ctx.RegisterResource("aws:securityhub/standardsSubscription:StandardsSubscription", name, args, &resource, opts...)
   109  	if err != nil {
   110  		return nil, err
   111  	}
   112  	return &resource, nil
   113  }
   114  
   115  // GetStandardsSubscription gets an existing StandardsSubscription resource's state with the given name, ID, and optional
   116  // state properties that are used to uniquely qualify the lookup (nil if not required).
   117  func GetStandardsSubscription(ctx *pulumi.Context,
   118  	name string, id pulumi.IDInput, state *StandardsSubscriptionState, opts ...pulumi.ResourceOption) (*StandardsSubscription, error) {
   119  	var resource StandardsSubscription
   120  	err := ctx.ReadResource("aws:securityhub/standardsSubscription:StandardsSubscription", name, id, state, &resource, opts...)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &resource, nil
   125  }
   126  
   127  // Input properties used for looking up and filtering StandardsSubscription resources.
   128  type standardsSubscriptionState struct {
   129  	// The ARN of a standard - see below.
   130  	//
   131  	// Currently available standards (remember to replace `${var.region}` as appropriate):
   132  	//
   133  	// | Name                                     | ARN                                                                                             |
   134  	// |------------------------------------------|-------------------------------------------------------------------------------------------------|
   135  	// | AWS Foundational Security Best Practices | `arn:aws:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |
   136  	// | CIS AWS Foundations Benchmark v1.2.0     | `arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0`                           |
   137  	// | CIS AWS Foundations Benchmark v1.4.0     | `arn:aws:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0`            |
   138  	// | NIST SP 800-53 Rev. 5                    | `arn:aws:securityhub:${var.region}::standards/nist-800-53/v/5.0.0`                              |
   139  	// | PCI DSS                                  | `arn:aws:securityhub:${var.region}::standards/pci-dss/v/3.2.1`                                  |
   140  	StandardsArn *string `pulumi:"standardsArn"`
   141  }
   142  
   143  type StandardsSubscriptionState struct {
   144  	// The ARN of a standard - see below.
   145  	//
   146  	// Currently available standards (remember to replace `${var.region}` as appropriate):
   147  	//
   148  	// | Name                                     | ARN                                                                                             |
   149  	// |------------------------------------------|-------------------------------------------------------------------------------------------------|
   150  	// | AWS Foundational Security Best Practices | `arn:aws:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |
   151  	// | CIS AWS Foundations Benchmark v1.2.0     | `arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0`                           |
   152  	// | CIS AWS Foundations Benchmark v1.4.0     | `arn:aws:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0`            |
   153  	// | NIST SP 800-53 Rev. 5                    | `arn:aws:securityhub:${var.region}::standards/nist-800-53/v/5.0.0`                              |
   154  	// | PCI DSS                                  | `arn:aws:securityhub:${var.region}::standards/pci-dss/v/3.2.1`                                  |
   155  	StandardsArn pulumi.StringPtrInput
   156  }
   157  
   158  func (StandardsSubscriptionState) ElementType() reflect.Type {
   159  	return reflect.TypeOf((*standardsSubscriptionState)(nil)).Elem()
   160  }
   161  
   162  type standardsSubscriptionArgs struct {
   163  	// The ARN of a standard - see below.
   164  	//
   165  	// Currently available standards (remember to replace `${var.region}` as appropriate):
   166  	//
   167  	// | Name                                     | ARN                                                                                             |
   168  	// |------------------------------------------|-------------------------------------------------------------------------------------------------|
   169  	// | AWS Foundational Security Best Practices | `arn:aws:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |
   170  	// | CIS AWS Foundations Benchmark v1.2.0     | `arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0`                           |
   171  	// | CIS AWS Foundations Benchmark v1.4.0     | `arn:aws:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0`            |
   172  	// | NIST SP 800-53 Rev. 5                    | `arn:aws:securityhub:${var.region}::standards/nist-800-53/v/5.0.0`                              |
   173  	// | PCI DSS                                  | `arn:aws:securityhub:${var.region}::standards/pci-dss/v/3.2.1`                                  |
   174  	StandardsArn string `pulumi:"standardsArn"`
   175  }
   176  
   177  // The set of arguments for constructing a StandardsSubscription resource.
   178  type StandardsSubscriptionArgs struct {
   179  	// The ARN of a standard - see below.
   180  	//
   181  	// Currently available standards (remember to replace `${var.region}` as appropriate):
   182  	//
   183  	// | Name                                     | ARN                                                                                             |
   184  	// |------------------------------------------|-------------------------------------------------------------------------------------------------|
   185  	// | AWS Foundational Security Best Practices | `arn:aws:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |
   186  	// | CIS AWS Foundations Benchmark v1.2.0     | `arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0`                           |
   187  	// | CIS AWS Foundations Benchmark v1.4.0     | `arn:aws:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0`            |
   188  	// | NIST SP 800-53 Rev. 5                    | `arn:aws:securityhub:${var.region}::standards/nist-800-53/v/5.0.0`                              |
   189  	// | PCI DSS                                  | `arn:aws:securityhub:${var.region}::standards/pci-dss/v/3.2.1`                                  |
   190  	StandardsArn pulumi.StringInput
   191  }
   192  
   193  func (StandardsSubscriptionArgs) ElementType() reflect.Type {
   194  	return reflect.TypeOf((*standardsSubscriptionArgs)(nil)).Elem()
   195  }
   196  
   197  type StandardsSubscriptionInput interface {
   198  	pulumi.Input
   199  
   200  	ToStandardsSubscriptionOutput() StandardsSubscriptionOutput
   201  	ToStandardsSubscriptionOutputWithContext(ctx context.Context) StandardsSubscriptionOutput
   202  }
   203  
   204  func (*StandardsSubscription) ElementType() reflect.Type {
   205  	return reflect.TypeOf((**StandardsSubscription)(nil)).Elem()
   206  }
   207  
   208  func (i *StandardsSubscription) ToStandardsSubscriptionOutput() StandardsSubscriptionOutput {
   209  	return i.ToStandardsSubscriptionOutputWithContext(context.Background())
   210  }
   211  
   212  func (i *StandardsSubscription) ToStandardsSubscriptionOutputWithContext(ctx context.Context) StandardsSubscriptionOutput {
   213  	return pulumi.ToOutputWithContext(ctx, i).(StandardsSubscriptionOutput)
   214  }
   215  
   216  // StandardsSubscriptionArrayInput is an input type that accepts StandardsSubscriptionArray and StandardsSubscriptionArrayOutput values.
   217  // You can construct a concrete instance of `StandardsSubscriptionArrayInput` via:
   218  //
   219  //	StandardsSubscriptionArray{ StandardsSubscriptionArgs{...} }
   220  type StandardsSubscriptionArrayInput interface {
   221  	pulumi.Input
   222  
   223  	ToStandardsSubscriptionArrayOutput() StandardsSubscriptionArrayOutput
   224  	ToStandardsSubscriptionArrayOutputWithContext(context.Context) StandardsSubscriptionArrayOutput
   225  }
   226  
   227  type StandardsSubscriptionArray []StandardsSubscriptionInput
   228  
   229  func (StandardsSubscriptionArray) ElementType() reflect.Type {
   230  	return reflect.TypeOf((*[]*StandardsSubscription)(nil)).Elem()
   231  }
   232  
   233  func (i StandardsSubscriptionArray) ToStandardsSubscriptionArrayOutput() StandardsSubscriptionArrayOutput {
   234  	return i.ToStandardsSubscriptionArrayOutputWithContext(context.Background())
   235  }
   236  
   237  func (i StandardsSubscriptionArray) ToStandardsSubscriptionArrayOutputWithContext(ctx context.Context) StandardsSubscriptionArrayOutput {
   238  	return pulumi.ToOutputWithContext(ctx, i).(StandardsSubscriptionArrayOutput)
   239  }
   240  
   241  // StandardsSubscriptionMapInput is an input type that accepts StandardsSubscriptionMap and StandardsSubscriptionMapOutput values.
   242  // You can construct a concrete instance of `StandardsSubscriptionMapInput` via:
   243  //
   244  //	StandardsSubscriptionMap{ "key": StandardsSubscriptionArgs{...} }
   245  type StandardsSubscriptionMapInput interface {
   246  	pulumi.Input
   247  
   248  	ToStandardsSubscriptionMapOutput() StandardsSubscriptionMapOutput
   249  	ToStandardsSubscriptionMapOutputWithContext(context.Context) StandardsSubscriptionMapOutput
   250  }
   251  
   252  type StandardsSubscriptionMap map[string]StandardsSubscriptionInput
   253  
   254  func (StandardsSubscriptionMap) ElementType() reflect.Type {
   255  	return reflect.TypeOf((*map[string]*StandardsSubscription)(nil)).Elem()
   256  }
   257  
   258  func (i StandardsSubscriptionMap) ToStandardsSubscriptionMapOutput() StandardsSubscriptionMapOutput {
   259  	return i.ToStandardsSubscriptionMapOutputWithContext(context.Background())
   260  }
   261  
   262  func (i StandardsSubscriptionMap) ToStandardsSubscriptionMapOutputWithContext(ctx context.Context) StandardsSubscriptionMapOutput {
   263  	return pulumi.ToOutputWithContext(ctx, i).(StandardsSubscriptionMapOutput)
   264  }
   265  
   266  type StandardsSubscriptionOutput struct{ *pulumi.OutputState }
   267  
   268  func (StandardsSubscriptionOutput) ElementType() reflect.Type {
   269  	return reflect.TypeOf((**StandardsSubscription)(nil)).Elem()
   270  }
   271  
   272  func (o StandardsSubscriptionOutput) ToStandardsSubscriptionOutput() StandardsSubscriptionOutput {
   273  	return o
   274  }
   275  
   276  func (o StandardsSubscriptionOutput) ToStandardsSubscriptionOutputWithContext(ctx context.Context) StandardsSubscriptionOutput {
   277  	return o
   278  }
   279  
   280  // The ARN of a standard - see below.
   281  //
   282  // Currently available standards (remember to replace `${var.region}` as appropriate):
   283  //
   284  // | Name                                     | ARN                                                                                             |
   285  // |------------------------------------------|-------------------------------------------------------------------------------------------------|
   286  // | AWS Foundational Security Best Practices | `arn:aws:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |
   287  // | CIS AWS Foundations Benchmark v1.2.0     | `arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0`                           |
   288  // | CIS AWS Foundations Benchmark v1.4.0     | `arn:aws:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0`            |
   289  // | NIST SP 800-53 Rev. 5                    | `arn:aws:securityhub:${var.region}::standards/nist-800-53/v/5.0.0`                              |
   290  // | PCI DSS                                  | `arn:aws:securityhub:${var.region}::standards/pci-dss/v/3.2.1`                                  |
   291  func (o StandardsSubscriptionOutput) StandardsArn() pulumi.StringOutput {
   292  	return o.ApplyT(func(v *StandardsSubscription) pulumi.StringOutput { return v.StandardsArn }).(pulumi.StringOutput)
   293  }
   294  
   295  type StandardsSubscriptionArrayOutput struct{ *pulumi.OutputState }
   296  
   297  func (StandardsSubscriptionArrayOutput) ElementType() reflect.Type {
   298  	return reflect.TypeOf((*[]*StandardsSubscription)(nil)).Elem()
   299  }
   300  
   301  func (o StandardsSubscriptionArrayOutput) ToStandardsSubscriptionArrayOutput() StandardsSubscriptionArrayOutput {
   302  	return o
   303  }
   304  
   305  func (o StandardsSubscriptionArrayOutput) ToStandardsSubscriptionArrayOutputWithContext(ctx context.Context) StandardsSubscriptionArrayOutput {
   306  	return o
   307  }
   308  
   309  func (o StandardsSubscriptionArrayOutput) Index(i pulumi.IntInput) StandardsSubscriptionOutput {
   310  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *StandardsSubscription {
   311  		return vs[0].([]*StandardsSubscription)[vs[1].(int)]
   312  	}).(StandardsSubscriptionOutput)
   313  }
   314  
   315  type StandardsSubscriptionMapOutput struct{ *pulumi.OutputState }
   316  
   317  func (StandardsSubscriptionMapOutput) ElementType() reflect.Type {
   318  	return reflect.TypeOf((*map[string]*StandardsSubscription)(nil)).Elem()
   319  }
   320  
   321  func (o StandardsSubscriptionMapOutput) ToStandardsSubscriptionMapOutput() StandardsSubscriptionMapOutput {
   322  	return o
   323  }
   324  
   325  func (o StandardsSubscriptionMapOutput) ToStandardsSubscriptionMapOutputWithContext(ctx context.Context) StandardsSubscriptionMapOutput {
   326  	return o
   327  }
   328  
   329  func (o StandardsSubscriptionMapOutput) MapIndex(k pulumi.StringInput) StandardsSubscriptionOutput {
   330  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *StandardsSubscription {
   331  		return vs[0].(map[string]*StandardsSubscription)[vs[1].(string)]
   332  	}).(StandardsSubscriptionOutput)
   333  }
   334  
   335  func init() {
   336  	pulumi.RegisterInputType(reflect.TypeOf((*StandardsSubscriptionInput)(nil)).Elem(), &StandardsSubscription{})
   337  	pulumi.RegisterInputType(reflect.TypeOf((*StandardsSubscriptionArrayInput)(nil)).Elem(), StandardsSubscriptionArray{})
   338  	pulumi.RegisterInputType(reflect.TypeOf((*StandardsSubscriptionMapInput)(nil)).Elem(), StandardsSubscriptionMap{})
   339  	pulumi.RegisterOutputType(StandardsSubscriptionOutput{})
   340  	pulumi.RegisterOutputType(StandardsSubscriptionArrayOutput{})
   341  	pulumi.RegisterOutputType(StandardsSubscriptionMapOutput{})
   342  }