@aws-cdk/aws-ses

The CDK Construct Library for AWS::SES

Stats

stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
7,0652,031Jul 30, 2021Oct 4, 2017Minified + gzip package size for @aws-cdk/aws-ses in KB

Readme

Amazon Simple Email Service Construct Library


cfn-resources: Stable

cdk-constructs: Stable


This module is part of the AWS Cloud Development Kit project.

Email receiving

Create a receipt rule set with rules and actions (actions can be found in the @aws-cdk/aws-ses-actions package):

import * as s3 from '@aws-cdk/aws-s3';
import * as ses from '@aws-cdk/aws-ses';
import * as actions from '@aws-cdk/aws-ses-actions';
import * as sns from '@aws-cdk/aws-sns';

const bucket = new s3.Bucket(stack, 'Bucket');
const topic = new sns.Topic(stack, 'Topic');

new ses.ReceiptRuleSet(stack, 'RuleSet', {
  rules: [
    {
      recipients: ['hello@aws.com'],
      actions: [
        new actions.AddHeader({
          name: 'X-Special-Header',
          value: 'aws'
        }),
        new actions.S3({
          bucket,
          objectKeyPrefix: 'emails/',
          topic
        })
      ],
    },
    {
      recipients: ['aws.com'],
      actions: [
        new actions.Sns({
          topic
        })
      ]
    }
  ]
});

Alternatively, rules can be added to a rule set:

const ruleSet = new ses.ReceiptRuleSet(this, 'RuleSet'):

const awsRule = ruleSet.addRule('Aws', {
  recipients: ['aws.com']
});

And actions to rules:

awsRule.addAction(new actions.Sns({
  topic
}));

When using addRule, the new rule is added after the last added rule unless after is specified.

Drop spams

A rule to drop spam can be added by setting dropSpam to true:

new ses.ReceiptRuleSet(this, 'RuleSet', {
  dropSpam: true
});

This will add a rule at the top of the rule set with a Lambda action that stops processing messages that have at least one spam indicator. See Lambda Function Examples.

Receipt filter

Create a receipt filter:

new ses.ReceiptFilter(this, 'Filter', {
  ip: '1.2.3.4/16' // Will be blocked
})

An allow list filter is also available:

new ses.AllowListReceiptFilter(this, 'AllowList', {
  ips: [
    '10.0.0.0/16',
    '1.2.3.4/16',
  ]
});

This will first create a block all filter and then create allow filters for the listed ip addresses.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.