서버가 없는 이메일 전송 및 수신, CDK 방식
7732 단어 serverlessawscdkjavascript
You can find the source code of the AWS CDK Constructs in the ses-email-forwarding GitHub repository. Besides that, I also made ses-verify-identities available as separate AWS CDK Constructs.
AWS SES 설정 단계
당신은 자신의 도메인 이름으로 로그인 페이지를 만든 적이 있습니까?아니면 다른 별명으로 이메일을 받고 싶었나요?아니면 당신이 가지고 있는 도메인 이름에 전자 우편 주소를 사용하고 싶을 뿐입니다. 번거롭게 메일 서버를 설정하지 않고 기존의 우편함으로 메일을 전송하시겠습니까?만약 그렇다면, 나는 너에게 알려줄 좋은 소식이 좀 있다!😊
처음에, 나는 서버가 없는 전자 우편을 보내고 받는 데 사용되는 aws-lambda-ses-forwarder이라는 라이브러리를 사용했다.항상 다음 수동 단계를 따라야 합니다.
Configure SMTP for AWS SES, 내 인증 도메인을 사용하여 이메일을 보낼 Gmail을 설정합니다.
AWS CDK는 구조를 위해 제작되었습니다.
작동 방식을 보여주는 가장 좋은 방법은 몇 줄의 코드를 보여주는 것입니다.
new EmailForwardingRuleSet(this, 'EmailForwardingRuleSet', {
enableRuleSet: true,
emailForwardingProps: [{
domainName: 'example.org',
verifyDomain: true,
fromPrefix: 'noreply',
emailMappings: [{
receivePrefix: 'hello',
targetEmails: ['[email protected]']
}]
}]
});
코드는 EmailForwardingRuleSet
구조를 사용하여 모든 내용을 설정합니다.가장 중요한 사항은 다음과 같습니다.receivePrefix
을 정의합니다. 전자 우편의 별명과 targetEmails
의 목록입니다.별칭/접두어로 보낸 모든 전자 메일이 대상 전자 메일로 전달됩니다.전달된 e-메일의 접두어는 [email protected]
입니다.AWS CDK 스택 배포
이제 AWS CDK 스택에 모든 컨텐츠를 넣으면 됩니다.시작하기 전에 새 CDK 스택을 초기화하고 내 CDK 구조를 설치합니다.
cdk init app --language=typescript
npm i -D @seeebiii/ses-email-forwarding
그런 다음 스택을 포함하는 새 파일을 만듭니다.예를 들면 다음과 같습니다.const app = new cdk.App();
class EmailForwardingSetupStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new EmailForwardingRuleSet(this, 'EmailForwardingRuleSet', {
// define your config here
});
}
}
new EmailForwardingSetupStack(app, 'EmailForwardingSetupStack', {
env: {
account: '<account-id>',
region: '<region>'
}
});
마지막으로 cdk deploy
명령을 사용하여 창고를 배치합니다.도메인 이름 검증과 SES 설정 등 다른 모든 것이 당신을 위해 완성될 것입니다.이제 너는 서버가 없는 전자메일을 받는 것부터 시작할 수 있다.마지막으로 AWS SES를 사용하여 이메일을 받는 서버 아키텍처가 없습니다.
모두 1.)받은 e-메일은 SES에서 처리합니다.SES는 2.)S3로 이동한 다음 3으로 이동합니다.)Lambda 함수를 호출합니다.Lambda 함수 4입니다.)S3 및 5에서 e-메일을 로드합니다.)Gmail 또는 다른 대상 e-메일 주소로 전달합니다.만약 네가 흥미가 있다면, 나는 include AWS Lambda functions inside a CDK construct을 어떻게 실현하는지에 관한 또 다른 블로그 글을 썼다.
AWS SES를 사용하여 이메일 보내기
불행히도 자동화할 수 없는 남은 절차다.위의 CDK 스택을 AWS 계정에 배포하려면 create SMTP credentials in AWS SES이 필요합니다.이러한 자격 증명을 사용하면 모든 e-메일 애플리케이션이나 Gmail 등의 공급업체에서 e-메일을 보낼 수 있습니다.그러나 AWS SES에서 보낸 사람의 도메인을 확인한 경우에만 유효합니다.그렇지 않으면 AWS SES를 통해 스팸메일을 보내지 않도록 이메일이 인증된 이메일 주소로만 전송됩니다.CDK 구성 검증 대상 e-메일 주소를 사용하려면 설정
verifyTargetEmailAddresses
을 사용하십시오.기타 솔루션
너는 아마도 이미 자신에게 이 문제가 정말 다른 해결 방안이 없는지 물었을 것이다.서버 없이 이메일을 보내고 받을 수 있는 다른 해결 방안도 있다는 것을 보증합니다.그러나 그것들은 내가 예상한 대로 나의 문제를 해결하지 않았거나, 나는 그것들이 너무 늦었다는 것을 발견했다.다음과 같은 몇 가지 대안이 있습니다.
aws-lambda-ses-forwarder-> Lambda 함수에 사용되는 NPM 패키지입니다.SES 이벤트를 트리거하여 Gmail과 같은 전자 메일로 전달할 수 있습니다.불행하게도 Lambda 함수에서만 이 라이브러리를 사용하려면 필요한 모든 절차를 수동으로 설정해야 합니다.또한 e-메일을 전달할 수 있도록 매우 유연한 구성을 제공합니다.
aws-cfn-ses-domain->CloudFormation은 도메인 및 이메일 인증을 위한 사용자 지정 리소스입니다.클라우드 포메이션에서 인프라를 작성하면 도움이 되지만, 일반적인 전자 우편 처리와 같은 다른 부분이 부족합니다.
S3 Email->S3과 SE의 조합으로 전자메일은 S3에 저장되고 S3는'이메일 인터페이스'로 사용된다.
simplelogin.io-> 다양한 이메일 별칭을 설정하는 SaaS 어플리케이션deploy it yourself on AWS을 사용하여 스택을 SES에 연결할 수도 있습니다.이것은 아마도 내가 위에서 언급한 사용자 사례를 해결하는 가장 우호적인 방식일 것이다.그러나 나는 단지 대부분의 일을 실현한 후에야 그것을 발견했다.이 밖에 위탁 관리 절차는 너무 많은 일을 해야 할 것 같다.
improvmx.com-> SaaS 어플리케이션과 유사합니다.이오.이것은 전자 우편 별명을 만들고 전자 우편을 Gmail 등 다른 주소로 전송할 수 있습니다.이것은 제 CDK 구조가 당신에게 제공할 수 있는 기능과 매우 비슷합니다.다른 것과 마찬가지로, 나는 대부분의 것을 실현한 후에야 이 해결 방안을 발견했다.불행히도, 내가 아는 바에 의하면, 아직 위탁 관리 버전이 없다.
결론
제 첫 AWS CDK 구조를 구축하는 과정에서 많은 것을 배웠습니다!까다로운 부분은 bundle a Lambda function inside the AWS CDK Construct입니다.나는 새로운 로그인 페이지나 다른 전자메일 별명의 설정을 쉽게 확장할 수 있기 때문에 결과에 매우 만족한다.당신은 나의 해결 방안이 어떻다고 생각합니까?아래의 평론에서 저에게 알려주시거나 인터넷에서 저를 언급해 주십시오!
《Serverless Sending and Receiving E-Mails, the CDK Way우편》은 가장 먼저 Sebastian Hesse - Software Engineer에 발표되었다.
Reference
이 문제에 관하여(서버가 없는 이메일 전송 및 수신, CDK 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/seeebiii/serverless-sending-and-receiving-e-mails-the-cdk-way-2l79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)