ReceiptRule ​
The ReceiptRule resource lets you manage AWS SES ReceiptRules for processing incoming email. Receipt rules enable you to define actions for incoming messages, such as storing them in S3, triggering Lambda functions, or sending notifications.
Minimal Example ​
Create a basic receipt rule that stores incoming emails in an S3 bucket:
ts
import AWS from "alchemy/aws/control";
const receiptRule = await AWS.SES.ReceiptRule("basicReceiptRule", {
Rule: {
Name: "StoreIncomingEmails",
Actions: [
{
S3Action: {
BucketName: "my-email-bucket",
ObjectKeyPrefix: "emails/",
}
}
],
Recipients: ["info@example.com"],
Enabled: true,
TlsPolicy: "Optional"
},
RuleSetName: "default-rule-set",
After: "previousRule" // Optional: specify a rule to place this rule after
});
Advanced Configuration ​
Configure a receipt rule to trigger a Lambda function for processing incoming emails:
ts
const lambdaReceiptRule = await AWS.SES.ReceiptRule("lambdaReceiptRule", {
Rule: {
Name: "ProcessIncomingEmails",
Actions: [
{
LambdaAction: {
FunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:processEmail",
InvocationType: "Event"
}
}
],
Recipients: ["support@example.com"],
Enabled: true,
TlsPolicy: "Require"
},
RuleSetName: "default-rule-set"
});
Notification Configuration ​
Create a receipt rule that sends notifications to an Amazon SNS topic:
ts
const snsReceiptRule = await AWS.SES.ReceiptRule("snsReceiptRule", {
Rule: {
Name: "NotifyOnIncomingEmails",
Actions: [
{
SnsAction: {
TopicArn: "arn:aws:sns:us-west-2:123456789012:EmailNotifications",
Encoding: "UTF-8"
}
}
],
Recipients: ["alerts@example.com"],
Enabled: true,
TlsPolicy: "Optional"
},
RuleSetName: "default-rule-set"
});
Chaining Receipt Rules ​
Demonstrate how to create a series of receipt rules that chain actions together:
ts
const firstRule = await AWS.SES.ReceiptRule("firstRule", {
Rule: {
Name: "FirstRule",
Actions: [
{
S3Action: {
BucketName: "my-email-bucket",
ObjectKeyPrefix: "first/"
}
}
],
Recipients: ["chain@example.com"],
Enabled: true,
TlsPolicy: "Optional"
},
RuleSetName: "default-rule-set"
});
const secondRule = await AWS.SES.ReceiptRule("secondRule", {
Rule: {
Name: "SecondRule",
Actions: [
{
SnsAction: {
TopicArn: "arn:aws:sns:us-west-2:123456789012:EmailChainNotifications",
Encoding: "UTF-8"
}
}
],
Recipients: ["chain@example.com"],
Enabled: true,
TlsPolicy: "Require"
},
RuleSetName: "default-rule-set",
After: firstRule.name // Place this rule after the first rule
});