Blog

Bereitstellen des AWS SES-Zugangsschlüssels und des SMTP-Passworts für den Parameterspeicher mit AWS CloudFormation

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
2 Minuten

In AWS CloudFormation gibt es keine Möglichkeit, das SMTP-Passwort eines AWS-Zugangsschlüssels zu generieren. Infolgedessen muss die Anwendung immer
die Berechnung durchführen und den geheimen Schlüssel in ein SMTP-Passwort umwandeln.
Mit diesem benutzerdefinierten CloudFormation-Anbieter machen wir dem ein Ende. Sie können einen Zugangsschlüssel und ein SMTP-Passwort erstellen und die Anmeldeinformationen automatisch
im AWS Parameter Store speichern. Das bedeutet, dass Sie die E-Mail-Infrastruktur erstellen und
SMTP-Anmeldeinformationen für Anwendungen bereitstellen können, die auf sichere und kontrollierte Weise E-Mails über Amazon Simple Email Service versenden müssen.

Wie funktioniert das?

Es ist ganz einfach: Sie fügen die CloudFormation-Ressource Custom::AccessKey hinzu, wie folgt:

Resources:
  AccessKey:
    Type: Custom::AccessKey
    Properties:
      content: sample user credential
      UserName: email-sender
      ParameterPath: /iam-users/email-sender
      ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-secret-provider'

Die Zugriffsschlüssel-ID, das Zugriffsgeheimnis und das SMTP-Passwort werden im Parameterspeicher unter den Pfaden /iam-users/email-sender/aws_access_key_id, /iam-users/email-sender/aws_access_secret_key bzw. /iam-users/email-sender/smtp_password gespeichert.

Eigenschaften

Sie können die folgenden Eigenschaften angeben:

  • UserName - um einen Zugangsschlüssel für zu erstellen.
  • ParameterPath - in den Parameterspeicher, um die Anmeldeinformationen zu speichern
  • Serial - um zu erzwingen, dass der Zugriffsschlüssel recycelt wird
  • Status - Aktiv oder Inaktiv
  • ReturnSecret - gibt Zugangskennung und Zugangsgeheimnis als Attribut zurück
  • ReturnPassword - gibt Zugangskennung und SMTP-Passwort als Attribut zurück
  • NoEcho - geben an, ob die Ausgabe der Rückgabewerte durch ***** ersetzt wird. Standardmäßig ist True eingestellt.

Werte zurückgeben

Mit 'Fn::GetAtt' sind die folgenden Werte verfügbar:

  • SMTPPassword - das SMTP-Passwort für den Zugriffsschlüssel (wenn ReturnPassword true ist).
  • AccessSecretKey - den geheimen Teil des Zugriffsschlüssels (wenn ReturnSecret true ist).
    Weitere Informationen zur Verwendung von Fn::GetAtt finden Sie unter Fn::GetAtt.

Installation

Um diese benutzerdefinierte Ressource zu installieren, geben Sie ein:

git checkout https://github.com/binxio/cfn-secret-provider
cd cfn-secret-provider

aws cloudformation create-stack 
  --capabilities CAPABILITY_IAM 
  –-stack-name cfn-secret-provider 
  –-template-body file://cloudformation/cfn-custom-resource-provider.yaml

aws cloudformation wait stack-create-complete 
  –-stack-name cfn-secret-provider

Diese CloudFormation-Vorlage verwendet unseren vorgefertigten Provider von:

s3://binxio-public-{{AWS::Region}}/lambdas/cfn-secret-provider-latest.zip

Demo

Um das einfache Beispiel aus diesem Blogbeitrag zu installieren, geben Sie ein:

aws cloudformation create-stack 
 --stack-name cfn-secret-provider-demo 
 --template-body file://cloudformation/demo-stack.yaml

aws cloudformation wait stack-create-complete  
 –stack-name cfn-secret-provider-demo

um das Ergebnis zu validieren, geben Sie ein:

aws ssm get-parameters-by-path 
  --path /iam-users 
  --recursive 
  --with-decryption

Fazit

Mit dem Custom CloudFormation Secret Provider können Sie einen IAM-Zugangsschlüssel und das daraus abgeleitete SMTP-Passwort erstellen und im Parameterspeicher speichern, wo es verschlüsselt ist und der Zugriff überprüft und kontrolliert werden kann.
Wenn Sie so weit gekommen sind, möchten Sie vielleicht auch Ihre SES-Domänenidentitäten und DKIM-Datensätze mit CloudFormation 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.

Contact

Let’s discuss how we can support your journey.