A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
AWS Certificate Manager provisions and manages SSL/TLS certificates.
Request certificate with DNS validation
const cert = new aws.acm.Certificate("cert", {
domainName: "example.com",
validationMethod: "DNS",
subjectAlternativeNames: ["*.example.com"],
});Create DNS validation records and wait for validation
const validationRecords = cert.domainValidationOptions.apply(options =>
options.map(opt => new aws.route53.Record(`${opt.domainName}-validation`, {
name: opt.resourceRecordName,
type: opt.resourceRecordType,
records: [opt.resourceRecordValue],
zoneId: zone.zoneId,
ttl: 60,
}))
);
const validation = new aws.acm.CertificateValidation("cert-validation", {
certificateArn: cert.arn,
validationRecordFqdns: validationRecords.apply(records => records.map(r => r.fqdn)),
});Request wildcard certificate
const cert = new aws.acm.Certificate("wildcard-cert", {
domainName: "*.example.com",
subjectAlternativeNames: ["example.com"],
validationMethod: "DNS",
});class Certificate extends pulumi.CustomResource {
constructor(name: string, args?: CertificateArgs, opts?: pulumi.CustomResourceOptions);
readonly arn: pulumi.Output<string>;
readonly domainName: pulumi.Output<string>;
readonly domainValidationOptions: pulumi.Output<CertificateDomainValidationOption[]>;
}
interface CertificateArgs {
domainName?: pulumi.Input<string>;
subjectAlternativeNames?: pulumi.Input<pulumi.Input<string>[]>;
validationMethod?: pulumi.Input<"DNS" | "EMAIL">;
tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}
interface CertificateDomainValidationOption {
domainName: string;
resourceRecordName: string;
resourceRecordType: string;
resourceRecordValue: string;
}Example: Request certificate with DNS validation
const cert = new aws.acm.Certificate("ssl-cert", {
domainName: "example.com",
subjectAlternativeNames: ["*.example.com", "www.example.com"],
validationMethod: "DNS",
tags: {
Environment: "production",
},
});class CertificateValidation extends pulumi.CustomResource {
constructor(name: string, args: CertificateValidationArgs, opts?: pulumi.CustomResourceOptions);
}
interface CertificateValidationArgs {
certificateArn: pulumi.Input<string>;
validationRecordFqdns?: pulumi.Input<pulumi.Input<string>[]>;
}Example: Validate certificate with Route53 records
// Create validation records
const validationOption = cert.domainValidationOptions[0];
const validationRecord = new aws.route53.Record("cert-validation", {
name: validationOption.resourceRecordName,
type: validationOption.resourceRecordType,
records: [validationOption.resourceRecordValue],
zoneId: zone.zoneId,
ttl: 60,
});
// Wait for validation
const validation = new aws.acm.CertificateValidation("cert-validation", {
certificateArn: cert.arn,
validationRecordFqdns: [validationRecord.fqdn],
});Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws@7.16.0