github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/acmpca/certificate.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 acmpca
     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 resource to issue a certificate using AWS Certificate Manager Private Certificate Authority (ACM PCA).
    16  //
    17  // Certificates created using `acmpca.Certificate` are not eligible for automatic renewal,
    18  // and must be replaced instead.
    19  // To issue a renewable certificate using an ACM PCA, create a `acm.Certificate`
    20  // with the parameter `certificateAuthorityArn`.
    21  //
    22  // ## Example Usage
    23  //
    24  // ### Basic
    25  //
    26  // <!--Start PulumiCodeChooser -->
    27  // ```go
    28  // package main
    29  //
    30  // import (
    31  //
    32  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/acmpca"
    33  //	"github.com/pulumi/pulumi-tls/sdk/v4/go/tls"
    34  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    35  //
    36  // )
    37  //
    38  //	func main() {
    39  //		pulumi.Run(func(ctx *pulumi.Context) error {
    40  //			exampleCertificateAuthority, err := acmpca.NewCertificateAuthority(ctx, "example", &acmpca.CertificateAuthorityArgs{
    41  //				CertificateAuthorityConfiguration: &acmpca.CertificateAuthorityCertificateAuthorityConfigurationArgs{
    42  //					KeyAlgorithm:     pulumi.String("RSA_4096"),
    43  //					SigningAlgorithm: pulumi.String("SHA512WITHRSA"),
    44  //					Subject: &acmpca.CertificateAuthorityCertificateAuthorityConfigurationSubjectArgs{
    45  //						CommonName: pulumi.String("example.com"),
    46  //					},
    47  //				},
    48  //				PermanentDeletionTimeInDays: pulumi.Int(7),
    49  //			})
    50  //			if err != nil {
    51  //				return err
    52  //			}
    53  //			key, err := tls.NewPrivateKey(ctx, "key", &tls.PrivateKeyArgs{
    54  //				Algorithm: pulumi.String("RSA"),
    55  //			})
    56  //			if err != nil {
    57  //				return err
    58  //			}
    59  //			csr, err := tls.NewCertRequest(ctx, "csr", &tls.CertRequestArgs{
    60  //				PrivateKeyPem: key.PrivateKeyPem,
    61  //				Subject: &tls.CertRequestSubjectArgs{
    62  //					CommonName: pulumi.String("example"),
    63  //				},
    64  //			})
    65  //			if err != nil {
    66  //				return err
    67  //			}
    68  //			_, err = acmpca.NewCertificate(ctx, "example", &acmpca.CertificateArgs{
    69  //				CertificateAuthorityArn:   exampleCertificateAuthority.Arn,
    70  //				CertificateSigningRequest: csr.CertRequestPem,
    71  //				SigningAlgorithm:          pulumi.String("SHA256WITHRSA"),
    72  //				Validity: &acmpca.CertificateValidityArgs{
    73  //					Type:  pulumi.String("YEARS"),
    74  //					Value: pulumi.String("1"),
    75  //				},
    76  //			})
    77  //			if err != nil {
    78  //				return err
    79  //			}
    80  //			return nil
    81  //		})
    82  //	}
    83  //
    84  // ```
    85  // <!--End PulumiCodeChooser -->
    86  //
    87  // ## Import
    88  //
    89  // Using `pulumi import`, import ACM PCA Certificates using their ARN. For example:
    90  //
    91  // ```sh
    92  // $ pulumi import aws:acmpca/certificate:Certificate cert arn:aws:acm-pca:eu-west-1:675225743824:certificate-authority/08319ede-83g9-1400-8f21-c7d12b2b6edb/certificate/a4e9c2aa4bcfab625g1b9136464cd3a
    93  // ```
    94  type Certificate struct {
    95  	pulumi.CustomResourceState
    96  
    97  	// Specifies X.509 certificate information to be included in the issued certificate. To use with API Passthrough templates
    98  	ApiPassthrough pulumi.StringPtrOutput `pulumi:"apiPassthrough"`
    99  	// ARN of the certificate.
   100  	Arn pulumi.StringOutput `pulumi:"arn"`
   101  	// PEM-encoded certificate value.
   102  	Certificate pulumi.StringOutput `pulumi:"certificate"`
   103  	// ARN of the certificate authority.
   104  	CertificateAuthorityArn pulumi.StringOutput `pulumi:"certificateAuthorityArn"`
   105  	// PEM-encoded certificate chain that includes any intermediate certificates and chains up to root CA.
   106  	CertificateChain pulumi.StringOutput `pulumi:"certificateChain"`
   107  	// Certificate Signing Request in PEM format.
   108  	CertificateSigningRequest pulumi.StringOutput `pulumi:"certificateSigningRequest"`
   109  	// Algorithm to use to sign certificate requests. Valid values: `SHA256WITHRSA`, `SHA256WITHECDSA`, `SHA384WITHRSA`, `SHA384WITHECDSA`, `SHA512WITHRSA`, `SHA512WITHECDSA`.
   110  	SigningAlgorithm pulumi.StringOutput `pulumi:"signingAlgorithm"`
   111  	// Template to use when issuing a certificate.
   112  	// See [ACM PCA Documentation](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html) for more information.
   113  	TemplateArn pulumi.StringPtrOutput `pulumi:"templateArn"`
   114  	// Configures end of the validity period for the certificate. See validity block below.
   115  	Validity CertificateValidityOutput `pulumi:"validity"`
   116  }
   117  
   118  // NewCertificate registers a new resource with the given unique name, arguments, and options.
   119  func NewCertificate(ctx *pulumi.Context,
   120  	name string, args *CertificateArgs, opts ...pulumi.ResourceOption) (*Certificate, error) {
   121  	if args == nil {
   122  		return nil, errors.New("missing one or more required arguments")
   123  	}
   124  
   125  	if args.CertificateAuthorityArn == nil {
   126  		return nil, errors.New("invalid value for required argument 'CertificateAuthorityArn'")
   127  	}
   128  	if args.CertificateSigningRequest == nil {
   129  		return nil, errors.New("invalid value for required argument 'CertificateSigningRequest'")
   130  	}
   131  	if args.SigningAlgorithm == nil {
   132  		return nil, errors.New("invalid value for required argument 'SigningAlgorithm'")
   133  	}
   134  	if args.Validity == nil {
   135  		return nil, errors.New("invalid value for required argument 'Validity'")
   136  	}
   137  	opts = internal.PkgResourceDefaultOpts(opts)
   138  	var resource Certificate
   139  	err := ctx.RegisterResource("aws:acmpca/certificate:Certificate", name, args, &resource, opts...)
   140  	if err != nil {
   141  		return nil, err
   142  	}
   143  	return &resource, nil
   144  }
   145  
   146  // GetCertificate gets an existing Certificate resource's state with the given name, ID, and optional
   147  // state properties that are used to uniquely qualify the lookup (nil if not required).
   148  func GetCertificate(ctx *pulumi.Context,
   149  	name string, id pulumi.IDInput, state *CertificateState, opts ...pulumi.ResourceOption) (*Certificate, error) {
   150  	var resource Certificate
   151  	err := ctx.ReadResource("aws:acmpca/certificate:Certificate", name, id, state, &resource, opts...)
   152  	if err != nil {
   153  		return nil, err
   154  	}
   155  	return &resource, nil
   156  }
   157  
   158  // Input properties used for looking up and filtering Certificate resources.
   159  type certificateState struct {
   160  	// Specifies X.509 certificate information to be included in the issued certificate. To use with API Passthrough templates
   161  	ApiPassthrough *string `pulumi:"apiPassthrough"`
   162  	// ARN of the certificate.
   163  	Arn *string `pulumi:"arn"`
   164  	// PEM-encoded certificate value.
   165  	Certificate *string `pulumi:"certificate"`
   166  	// ARN of the certificate authority.
   167  	CertificateAuthorityArn *string `pulumi:"certificateAuthorityArn"`
   168  	// PEM-encoded certificate chain that includes any intermediate certificates and chains up to root CA.
   169  	CertificateChain *string `pulumi:"certificateChain"`
   170  	// Certificate Signing Request in PEM format.
   171  	CertificateSigningRequest *string `pulumi:"certificateSigningRequest"`
   172  	// Algorithm to use to sign certificate requests. Valid values: `SHA256WITHRSA`, `SHA256WITHECDSA`, `SHA384WITHRSA`, `SHA384WITHECDSA`, `SHA512WITHRSA`, `SHA512WITHECDSA`.
   173  	SigningAlgorithm *string `pulumi:"signingAlgorithm"`
   174  	// Template to use when issuing a certificate.
   175  	// See [ACM PCA Documentation](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html) for more information.
   176  	TemplateArn *string `pulumi:"templateArn"`
   177  	// Configures end of the validity period for the certificate. See validity block below.
   178  	Validity *CertificateValidity `pulumi:"validity"`
   179  }
   180  
   181  type CertificateState struct {
   182  	// Specifies X.509 certificate information to be included in the issued certificate. To use with API Passthrough templates
   183  	ApiPassthrough pulumi.StringPtrInput
   184  	// ARN of the certificate.
   185  	Arn pulumi.StringPtrInput
   186  	// PEM-encoded certificate value.
   187  	Certificate pulumi.StringPtrInput
   188  	// ARN of the certificate authority.
   189  	CertificateAuthorityArn pulumi.StringPtrInput
   190  	// PEM-encoded certificate chain that includes any intermediate certificates and chains up to root CA.
   191  	CertificateChain pulumi.StringPtrInput
   192  	// Certificate Signing Request in PEM format.
   193  	CertificateSigningRequest pulumi.StringPtrInput
   194  	// Algorithm to use to sign certificate requests. Valid values: `SHA256WITHRSA`, `SHA256WITHECDSA`, `SHA384WITHRSA`, `SHA384WITHECDSA`, `SHA512WITHRSA`, `SHA512WITHECDSA`.
   195  	SigningAlgorithm pulumi.StringPtrInput
   196  	// Template to use when issuing a certificate.
   197  	// See [ACM PCA Documentation](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html) for more information.
   198  	TemplateArn pulumi.StringPtrInput
   199  	// Configures end of the validity period for the certificate. See validity block below.
   200  	Validity CertificateValidityPtrInput
   201  }
   202  
   203  func (CertificateState) ElementType() reflect.Type {
   204  	return reflect.TypeOf((*certificateState)(nil)).Elem()
   205  }
   206  
   207  type certificateArgs struct {
   208  	// Specifies X.509 certificate information to be included in the issued certificate. To use with API Passthrough templates
   209  	ApiPassthrough *string `pulumi:"apiPassthrough"`
   210  	// ARN of the certificate authority.
   211  	CertificateAuthorityArn string `pulumi:"certificateAuthorityArn"`
   212  	// Certificate Signing Request in PEM format.
   213  	CertificateSigningRequest string `pulumi:"certificateSigningRequest"`
   214  	// Algorithm to use to sign certificate requests. Valid values: `SHA256WITHRSA`, `SHA256WITHECDSA`, `SHA384WITHRSA`, `SHA384WITHECDSA`, `SHA512WITHRSA`, `SHA512WITHECDSA`.
   215  	SigningAlgorithm string `pulumi:"signingAlgorithm"`
   216  	// Template to use when issuing a certificate.
   217  	// See [ACM PCA Documentation](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html) for more information.
   218  	TemplateArn *string `pulumi:"templateArn"`
   219  	// Configures end of the validity period for the certificate. See validity block below.
   220  	Validity CertificateValidity `pulumi:"validity"`
   221  }
   222  
   223  // The set of arguments for constructing a Certificate resource.
   224  type CertificateArgs struct {
   225  	// Specifies X.509 certificate information to be included in the issued certificate. To use with API Passthrough templates
   226  	ApiPassthrough pulumi.StringPtrInput
   227  	// ARN of the certificate authority.
   228  	CertificateAuthorityArn pulumi.StringInput
   229  	// Certificate Signing Request in PEM format.
   230  	CertificateSigningRequest pulumi.StringInput
   231  	// Algorithm to use to sign certificate requests. Valid values: `SHA256WITHRSA`, `SHA256WITHECDSA`, `SHA384WITHRSA`, `SHA384WITHECDSA`, `SHA512WITHRSA`, `SHA512WITHECDSA`.
   232  	SigningAlgorithm pulumi.StringInput
   233  	// Template to use when issuing a certificate.
   234  	// See [ACM PCA Documentation](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html) for more information.
   235  	TemplateArn pulumi.StringPtrInput
   236  	// Configures end of the validity period for the certificate. See validity block below.
   237  	Validity CertificateValidityInput
   238  }
   239  
   240  func (CertificateArgs) ElementType() reflect.Type {
   241  	return reflect.TypeOf((*certificateArgs)(nil)).Elem()
   242  }
   243  
   244  type CertificateInput interface {
   245  	pulumi.Input
   246  
   247  	ToCertificateOutput() CertificateOutput
   248  	ToCertificateOutputWithContext(ctx context.Context) CertificateOutput
   249  }
   250  
   251  func (*Certificate) ElementType() reflect.Type {
   252  	return reflect.TypeOf((**Certificate)(nil)).Elem()
   253  }
   254  
   255  func (i *Certificate) ToCertificateOutput() CertificateOutput {
   256  	return i.ToCertificateOutputWithContext(context.Background())
   257  }
   258  
   259  func (i *Certificate) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput {
   260  	return pulumi.ToOutputWithContext(ctx, i).(CertificateOutput)
   261  }
   262  
   263  // CertificateArrayInput is an input type that accepts CertificateArray and CertificateArrayOutput values.
   264  // You can construct a concrete instance of `CertificateArrayInput` via:
   265  //
   266  //	CertificateArray{ CertificateArgs{...} }
   267  type CertificateArrayInput interface {
   268  	pulumi.Input
   269  
   270  	ToCertificateArrayOutput() CertificateArrayOutput
   271  	ToCertificateArrayOutputWithContext(context.Context) CertificateArrayOutput
   272  }
   273  
   274  type CertificateArray []CertificateInput
   275  
   276  func (CertificateArray) ElementType() reflect.Type {
   277  	return reflect.TypeOf((*[]*Certificate)(nil)).Elem()
   278  }
   279  
   280  func (i CertificateArray) ToCertificateArrayOutput() CertificateArrayOutput {
   281  	return i.ToCertificateArrayOutputWithContext(context.Background())
   282  }
   283  
   284  func (i CertificateArray) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput {
   285  	return pulumi.ToOutputWithContext(ctx, i).(CertificateArrayOutput)
   286  }
   287  
   288  // CertificateMapInput is an input type that accepts CertificateMap and CertificateMapOutput values.
   289  // You can construct a concrete instance of `CertificateMapInput` via:
   290  //
   291  //	CertificateMap{ "key": CertificateArgs{...} }
   292  type CertificateMapInput interface {
   293  	pulumi.Input
   294  
   295  	ToCertificateMapOutput() CertificateMapOutput
   296  	ToCertificateMapOutputWithContext(context.Context) CertificateMapOutput
   297  }
   298  
   299  type CertificateMap map[string]CertificateInput
   300  
   301  func (CertificateMap) ElementType() reflect.Type {
   302  	return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem()
   303  }
   304  
   305  func (i CertificateMap) ToCertificateMapOutput() CertificateMapOutput {
   306  	return i.ToCertificateMapOutputWithContext(context.Background())
   307  }
   308  
   309  func (i CertificateMap) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput {
   310  	return pulumi.ToOutputWithContext(ctx, i).(CertificateMapOutput)
   311  }
   312  
   313  type CertificateOutput struct{ *pulumi.OutputState }
   314  
   315  func (CertificateOutput) ElementType() reflect.Type {
   316  	return reflect.TypeOf((**Certificate)(nil)).Elem()
   317  }
   318  
   319  func (o CertificateOutput) ToCertificateOutput() CertificateOutput {
   320  	return o
   321  }
   322  
   323  func (o CertificateOutput) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput {
   324  	return o
   325  }
   326  
   327  // Specifies X.509 certificate information to be included in the issued certificate. To use with API Passthrough templates
   328  func (o CertificateOutput) ApiPassthrough() pulumi.StringPtrOutput {
   329  	return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.ApiPassthrough }).(pulumi.StringPtrOutput)
   330  }
   331  
   332  // ARN of the certificate.
   333  func (o CertificateOutput) Arn() pulumi.StringOutput {
   334  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   335  }
   336  
   337  // PEM-encoded certificate value.
   338  func (o CertificateOutput) Certificate() pulumi.StringOutput {
   339  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Certificate }).(pulumi.StringOutput)
   340  }
   341  
   342  // ARN of the certificate authority.
   343  func (o CertificateOutput) CertificateAuthorityArn() pulumi.StringOutput {
   344  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.CertificateAuthorityArn }).(pulumi.StringOutput)
   345  }
   346  
   347  // PEM-encoded certificate chain that includes any intermediate certificates and chains up to root CA.
   348  func (o CertificateOutput) CertificateChain() pulumi.StringOutput {
   349  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.CertificateChain }).(pulumi.StringOutput)
   350  }
   351  
   352  // Certificate Signing Request in PEM format.
   353  func (o CertificateOutput) CertificateSigningRequest() pulumi.StringOutput {
   354  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.CertificateSigningRequest }).(pulumi.StringOutput)
   355  }
   356  
   357  // Algorithm to use to sign certificate requests. Valid values: `SHA256WITHRSA`, `SHA256WITHECDSA`, `SHA384WITHRSA`, `SHA384WITHECDSA`, `SHA512WITHRSA`, `SHA512WITHECDSA`.
   358  func (o CertificateOutput) SigningAlgorithm() pulumi.StringOutput {
   359  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.SigningAlgorithm }).(pulumi.StringOutput)
   360  }
   361  
   362  // Template to use when issuing a certificate.
   363  // See [ACM PCA Documentation](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html) for more information.
   364  func (o CertificateOutput) TemplateArn() pulumi.StringPtrOutput {
   365  	return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.TemplateArn }).(pulumi.StringPtrOutput)
   366  }
   367  
   368  // Configures end of the validity period for the certificate. See validity block below.
   369  func (o CertificateOutput) Validity() CertificateValidityOutput {
   370  	return o.ApplyT(func(v *Certificate) CertificateValidityOutput { return v.Validity }).(CertificateValidityOutput)
   371  }
   372  
   373  type CertificateArrayOutput struct{ *pulumi.OutputState }
   374  
   375  func (CertificateArrayOutput) ElementType() reflect.Type {
   376  	return reflect.TypeOf((*[]*Certificate)(nil)).Elem()
   377  }
   378  
   379  func (o CertificateArrayOutput) ToCertificateArrayOutput() CertificateArrayOutput {
   380  	return o
   381  }
   382  
   383  func (o CertificateArrayOutput) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput {
   384  	return o
   385  }
   386  
   387  func (o CertificateArrayOutput) Index(i pulumi.IntInput) CertificateOutput {
   388  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Certificate {
   389  		return vs[0].([]*Certificate)[vs[1].(int)]
   390  	}).(CertificateOutput)
   391  }
   392  
   393  type CertificateMapOutput struct{ *pulumi.OutputState }
   394  
   395  func (CertificateMapOutput) ElementType() reflect.Type {
   396  	return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem()
   397  }
   398  
   399  func (o CertificateMapOutput) ToCertificateMapOutput() CertificateMapOutput {
   400  	return o
   401  }
   402  
   403  func (o CertificateMapOutput) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput {
   404  	return o
   405  }
   406  
   407  func (o CertificateMapOutput) MapIndex(k pulumi.StringInput) CertificateOutput {
   408  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Certificate {
   409  		return vs[0].(map[string]*Certificate)[vs[1].(string)]
   410  	}).(CertificateOutput)
   411  }
   412  
   413  func init() {
   414  	pulumi.RegisterInputType(reflect.TypeOf((*CertificateInput)(nil)).Elem(), &Certificate{})
   415  	pulumi.RegisterInputType(reflect.TypeOf((*CertificateArrayInput)(nil)).Elem(), CertificateArray{})
   416  	pulumi.RegisterInputType(reflect.TypeOf((*CertificateMapInput)(nil)).Elem(), CertificateMap{})
   417  	pulumi.RegisterOutputType(CertificateOutput{})
   418  	pulumi.RegisterOutputType(CertificateArrayOutput{})
   419  	pulumi.RegisterOutputType(CertificateMapOutput{})
   420  }