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
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
770
10分で知る最近のOmarchy
komagata
0
280
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
120
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
170
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
190
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
21
13k
Minecraft JavaのMODをSwiftで作る
1mash0
0
140
Screen Lens - 今見てる画面を翻訳する
komagata
0
270
omasushiというライブラリを作った
polidog
PRO
0
220
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.6k
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
370
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
660
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
KATA
mclloyd
PRO
35
15k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
990
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
From π to Pie charts
rasagy
0
360
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
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!