Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
aws-ses
Search
tannai
October 16, 2014
Technology
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
aws-ses
tannai
October 16, 2014
More Decks by tannai
See All by tannai
redash patche at dmm
yuukigoodman
0
770
akibago-2018-10-30
yuukigoodman
0
91
serverless-design-and-streaming-date-processing-service
yuukigoodman
0
1.1k
alexa-changes-development-process
yuukigoodman
0
1.7k
VUIとAlexaによるちょっと未来の体験の話2
yuukigoodman
0
940
regrowth2016alexa
yuukigoodman
0
1.4k
Rails App Deployment with CodeDeploy
yuukigoodman
0
1.6k
cognito-userpools-in-production
yuukigoodman
4
8.9k
aws-lambda-in-practice
yuukigoodman
2
2.1k
Other Decks in Technology
See All in Technology
Geolonia の開発現場における AIの活用について
miya0001
0
100
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
210
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
940
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
3k
GoにおけるFFIのこれまでとこれから
goccy
5
3.4k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
250
Reactの設計論
uhyo
24
13k
安心して変更できるWebフロントエンドの作り方
pirosikick
4
2.5k
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
820
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
Omarchy Quattro の日本語設定周り
simosako
2
180
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
Designing for Performance
lara
611
70k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
A better future with KSS
kneath
240
18k
A Modern Web Designer's Workflow
chriscoyier
699
190k
The Curse of the Amulet
leimatthew05
3
14k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Transcript
AWSのSimpleな話(仮) 社内勉強会 2014/10/16 @saisa6153
近況報告
引っ越しました 荏原中延 → 北品川
アルトサックス始めました 朝に品川埠頭で吹いています
明日で24歳です 危うく深夜作業で歳を重ねるところだった
本題
メールを送りたい
でもMTAは何かアレ 主に運用面
None
None
None
ドメイン/メアドの設定 • 送信にあたり、ドメイン所有権を証明する ◦ 指定のTXTレコードを設定 ◦ TTLが切れ次第確認される ◦ SPFに相当(?) •
同時にDKIM認証を設定 ◦ 指定のCNAMEレコードを設定 ◦ 必須ではないが行ったほうが良い ◦ ここらへんはRoute53なら2クリックなので良い • Sandbox環境では送信先メアドに制限 ◦ コンソールから設定したverifiedなものに制限 ◦ Production移行時に申請すると制限解除
SPF / DKIM • SPF(Sender Policy Framework) ◦ 送信元IPに紐づく認証 ◦
送信元の情報をDNSで公開 • DKIM(Domain Keys Identified Mail) ◦ 送信元による署名に基づく認証 ◦ メールに署名し、公開鍵をDNSで公開 • オンプレなら面倒だけどSESは超簡単 • 詳しくはAWS Black Belt Tech
SMTP Endpoint用IAM • SESのコンソールから作成する • 開発段階ではARNを広く取る ◦ “ses:*”
最初の一歩 >>> import boto.ses >>> conn = boto.ses.connect_to_region( ... 'us-east-1',
... aws_access_key_id='XXXXXXXXXXXXXXXXXXXXX', ... aws_secret_access_key='XXXXXXXXXXXXXXXXXXXXXXXXXXXX') >>> conn SESConnection:email.us-east-1.amazonaws.com
最初の一歩 >>> conn.list_verified_email_addresses() {'ListVerifiedEmailAddressesResponse': { 'ResponseMetadata': { 'RequestId': 'XXXX-YYYY-ZZZZ-AAAA’}, 'ListVerifiedEmailAddressesResult':
{ 'VerifiedEmailAddresses': ['
[email protected]
']}}} >>> conn.send_email( ... ‘
[email protected]
', ... 'Testmail subject', ... 'Here is body', ... ['
[email protected]
']) {'SendEmailResponse': { 'ResponseMetadata': { 'RequestId': 'XXXX-YYYY-ZZZZ-AAAA'}, 'SendEmailResult':{ 'MessageId': '0000000000-11111111111111-22222222222-333333333'}}}
Sender • 一斉送信は非同期に並列処理したい • workerをガッツリ立てていく戦略 • 同AZ内のSession用RedisをBrokerに利用 • 最初に送信対象リストをDynamoDBに作成 ◦
送信中にAZ障害が起きてもfailover先でリトライ可能 • 送信ステートをDynamoDBに保存 ◦ 送信中: workerが送信に着手 ◦ 送信完了: workerが送信を完了した
Bouncer • 正月など特殊な場合はBounceの増加が懸念さ れる • Sender同様、非同期workerを並列に • SQSの有効期限(24h)で全てDequeueするた め並列度を適宜上げる •
DynamoDBにBounceアドレスを記録しMySQL のカウントを更新する • 複数回Hard Bounceするなら削除する
None
DynamoDB • Multi-AZでリトライを可能にしつつworkerを並 列させるために必要 • メール送信時はstateのUPDATEが走るため Strong Consistency • Bounce処理時はPUTだけなのでEventual
Consistency • 良い感じに2iが必要(多分) • テーブルは使い捨て(DROPもするか?) ◦ UPDATEコストの方が高いっぽい ◦ UUIDかDATETIMEでテーブル作れば良いのでは
SES / SNS / SQS • 超シンプル!! ◦ Simple Email
Service ◦ Simple Notification Service ◦ Simple Queue Service • Bounceが発生したら ◦ SESがBounceを検知 ◦ SESがSNSを発生 ◦ SNSがSQSへEnqueue
None
None
おしまい Happy Sending!