(安心過好年)AWS Lambda with AWS SES — 使用 AWS Lambda 快速撰寫拜年 Email service

Whien
5 min readFeb 20, 2018

--

阿明今天早起,突然收到 PM 寄來的一封信,內容是這樣:

「阿明,我PM,新年快樂啊!喔對了,剛剛老闆突然說他要跟客戶拜年,我記得之前好像有用個什麼 AWS 的寄信對吧?我想你應該很快就可以完成了,是不是用你一點點時間幫我做一下,反正也當收心啦…」

阿明好氣又無奈的只好爬起來 …

(以上純屬虛構,如有雷同純粹剛剛好…)

撰寫 Lambda Code

不過幸好阿明很機靈會用 Lambda,於是阿明起身打開 terminal

> yarn init
> yarn add aws-sdk

然後打開 VSCode 開始撰寫新年的第一行程式碼

const aws = require('aws-sdk');
const ses = new aws.SES({
region: 'us-west-2',
accessKeyId: YOUR_AWS_ACCESSKEYID,
secretAccessKey: YOUR_AWS_SECRET_ACCESSKEY
});
exports.handler = (event, context, callback) => {
const { httpMethod, body } = event;
const { to, subject, text, source } = JSON.parse(body);
const res = {
"statusCode": 200,
"headers": {
"Content-Type": "text/html"
},
"body": JSON.stringify({
status: 200,
message: '寄送成功',
payload: null,
error: null
})
};
if (httpMethod.toUpperCase() === 'POST') {
const eParams = {
Destination: {
ToAddresses: [to]
},
Message: {
Body: {
Html: {
Charset: 'UTF-8',
Data: text
}
},
Subject: {
Data: subject
}
},
Source: source
};

ses.sendEmail(eParams, function(err, data) {
if(err) {
callback(null, JSON.stringify(err));
}
});
}
callback(null, res);
}

然後解壓縮建立一個 AWS Lambda 方法,將檔案上傳完成後,就結束了這次寫程式的工作。

那如何寄發呢?

申請一個 API Gateway

移動到畫面最上面在 Designer 的項目中點擊 API Gateway

在選擇 Create a new API

選擇後簡單的填寫基本規則

最後 Add

點擊 Save 後就會出現詳細資料有個 Invode URL

然後我們來寄信看看

> curl -X POST https://invokeURL.execute-api.us-east-1.amazonaws.com/prod/EmailService -d '{"to": "sal95610@gmail.com", "subject": "Test", "text": "<h1>PM 我阿明啦!新年快樂唷</h1>", "source": "support@yosgo.com"}'

最後收信吧!

10分鐘後,阿明趕緊通知 PM 然後繼續打 switch 去了。

如果想知道更詳細如何建立 Lambda 的步驟,可以參考上篇文章

AWS lambda serverless with slack notification — 手把手建立一個不需要維護伺服器的 slack 訊息通知

如果此文章對您有幫助請給我個鼓掌~~可以大大鼓勵到我的動力哦 💪💪

--

--

Whien
Whien

Written by Whien

遨遊在硬體與軟體世界中,對於計算機一切事物都充滿好奇及熱情。

No responses yet