@wraps.dev/pulumi package provides a WrapsEmail Pulumi ComponentResource that deploys SES infrastructure — IAM roles, configuration sets, event pipelines, and DNS records — directly into your Pulumi stack. Use it when you manage your AWS infrastructure with Pulumi.
Installation
@pulumi/pulumi and @pulumi/aws, which your Pulumi project already provides:
Prerequisites
- Node.js 20+
- Pulumi 3.x CLI installed
@pulumi/aws6.x or 7.x- AWS credentials configured
Quick start
Configuration options
Authentication
Vercel OIDC configuration. Mutually exclusive with
oidc.Custom OIDC provider for GitHub Actions, GitLab CI, or other OIDC-compatible platforms. Mutually exclusive with
vercel.Domain
Primary sending domain. Creates an SES domain identity with DKIM. DKIM tokens are exported as stack outputs for DNS configuration.
DNS provider configuration for automatic record creation. Supports Route53, Cloudflare, and Vercel.
Subdomain for the MAIL FROM domain. Combined with
domain — e.g. mail + example.com → mail.example.com.Open/click tracking
Open and click tracking configuration.
Event tracking
Enables the event pipeline: EventBridge → SQS → Lambda → DynamoDB.
Email settings
Enable SES reputation metrics in CloudWatch.
Require TLS for all outbound connections.
Enable sending on the SES configuration set.
Provision a dedicated sending IP address. Adds approximately $25/month to AWS costs.
Bounce and complaint suppression.
SMTP
Create an IAM user with SMTP credentials for legacy systems.
Transform functions
Escape hatch to customize any underlying Pulumi resource before creation. Each function receives the default resource args and returns modified args.Available transform keys:
role, oidcProvider, configSet, domainIdentity, table, queue, dlq, lambda, eventRule, certificate, distribution.Tags
Tags to apply to all provisioned resources. Merged with the default
ManagedBy: wraps-pulumi tag.Outputs
All outputs arepulumi.Output<T> and can be exported from your Pulumi program or passed to other resources.
| Output | Type | Description |
|---|---|---|
roleArn | Output<string> | IAM role ARN for SDK authentication |
region | Output<string> | AWS region |
configSetName | Output<string> | SES configuration set name |
domain | Output<string | undefined> | Verified domain (if configured) |
mailFromDomain | Output<string | undefined> | MAIL FROM domain (if configured) |
dkimTokens | Output<string[] | undefined> | DKIM tokens for DNS configuration |
tableName | Output<string | undefined> | DynamoDB table name (if history enabled) |
queueUrl | Output<string | undefined> | SQS queue URL (if events enabled) |
dlqUrl | Output<string | undefined> | SQS dead-letter queue URL |
lambdaArn | Output<string | undefined> | Lambda function ARN (if history enabled) |
customTrackingDomain | Output<string | undefined> | Custom tracking domain (if configured) |
httpsTrackingEnabled | Output<boolean> | Whether HTTPS tracking is enabled |
cloudFrontDomain | Output<string | undefined> | CloudFront distribution domain (if HTTPS tracking enabled) |
acmCertificateValidationRecords | Output<Array<...> | undefined> | ACM certificate validation records (if HTTPS tracking enabled) |
archiveArn | Output<string | undefined> | Mail Manager archive ARN (if archiving enabled) |
archivingEnabled | Output<boolean> | Whether archiving is enabled |
smtpUserArn | Output<string | undefined> | SMTP IAM user ARN (if SMTP enabled) |
smtpEndpoint | Output<string | undefined> | SMTP endpoint (if SMTP enabled) |
smtpUsername | Output<string | undefined> | SMTP username — store securely |
smtpPassword | Output<string | undefined> | SMTP password — store securely |
envVars | Output<{ WRAPS_AWS_ROLE_ARN, WRAPS_AWS_REGION, WRAPS_CONFIG_SET? }> | Convenience object with all env vars |
Accessing underlying resources
All Pulumi resources are accessible via.nodes for advanced use cases:
