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 }