Blog
Bereitstellung von AWS SES-Domänenidentitäten und DKIM-Einträgen mit CloudFormation

In AWS CloudFormation gibt es keine Möglichkeit, SES-Domain-Identitäten zu generieren oder die DKIM-Tokens zu erhalten, die zum Senden und Empfangen von E-Mails mit AWS Simple Email Service erforderlich sind. Da wir eine 100%ige Reproduzierbarkeit anstreben, haben wir einen benutzerdefinierten Anbieter sowohl für die Domain-Identität
Wie füge ich SES Domain Identity in CloudFormation hinzu?
Es ist ganz einfach: Sie geben eine CloudFormation-Ressource vom Typ Custom::DomainIdentity an:
Resources:
DomainIdentity:
Type: Custom::DomainIdentity
Properties:
Domain: !Ref 'ExternalDomainName'
Region: !Ref 'EmailRegion'
ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-ses-provider'
Dadurch wird eine Domain-Identität in der angegebenen Region erstellt und sowohl das Validierungs-Token als auch die DNS-Einträge als Attribute zurückgegeben. Um gegenüber SES zu beweisen, dass Sie die Domain besitzen, müssen Sie einen Route53-Datensatz hinzufügen:
DomainVerificationRecord:
Type: AWS::Route53::RecordSetGroup
Properties:
Comment: !Sub 'SES identity for ${ExternalDomainName}'
HostedZoneId: !Ref 'HostedZone'
RecordSets: !GetAtt 'DomainIdentity.RecordSets'
Wie erhalte ich DKIM-Tokens in CloudFormation?
Es ist ganz einfach: Sie geben eine CloudFormation-Ressource vom Typ Custom::DkimTokens an:
Resources:
DkimTokens:
Type: Custom::DkimTokens
Properties:
Domain: !GetAtt 'DomainIdentity.Domain'
Region: !GetAtt 'DomainIdentity.Region'
ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-ses-provider'
Dies gibt die DKIM-Tokens und die DNS-Einträge als Attribute für eine bestehende Domainidentität zurück. So kann der Empfänger von überprüfen, ob die Nachrichten vom Eigentümer der Domäne gesendet wurden. Sie können dies wie folgt verwenden:
DkimRecords:
Type: AWS::Route53::RecordSetGroup
Properties:
HostedZoneId: !Ref 'HostedZone'
RecordSets: !GetAtt 'DkimTokens.RecordSets'
Installation
Um diese benutzerdefinierten Ressourcen zu installieren, geben Sie ein:
git clone https://github.com/binxio/cfn-ses-provider.git
cd cfn-ses-provider
aws cloudformation deploy
--capabilities CAPABILITY_IAM
--stack-name cfn-ses-provider
--template-file ./cloudformation/cfn-resource-provider.yaml
Diese CloudFormation-Vorlage verwendet unseren vorgefertigten Provider von s3://binxio-public-{{your-region}}/lambdas/cfn-ses-provider-0.6.1.zip.
Demo
Um die Demo dieser benutzerdefinierten Ressource zu installieren, geben Sie ein:
aws cloudformation deploy
--stack-name cfn-ses-provider-demo
--template-file ./cloudformation/demo-stack.yaml
die installierte Identität anzeigen:
aws --region eu-west-1 ses list-identities
Fazit
Mit dem Custom CloudFormation SES-Provider können Sie Domain-Identitäten und DKIM-Tokens erstellen. Dadurch wird sichergestellt, dass Ihre komplette Umgebung mit CloudFormation definiert werden kann und ohne manuelle Eingriffe vollständig reproduzierbar ist.
Sobald Sie Ihre SES-Domain-Identität konfiguriert haben, sollten Sie auch lesen, wie Sie Ihren AWS SES-Zugangsschlüssel und Ihr SMTP-Passwort mithilfe von AWS CloudFormation im Parameterspeicher bereitstellen.
Wenn Sie Fragen haben, zögern Sie nicht, mich zu kontaktieren.
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



