github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/acm/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 acm
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    11  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    12  )
    13  
    14  // The ACM certificate resource allows requesting and management of certificates
    15  // from the Amazon Certificate Manager.
    16  //
    17  // ACM certificates can be created in three ways:
    18  // Amazon-issued, where AWS provides the certificate authority and automatically manages renewal;
    19  // imported certificates, issued by another certificate authority;
    20  // and private certificates, issued using an ACM Private Certificate Authority.
    21  //
    22  // ## Amazon-Issued Certificates
    23  //
    24  // For Amazon-issued certificates, this resource deals with requesting certificates and managing their attributes and life-cycle.
    25  // This resource does not deal with validation of a certificate but can provide inputs
    26  // for other resources implementing the validation.
    27  // It does not wait for a certificate to be issued.
    28  // Use a `acm.CertificateValidation` resource for this.
    29  //
    30  // Most commonly, this resource is used together with `route53.Record` and
    31  // `acm.CertificateValidation` to request a DNS validated certificate,
    32  // deploy the required validation records and wait for validation to complete.
    33  //
    34  // Domain validation through email is also supported but should be avoided as it requires a manual step outside of this provider.
    35  //
    36  // ## Certificates Imported from Other Certificate Authority
    37  //
    38  // Imported certificates can be used to make certificates created with an external certificate authority available for AWS services.
    39  //
    40  // As they are not managed by AWS, imported certificates are not eligible for automatic renewal.
    41  // New certificate materials can be supplied to an existing imported certificate to update it in place.
    42  //
    43  // ## Private Certificates
    44  //
    45  // Private certificates are issued by an ACM Private Cerificate Authority, which can be created using the resource type `acmpca.CertificateAuthority`.
    46  //
    47  // Private certificates created using this resource are eligible for managed renewal if they have been exported or associated with another AWS service.
    48  // See [managed renewal documentation](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html) for more information.
    49  // By default, a certificate is valid for 395 days and the managed renewal process will start 60 days before expiration.
    50  // To renew the certificate earlier than 60 days before expiration, configure `earlyRenewalDuration`.
    51  //
    52  // ## Example Usage
    53  //
    54  // ### Custom Domain Validation Options
    55  //
    56  // <!--Start PulumiCodeChooser -->
    57  // ```go
    58  // package main
    59  //
    60  // import (
    61  //
    62  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/acm"
    63  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    64  //
    65  // )
    66  //
    67  //	func main() {
    68  //		pulumi.Run(func(ctx *pulumi.Context) error {
    69  //			_, err := acm.NewCertificate(ctx, "cert", &acm.CertificateArgs{
    70  //				DomainName:       pulumi.String("testing.example.com"),
    71  //				ValidationMethod: pulumi.String("EMAIL"),
    72  //				ValidationOptions: acm.CertificateValidationOptionArray{
    73  //					&acm.CertificateValidationOptionArgs{
    74  //						DomainName:       pulumi.String("testing.example.com"),
    75  //						ValidationDomain: pulumi.String("example.com"),
    76  //					},
    77  //				},
    78  //			})
    79  //			if err != nil {
    80  //				return err
    81  //			}
    82  //			return nil
    83  //		})
    84  //	}
    85  //
    86  // ```
    87  // <!--End PulumiCodeChooser -->
    88  //
    89  // ### Existing Certificate Body Import
    90  //
    91  // <!--Start PulumiCodeChooser -->
    92  // ```go
    93  // package main
    94  //
    95  // import (
    96  //
    97  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/acm"
    98  //	"github.com/pulumi/pulumi-tls/sdk/v4/go/tls"
    99  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   100  //
   101  // )
   102  //
   103  //	func main() {
   104  //		pulumi.Run(func(ctx *pulumi.Context) error {
   105  //			example, err := tls.NewPrivateKey(ctx, "example", &tls.PrivateKeyArgs{
   106  //				Algorithm: pulumi.String("RSA"),
   107  //			})
   108  //			if err != nil {
   109  //				return err
   110  //			}
   111  //			exampleSelfSignedCert, err := tls.NewSelfSignedCert(ctx, "example", &tls.SelfSignedCertArgs{
   112  //				KeyAlgorithm:  pulumi.String("RSA"),
   113  //				PrivateKeyPem: example.PrivateKeyPem,
   114  //				Subject: &tls.SelfSignedCertSubjectArgs{
   115  //					CommonName:   pulumi.String("example.com"),
   116  //					Organization: pulumi.String("ACME Examples, Inc"),
   117  //				},
   118  //				ValidityPeriodHours: pulumi.Int(12),
   119  //				AllowedUses: pulumi.StringArray{
   120  //					pulumi.String("key_encipherment"),
   121  //					pulumi.String("digital_signature"),
   122  //					pulumi.String("server_auth"),
   123  //				},
   124  //			})
   125  //			if err != nil {
   126  //				return err
   127  //			}
   128  //			_, err = acm.NewCertificate(ctx, "cert", &acm.CertificateArgs{
   129  //				PrivateKey:      example.PrivateKeyPem,
   130  //				CertificateBody: exampleSelfSignedCert.CertPem,
   131  //			})
   132  //			if err != nil {
   133  //				return err
   134  //			}
   135  //			return nil
   136  //		})
   137  //	}
   138  //
   139  // ```
   140  // <!--End PulumiCodeChooser -->
   141  //
   142  // ## Import
   143  //
   144  // Using `pulumi import`, import certificates using their ARN. For example:
   145  //
   146  // ```sh
   147  // $ pulumi import aws:acm/certificate:Certificate cert arn:aws:acm:eu-central-1:123456789012:certificate/7e7a28d2-163f-4b8f-b9cd-822f96c08d6a
   148  // ```
   149  type Certificate struct {
   150  	pulumi.CustomResourceState
   151  
   152  	// ARN of the certificate
   153  	Arn pulumi.StringOutput `pulumi:"arn"`
   154  	// ARN of an ACM PCA
   155  	CertificateAuthorityArn pulumi.StringPtrOutput `pulumi:"certificateAuthorityArn"`
   156  	// Certificate's PEM-formatted public key
   157  	CertificateBody pulumi.StringPtrOutput `pulumi:"certificateBody"`
   158  	// Certificate's PEM-formatted chain
   159  	// * Creating a private CA issued certificate
   160  	CertificateChain pulumi.StringPtrOutput `pulumi:"certificateChain"`
   161  	// Fully qualified domain name (FQDN) in the certificate.
   162  	DomainName pulumi.StringOutput `pulumi:"domainName"`
   163  	// Set of domain validation objects which can be used to complete certificate validation.
   164  	// Can have more than one element, e.g., if SANs are defined.
   165  	// Only set if `DNS`-validation was used.
   166  	DomainValidationOptions CertificateDomainValidationOptionArrayOutput `pulumi:"domainValidationOptions"`
   167  	// Amount of time to start automatic renewal process before expiration.
   168  	// Has no effect if less than 60 days.
   169  	// Represented by either
   170  	// a subset of [RFC 3339 duration](https://www.rfc-editor.org/rfc/rfc3339) supporting years, months, and days (e.g., `P90D`),
   171  	// or a string such as `2160h`.
   172  	EarlyRenewalDuration pulumi.StringPtrOutput `pulumi:"earlyRenewalDuration"`
   173  	// Specifies the algorithm of the public and private key pair that your Amazon issued certificate uses to encrypt data. See [ACM Certificate characteristics](https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms) for more details.
   174  	KeyAlgorithm pulumi.StringOutput `pulumi:"keyAlgorithm"`
   175  	// Expiration date and time of the certificate.
   176  	NotAfter pulumi.StringOutput `pulumi:"notAfter"`
   177  	// Start of the validity period of the certificate.
   178  	NotBefore pulumi.StringOutput `pulumi:"notBefore"`
   179  	// Configuration block used to set certificate options. Detailed below.
   180  	Options CertificateOptionsOutput `pulumi:"options"`
   181  	// `true` if a Private certificate eligible for managed renewal is within the `earlyRenewalDuration` period.
   182  	PendingRenewal pulumi.BoolOutput `pulumi:"pendingRenewal"`
   183  	// Certificate's PEM-formatted private key
   184  	PrivateKey pulumi.StringPtrOutput `pulumi:"privateKey"`
   185  	// Whether the certificate is eligible for managed renewal.
   186  	RenewalEligibility pulumi.StringOutput `pulumi:"renewalEligibility"`
   187  	// Contains information about the status of ACM's [managed renewal](https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html) for the certificate.
   188  	RenewalSummaries CertificateRenewalSummaryArrayOutput `pulumi:"renewalSummaries"`
   189  	// Status of the certificate.
   190  	Status pulumi.StringOutput `pulumi:"status"`
   191  	// Set of domains that should be SANs in the issued certificate.
   192  	// To remove all elements of a previously configured list, set this value equal to an empty list (`[]`)
   193  	SubjectAlternativeNames pulumi.StringArrayOutput `pulumi:"subjectAlternativeNames"`
   194  	// Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   195  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   196  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   197  	//
   198  	// Deprecated: Please use `tags` instead.
   199  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   200  	// Source of the certificate.
   201  	Type pulumi.StringOutput `pulumi:"type"`
   202  	// List of addresses that received a validation email. Only set if `EMAIL` validation was used.
   203  	ValidationEmails pulumi.StringArrayOutput `pulumi:"validationEmails"`
   204  	// Which method to use for validation. `DNS` or `EMAIL` are valid. This parameter must not be set for certificates that were imported into ACM and then into Pulumi.
   205  	ValidationMethod pulumi.StringOutput `pulumi:"validationMethod"`
   206  	// Configuration block used to specify information about the initial validation of each domain name. Detailed below.
   207  	// * Importing an existing certificate
   208  	ValidationOptions CertificateValidationOptionArrayOutput `pulumi:"validationOptions"`
   209  }
   210  
   211  // NewCertificate registers a new resource with the given unique name, arguments, and options.
   212  func NewCertificate(ctx *pulumi.Context,
   213  	name string, args *CertificateArgs, opts ...pulumi.ResourceOption) (*Certificate, error) {
   214  	if args == nil {
   215  		args = &CertificateArgs{}
   216  	}
   217  
   218  	if args.PrivateKey != nil {
   219  		args.PrivateKey = pulumi.ToSecret(args.PrivateKey).(pulumi.StringPtrInput)
   220  	}
   221  	secrets := pulumi.AdditionalSecretOutputs([]string{
   222  		"privateKey",
   223  	})
   224  	opts = append(opts, secrets)
   225  	opts = internal.PkgResourceDefaultOpts(opts)
   226  	var resource Certificate
   227  	err := ctx.RegisterResource("aws:acm/certificate:Certificate", name, args, &resource, opts...)
   228  	if err != nil {
   229  		return nil, err
   230  	}
   231  	return &resource, nil
   232  }
   233  
   234  // GetCertificate gets an existing Certificate resource's state with the given name, ID, and optional
   235  // state properties that are used to uniquely qualify the lookup (nil if not required).
   236  func GetCertificate(ctx *pulumi.Context,
   237  	name string, id pulumi.IDInput, state *CertificateState, opts ...pulumi.ResourceOption) (*Certificate, error) {
   238  	var resource Certificate
   239  	err := ctx.ReadResource("aws:acm/certificate:Certificate", name, id, state, &resource, opts...)
   240  	if err != nil {
   241  		return nil, err
   242  	}
   243  	return &resource, nil
   244  }
   245  
   246  // Input properties used for looking up and filtering Certificate resources.
   247  type certificateState struct {
   248  	// ARN of the certificate
   249  	Arn *string `pulumi:"arn"`
   250  	// ARN of an ACM PCA
   251  	CertificateAuthorityArn *string `pulumi:"certificateAuthorityArn"`
   252  	// Certificate's PEM-formatted public key
   253  	CertificateBody *string `pulumi:"certificateBody"`
   254  	// Certificate's PEM-formatted chain
   255  	// * Creating a private CA issued certificate
   256  	CertificateChain *string `pulumi:"certificateChain"`
   257  	// Fully qualified domain name (FQDN) in the certificate.
   258  	DomainName *string `pulumi:"domainName"`
   259  	// Set of domain validation objects which can be used to complete certificate validation.
   260  	// Can have more than one element, e.g., if SANs are defined.
   261  	// Only set if `DNS`-validation was used.
   262  	DomainValidationOptions []CertificateDomainValidationOption `pulumi:"domainValidationOptions"`
   263  	// Amount of time to start automatic renewal process before expiration.
   264  	// Has no effect if less than 60 days.
   265  	// Represented by either
   266  	// a subset of [RFC 3339 duration](https://www.rfc-editor.org/rfc/rfc3339) supporting years, months, and days (e.g., `P90D`),
   267  	// or a string such as `2160h`.
   268  	EarlyRenewalDuration *string `pulumi:"earlyRenewalDuration"`
   269  	// Specifies the algorithm of the public and private key pair that your Amazon issued certificate uses to encrypt data. See [ACM Certificate characteristics](https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms) for more details.
   270  	KeyAlgorithm *string `pulumi:"keyAlgorithm"`
   271  	// Expiration date and time of the certificate.
   272  	NotAfter *string `pulumi:"notAfter"`
   273  	// Start of the validity period of the certificate.
   274  	NotBefore *string `pulumi:"notBefore"`
   275  	// Configuration block used to set certificate options. Detailed below.
   276  	Options *CertificateOptions `pulumi:"options"`
   277  	// `true` if a Private certificate eligible for managed renewal is within the `earlyRenewalDuration` period.
   278  	PendingRenewal *bool `pulumi:"pendingRenewal"`
   279  	// Certificate's PEM-formatted private key
   280  	PrivateKey *string `pulumi:"privateKey"`
   281  	// Whether the certificate is eligible for managed renewal.
   282  	RenewalEligibility *string `pulumi:"renewalEligibility"`
   283  	// Contains information about the status of ACM's [managed renewal](https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html) for the certificate.
   284  	RenewalSummaries []CertificateRenewalSummary `pulumi:"renewalSummaries"`
   285  	// Status of the certificate.
   286  	Status *string `pulumi:"status"`
   287  	// Set of domains that should be SANs in the issued certificate.
   288  	// To remove all elements of a previously configured list, set this value equal to an empty list (`[]`)
   289  	SubjectAlternativeNames []string `pulumi:"subjectAlternativeNames"`
   290  	// Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   291  	Tags map[string]string `pulumi:"tags"`
   292  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   293  	//
   294  	// Deprecated: Please use `tags` instead.
   295  	TagsAll map[string]string `pulumi:"tagsAll"`
   296  	// Source of the certificate.
   297  	Type *string `pulumi:"type"`
   298  	// List of addresses that received a validation email. Only set if `EMAIL` validation was used.
   299  	ValidationEmails []string `pulumi:"validationEmails"`
   300  	// Which method to use for validation. `DNS` or `EMAIL` are valid. This parameter must not be set for certificates that were imported into ACM and then into Pulumi.
   301  	ValidationMethod *string `pulumi:"validationMethod"`
   302  	// Configuration block used to specify information about the initial validation of each domain name. Detailed below.
   303  	// * Importing an existing certificate
   304  	ValidationOptions []CertificateValidationOption `pulumi:"validationOptions"`
   305  }
   306  
   307  type CertificateState struct {
   308  	// ARN of the certificate
   309  	Arn pulumi.StringPtrInput
   310  	// ARN of an ACM PCA
   311  	CertificateAuthorityArn pulumi.StringPtrInput
   312  	// Certificate's PEM-formatted public key
   313  	CertificateBody pulumi.StringPtrInput
   314  	// Certificate's PEM-formatted chain
   315  	// * Creating a private CA issued certificate
   316  	CertificateChain pulumi.StringPtrInput
   317  	// Fully qualified domain name (FQDN) in the certificate.
   318  	DomainName pulumi.StringPtrInput
   319  	// Set of domain validation objects which can be used to complete certificate validation.
   320  	// Can have more than one element, e.g., if SANs are defined.
   321  	// Only set if `DNS`-validation was used.
   322  	DomainValidationOptions CertificateDomainValidationOptionArrayInput
   323  	// Amount of time to start automatic renewal process before expiration.
   324  	// Has no effect if less than 60 days.
   325  	// Represented by either
   326  	// a subset of [RFC 3339 duration](https://www.rfc-editor.org/rfc/rfc3339) supporting years, months, and days (e.g., `P90D`),
   327  	// or a string such as `2160h`.
   328  	EarlyRenewalDuration pulumi.StringPtrInput
   329  	// Specifies the algorithm of the public and private key pair that your Amazon issued certificate uses to encrypt data. See [ACM Certificate characteristics](https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms) for more details.
   330  	KeyAlgorithm pulumi.StringPtrInput
   331  	// Expiration date and time of the certificate.
   332  	NotAfter pulumi.StringPtrInput
   333  	// Start of the validity period of the certificate.
   334  	NotBefore pulumi.StringPtrInput
   335  	// Configuration block used to set certificate options. Detailed below.
   336  	Options CertificateOptionsPtrInput
   337  	// `true` if a Private certificate eligible for managed renewal is within the `earlyRenewalDuration` period.
   338  	PendingRenewal pulumi.BoolPtrInput
   339  	// Certificate's PEM-formatted private key
   340  	PrivateKey pulumi.StringPtrInput
   341  	// Whether the certificate is eligible for managed renewal.
   342  	RenewalEligibility pulumi.StringPtrInput
   343  	// Contains information about the status of ACM's [managed renewal](https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html) for the certificate.
   344  	RenewalSummaries CertificateRenewalSummaryArrayInput
   345  	// Status of the certificate.
   346  	Status pulumi.StringPtrInput
   347  	// Set of domains that should be SANs in the issued certificate.
   348  	// To remove all elements of a previously configured list, set this value equal to an empty list (`[]`)
   349  	SubjectAlternativeNames pulumi.StringArrayInput
   350  	// Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   351  	Tags pulumi.StringMapInput
   352  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   353  	//
   354  	// Deprecated: Please use `tags` instead.
   355  	TagsAll pulumi.StringMapInput
   356  	// Source of the certificate.
   357  	Type pulumi.StringPtrInput
   358  	// List of addresses that received a validation email. Only set if `EMAIL` validation was used.
   359  	ValidationEmails pulumi.StringArrayInput
   360  	// Which method to use for validation. `DNS` or `EMAIL` are valid. This parameter must not be set for certificates that were imported into ACM and then into Pulumi.
   361  	ValidationMethod pulumi.StringPtrInput
   362  	// Configuration block used to specify information about the initial validation of each domain name. Detailed below.
   363  	// * Importing an existing certificate
   364  	ValidationOptions CertificateValidationOptionArrayInput
   365  }
   366  
   367  func (CertificateState) ElementType() reflect.Type {
   368  	return reflect.TypeOf((*certificateState)(nil)).Elem()
   369  }
   370  
   371  type certificateArgs struct {
   372  	// ARN of an ACM PCA
   373  	CertificateAuthorityArn *string `pulumi:"certificateAuthorityArn"`
   374  	// Certificate's PEM-formatted public key
   375  	CertificateBody *string `pulumi:"certificateBody"`
   376  	// Certificate's PEM-formatted chain
   377  	// * Creating a private CA issued certificate
   378  	CertificateChain *string `pulumi:"certificateChain"`
   379  	// Fully qualified domain name (FQDN) in the certificate.
   380  	DomainName *string `pulumi:"domainName"`
   381  	// Amount of time to start automatic renewal process before expiration.
   382  	// Has no effect if less than 60 days.
   383  	// Represented by either
   384  	// a subset of [RFC 3339 duration](https://www.rfc-editor.org/rfc/rfc3339) supporting years, months, and days (e.g., `P90D`),
   385  	// or a string such as `2160h`.
   386  	EarlyRenewalDuration *string `pulumi:"earlyRenewalDuration"`
   387  	// Specifies the algorithm of the public and private key pair that your Amazon issued certificate uses to encrypt data. See [ACM Certificate characteristics](https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms) for more details.
   388  	KeyAlgorithm *string `pulumi:"keyAlgorithm"`
   389  	// Configuration block used to set certificate options. Detailed below.
   390  	Options *CertificateOptions `pulumi:"options"`
   391  	// Certificate's PEM-formatted private key
   392  	PrivateKey *string `pulumi:"privateKey"`
   393  	// Set of domains that should be SANs in the issued certificate.
   394  	// To remove all elements of a previously configured list, set this value equal to an empty list (`[]`)
   395  	SubjectAlternativeNames []string `pulumi:"subjectAlternativeNames"`
   396  	// Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   397  	Tags map[string]string `pulumi:"tags"`
   398  	// Which method to use for validation. `DNS` or `EMAIL` are valid. This parameter must not be set for certificates that were imported into ACM and then into Pulumi.
   399  	ValidationMethod *string `pulumi:"validationMethod"`
   400  	// Configuration block used to specify information about the initial validation of each domain name. Detailed below.
   401  	// * Importing an existing certificate
   402  	ValidationOptions []CertificateValidationOption `pulumi:"validationOptions"`
   403  }
   404  
   405  // The set of arguments for constructing a Certificate resource.
   406  type CertificateArgs struct {
   407  	// ARN of an ACM PCA
   408  	CertificateAuthorityArn pulumi.StringPtrInput
   409  	// Certificate's PEM-formatted public key
   410  	CertificateBody pulumi.StringPtrInput
   411  	// Certificate's PEM-formatted chain
   412  	// * Creating a private CA issued certificate
   413  	CertificateChain pulumi.StringPtrInput
   414  	// Fully qualified domain name (FQDN) in the certificate.
   415  	DomainName pulumi.StringPtrInput
   416  	// Amount of time to start automatic renewal process before expiration.
   417  	// Has no effect if less than 60 days.
   418  	// Represented by either
   419  	// a subset of [RFC 3339 duration](https://www.rfc-editor.org/rfc/rfc3339) supporting years, months, and days (e.g., `P90D`),
   420  	// or a string such as `2160h`.
   421  	EarlyRenewalDuration pulumi.StringPtrInput
   422  	// Specifies the algorithm of the public and private key pair that your Amazon issued certificate uses to encrypt data. See [ACM Certificate characteristics](https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms) for more details.
   423  	KeyAlgorithm pulumi.StringPtrInput
   424  	// Configuration block used to set certificate options. Detailed below.
   425  	Options CertificateOptionsPtrInput
   426  	// Certificate's PEM-formatted private key
   427  	PrivateKey pulumi.StringPtrInput
   428  	// Set of domains that should be SANs in the issued certificate.
   429  	// To remove all elements of a previously configured list, set this value equal to an empty list (`[]`)
   430  	SubjectAlternativeNames pulumi.StringArrayInput
   431  	// Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   432  	Tags pulumi.StringMapInput
   433  	// Which method to use for validation. `DNS` or `EMAIL` are valid. This parameter must not be set for certificates that were imported into ACM and then into Pulumi.
   434  	ValidationMethod pulumi.StringPtrInput
   435  	// Configuration block used to specify information about the initial validation of each domain name. Detailed below.
   436  	// * Importing an existing certificate
   437  	ValidationOptions CertificateValidationOptionArrayInput
   438  }
   439  
   440  func (CertificateArgs) ElementType() reflect.Type {
   441  	return reflect.TypeOf((*certificateArgs)(nil)).Elem()
   442  }
   443  
   444  type CertificateInput interface {
   445  	pulumi.Input
   446  
   447  	ToCertificateOutput() CertificateOutput
   448  	ToCertificateOutputWithContext(ctx context.Context) CertificateOutput
   449  }
   450  
   451  func (*Certificate) ElementType() reflect.Type {
   452  	return reflect.TypeOf((**Certificate)(nil)).Elem()
   453  }
   454  
   455  func (i *Certificate) ToCertificateOutput() CertificateOutput {
   456  	return i.ToCertificateOutputWithContext(context.Background())
   457  }
   458  
   459  func (i *Certificate) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput {
   460  	return pulumi.ToOutputWithContext(ctx, i).(CertificateOutput)
   461  }
   462  
   463  // CertificateArrayInput is an input type that accepts CertificateArray and CertificateArrayOutput values.
   464  // You can construct a concrete instance of `CertificateArrayInput` via:
   465  //
   466  //	CertificateArray{ CertificateArgs{...} }
   467  type CertificateArrayInput interface {
   468  	pulumi.Input
   469  
   470  	ToCertificateArrayOutput() CertificateArrayOutput
   471  	ToCertificateArrayOutputWithContext(context.Context) CertificateArrayOutput
   472  }
   473  
   474  type CertificateArray []CertificateInput
   475  
   476  func (CertificateArray) ElementType() reflect.Type {
   477  	return reflect.TypeOf((*[]*Certificate)(nil)).Elem()
   478  }
   479  
   480  func (i CertificateArray) ToCertificateArrayOutput() CertificateArrayOutput {
   481  	return i.ToCertificateArrayOutputWithContext(context.Background())
   482  }
   483  
   484  func (i CertificateArray) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput {
   485  	return pulumi.ToOutputWithContext(ctx, i).(CertificateArrayOutput)
   486  }
   487  
   488  // CertificateMapInput is an input type that accepts CertificateMap and CertificateMapOutput values.
   489  // You can construct a concrete instance of `CertificateMapInput` via:
   490  //
   491  //	CertificateMap{ "key": CertificateArgs{...} }
   492  type CertificateMapInput interface {
   493  	pulumi.Input
   494  
   495  	ToCertificateMapOutput() CertificateMapOutput
   496  	ToCertificateMapOutputWithContext(context.Context) CertificateMapOutput
   497  }
   498  
   499  type CertificateMap map[string]CertificateInput
   500  
   501  func (CertificateMap) ElementType() reflect.Type {
   502  	return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem()
   503  }
   504  
   505  func (i CertificateMap) ToCertificateMapOutput() CertificateMapOutput {
   506  	return i.ToCertificateMapOutputWithContext(context.Background())
   507  }
   508  
   509  func (i CertificateMap) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput {
   510  	return pulumi.ToOutputWithContext(ctx, i).(CertificateMapOutput)
   511  }
   512  
   513  type CertificateOutput struct{ *pulumi.OutputState }
   514  
   515  func (CertificateOutput) ElementType() reflect.Type {
   516  	return reflect.TypeOf((**Certificate)(nil)).Elem()
   517  }
   518  
   519  func (o CertificateOutput) ToCertificateOutput() CertificateOutput {
   520  	return o
   521  }
   522  
   523  func (o CertificateOutput) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput {
   524  	return o
   525  }
   526  
   527  // ARN of the certificate
   528  func (o CertificateOutput) Arn() pulumi.StringOutput {
   529  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   530  }
   531  
   532  // ARN of an ACM PCA
   533  func (o CertificateOutput) CertificateAuthorityArn() pulumi.StringPtrOutput {
   534  	return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.CertificateAuthorityArn }).(pulumi.StringPtrOutput)
   535  }
   536  
   537  // Certificate's PEM-formatted public key
   538  func (o CertificateOutput) CertificateBody() pulumi.StringPtrOutput {
   539  	return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.CertificateBody }).(pulumi.StringPtrOutput)
   540  }
   541  
   542  // Certificate's PEM-formatted chain
   543  // * Creating a private CA issued certificate
   544  func (o CertificateOutput) CertificateChain() pulumi.StringPtrOutput {
   545  	return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.CertificateChain }).(pulumi.StringPtrOutput)
   546  }
   547  
   548  // Fully qualified domain name (FQDN) in the certificate.
   549  func (o CertificateOutput) DomainName() pulumi.StringOutput {
   550  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.DomainName }).(pulumi.StringOutput)
   551  }
   552  
   553  // Set of domain validation objects which can be used to complete certificate validation.
   554  // Can have more than one element, e.g., if SANs are defined.
   555  // Only set if `DNS`-validation was used.
   556  func (o CertificateOutput) DomainValidationOptions() CertificateDomainValidationOptionArrayOutput {
   557  	return o.ApplyT(func(v *Certificate) CertificateDomainValidationOptionArrayOutput { return v.DomainValidationOptions }).(CertificateDomainValidationOptionArrayOutput)
   558  }
   559  
   560  // Amount of time to start automatic renewal process before expiration.
   561  // Has no effect if less than 60 days.
   562  // Represented by either
   563  // a subset of [RFC 3339 duration](https://www.rfc-editor.org/rfc/rfc3339) supporting years, months, and days (e.g., `P90D`),
   564  // or a string such as `2160h`.
   565  func (o CertificateOutput) EarlyRenewalDuration() pulumi.StringPtrOutput {
   566  	return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.EarlyRenewalDuration }).(pulumi.StringPtrOutput)
   567  }
   568  
   569  // Specifies the algorithm of the public and private key pair that your Amazon issued certificate uses to encrypt data. See [ACM Certificate characteristics](https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms) for more details.
   570  func (o CertificateOutput) KeyAlgorithm() pulumi.StringOutput {
   571  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.KeyAlgorithm }).(pulumi.StringOutput)
   572  }
   573  
   574  // Expiration date and time of the certificate.
   575  func (o CertificateOutput) NotAfter() pulumi.StringOutput {
   576  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.NotAfter }).(pulumi.StringOutput)
   577  }
   578  
   579  // Start of the validity period of the certificate.
   580  func (o CertificateOutput) NotBefore() pulumi.StringOutput {
   581  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.NotBefore }).(pulumi.StringOutput)
   582  }
   583  
   584  // Configuration block used to set certificate options. Detailed below.
   585  func (o CertificateOutput) Options() CertificateOptionsOutput {
   586  	return o.ApplyT(func(v *Certificate) CertificateOptionsOutput { return v.Options }).(CertificateOptionsOutput)
   587  }
   588  
   589  // `true` if a Private certificate eligible for managed renewal is within the `earlyRenewalDuration` period.
   590  func (o CertificateOutput) PendingRenewal() pulumi.BoolOutput {
   591  	return o.ApplyT(func(v *Certificate) pulumi.BoolOutput { return v.PendingRenewal }).(pulumi.BoolOutput)
   592  }
   593  
   594  // Certificate's PEM-formatted private key
   595  func (o CertificateOutput) PrivateKey() pulumi.StringPtrOutput {
   596  	return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.PrivateKey }).(pulumi.StringPtrOutput)
   597  }
   598  
   599  // Whether the certificate is eligible for managed renewal.
   600  func (o CertificateOutput) RenewalEligibility() pulumi.StringOutput {
   601  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.RenewalEligibility }).(pulumi.StringOutput)
   602  }
   603  
   604  // Contains information about the status of ACM's [managed renewal](https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html) for the certificate.
   605  func (o CertificateOutput) RenewalSummaries() CertificateRenewalSummaryArrayOutput {
   606  	return o.ApplyT(func(v *Certificate) CertificateRenewalSummaryArrayOutput { return v.RenewalSummaries }).(CertificateRenewalSummaryArrayOutput)
   607  }
   608  
   609  // Status of the certificate.
   610  func (o CertificateOutput) Status() pulumi.StringOutput {
   611  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput)
   612  }
   613  
   614  // Set of domains that should be SANs in the issued certificate.
   615  // To remove all elements of a previously configured list, set this value equal to an empty list (`[]`)
   616  func (o CertificateOutput) SubjectAlternativeNames() pulumi.StringArrayOutput {
   617  	return o.ApplyT(func(v *Certificate) pulumi.StringArrayOutput { return v.SubjectAlternativeNames }).(pulumi.StringArrayOutput)
   618  }
   619  
   620  // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   621  func (o CertificateOutput) Tags() pulumi.StringMapOutput {
   622  	return o.ApplyT(func(v *Certificate) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   623  }
   624  
   625  // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   626  //
   627  // Deprecated: Please use `tags` instead.
   628  func (o CertificateOutput) TagsAll() pulumi.StringMapOutput {
   629  	return o.ApplyT(func(v *Certificate) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   630  }
   631  
   632  // Source of the certificate.
   633  func (o CertificateOutput) Type() pulumi.StringOutput {
   634  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
   635  }
   636  
   637  // List of addresses that received a validation email. Only set if `EMAIL` validation was used.
   638  func (o CertificateOutput) ValidationEmails() pulumi.StringArrayOutput {
   639  	return o.ApplyT(func(v *Certificate) pulumi.StringArrayOutput { return v.ValidationEmails }).(pulumi.StringArrayOutput)
   640  }
   641  
   642  // Which method to use for validation. `DNS` or `EMAIL` are valid. This parameter must not be set for certificates that were imported into ACM and then into Pulumi.
   643  func (o CertificateOutput) ValidationMethod() pulumi.StringOutput {
   644  	return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.ValidationMethod }).(pulumi.StringOutput)
   645  }
   646  
   647  // Configuration block used to specify information about the initial validation of each domain name. Detailed below.
   648  // * Importing an existing certificate
   649  func (o CertificateOutput) ValidationOptions() CertificateValidationOptionArrayOutput {
   650  	return o.ApplyT(func(v *Certificate) CertificateValidationOptionArrayOutput { return v.ValidationOptions }).(CertificateValidationOptionArrayOutput)
   651  }
   652  
   653  type CertificateArrayOutput struct{ *pulumi.OutputState }
   654  
   655  func (CertificateArrayOutput) ElementType() reflect.Type {
   656  	return reflect.TypeOf((*[]*Certificate)(nil)).Elem()
   657  }
   658  
   659  func (o CertificateArrayOutput) ToCertificateArrayOutput() CertificateArrayOutput {
   660  	return o
   661  }
   662  
   663  func (o CertificateArrayOutput) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput {
   664  	return o
   665  }
   666  
   667  func (o CertificateArrayOutput) Index(i pulumi.IntInput) CertificateOutput {
   668  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Certificate {
   669  		return vs[0].([]*Certificate)[vs[1].(int)]
   670  	}).(CertificateOutput)
   671  }
   672  
   673  type CertificateMapOutput struct{ *pulumi.OutputState }
   674  
   675  func (CertificateMapOutput) ElementType() reflect.Type {
   676  	return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem()
   677  }
   678  
   679  func (o CertificateMapOutput) ToCertificateMapOutput() CertificateMapOutput {
   680  	return o
   681  }
   682  
   683  func (o CertificateMapOutput) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput {
   684  	return o
   685  }
   686  
   687  func (o CertificateMapOutput) MapIndex(k pulumi.StringInput) CertificateOutput {
   688  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Certificate {
   689  		return vs[0].(map[string]*Certificate)[vs[1].(string)]
   690  	}).(CertificateOutput)
   691  }
   692  
   693  func init() {
   694  	pulumi.RegisterInputType(reflect.TypeOf((*CertificateInput)(nil)).Elem(), &Certificate{})
   695  	pulumi.RegisterInputType(reflect.TypeOf((*CertificateArrayInput)(nil)).Elem(), CertificateArray{})
   696  	pulumi.RegisterInputType(reflect.TypeOf((*CertificateMapInput)(nil)).Elem(), CertificateMap{})
   697  	pulumi.RegisterOutputType(CertificateOutput{})
   698  	pulumi.RegisterOutputType(CertificateArrayOutput{})
   699  	pulumi.RegisterOutputType(CertificateMapOutput{})
   700  }