ses触る
自分で構築してみたいなと思っていたので触ってみる。
全然関係ないけど下記も申し込んでみた。
とりあえず料金チェック。
無料枠がある。無職に優しい。
最初にメールアドレスとドメインの認証をするぽい。
メールの方の検証は確認用リンクが飛ぶのでそれをクリックすれば良いけど、ドメインの方はDNSの設定がいるぽい?
DNS設定でDKIMの設定をする必要があるぽい?
多分Easy DKIMで発行されたドメインIDをCANMEとして登録するぽいが、一旦スルーで進める。
JSのサンプルコード。
Goで書きたいので探す。
ちなみにdeveloper guideは下記。
ドメインを検証する記事メモ
後でガイドを読む
下記のサンプルコードをそのまま試すと、エラーになる。
operation error SESv2: SendEmail, get identity: get credentials: failed to refresh cached credentials, no EC2 IMDS role found, operation error ec2imds: GetMetadata, request canceled, context deadline exceeded
多分credentialの情報設定してないから?
下記を参考にしてアクセスキーを作成。
後で読む
アクセスキー管理ベスプラ
aws configの取り扱いまとめ
アクセスキーは~/.aws
に共有情報として置いたり、環境変数で読み込むのが良さそうだけど、今回はとりま環境変数ファイルにベタ書きしておいた(環境変数ファイル自体は、.gitignoreしているのでほぼ環境変数と変わらない)。
アクセスキー設定して認証されるようにしたらses api叩けるようになったが、requestがエラーになった。
このエラー自体はregionを指定してなかったから発生してた。
作成したユーザーにses.SendMailの権限付与したらいけそう。
operation error SESv2: SendEmail, https response error StatusCode: 0, RequestID: , request send failed, Post "https://email..amazonaws.com/v2/email/outbound-emails": dial tcp: lookup email..amazonaws.com: no such host
IAMはGCPとほぼ同じな感じはするが、微妙に違うので後で読む。
GCPとの違い的にはサービスアカウントがなさそう、どのポリシーをアタッチすれば良いのかが絶妙にググれない。
json形式のポリシー?を自分で作ってやるのかも。
とりまsesのfull accessを付与したら送信できた。
怖すぎるので一旦アクセスキーを無効化しておいた。
リクエスト投げてちゃんと無効化されたことを確認。
残作業
- ✅気になるところググる
- ✅localstackで動くようにしてみる?
- ses v2はpro版でしかサポートされてないぽいので一旦スルー。ローカルでメールのpreviewもできるのは便利そう。
- ✅ユーザー削除
本番で運用するならバウンスの通知が必要そう。
ses id検証済みのアカウントも消した。
大体わかったのでdone