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
250
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
96
serverless-design-and-streaming-date-processing-service
yuukigoodman
0
1.1k
alexa-changes-development-process
yuukigoodman
0
1.7k
VUIとAlexaによるちょっと未来の体験の話2
yuukigoodman
0
950
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
hackers_champloo_2026_tidb
makocchi
0
140
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
150
夫婦で子育てするための育児標準化
codmoninc
PRO
0
210
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.2k
USB PDを使ってスマホを労わりたい
raspython3
0
160
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
180
継続的なAIコスト最適化
bgpat
1
300
【Data Engineering Summit2026_登壇資料】医療ビッグデータ×AIエージェントを支えるデータ基盤とハーネスエンジニアリング
jmdc_presentation
0
140
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
310
遠藤な_めぐろLT #38 「社内のAI活用推進」@麻布台_20261009
endonanana
0
120
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
370
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
160
Featured
See All Featured
Leo the Paperboy
mayatellez
10
2.4k
Bash Introduction
62gerente
615
220k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
sira's awesome portfolio website redesign presentation
elsirapls
0
450
Prompt Engineering for Job Search
mfonobong
0
510
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
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!