4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SendGridでは親ユーザーだけでなくサブユーザーを使おう(&サブユーザーに成り代わってAPIリクエストする)

Posted at

SendGrid のマーケティングキャンペーンの利用料を定期的に監視する必要があった。

ここでは、親ユーザーで発行したAPI KEYを使ってサブユーザーに成り代わってリクエストする方法を紹介する。

SendGridを親ユーザーのみで利用する場合の注意点

SendGridは、サブユーザーを使わずに親ユーザーのみで運用することができる。しかし以下の問題があるためサブユーザーを切って運用したほうが良い。

  • IPアドレスがSPAMトラップなどに見舞われたとき、メールが届かなくなる
  • IP Reputationが落ちてSendGrid側からユーザーを停止されると、メールが送れなくなる

IPアドレスがSPAMトラップなどに見舞われたとき、メールが届かなくなる

こちらについては、サブユーザーごとに利用するIPアドレスを分散して利用するで対処できる

IP Reputationが落ちてSendGrid側からユーザーを停止されると、メールが送れなくなる

IP Reputation とはメール配信の健全性を表す一つの指標。 80%以上だとGood

ユーザー停止のリスクを減らすには、サブユーザーごとにIPアドレスを分けてIP Reputationを分散させておく対処が効く。

親ユーザーはサブユーザーに成り代われるが、データはほとんど独立している

親ユーザーは「Switch User」(下図)を利用することで、サブユーザーとしてログインすることができる。親ユーザーとサブユーザーがほぼ切り離されていて、サブユーザーを新規に作成するとほとんどの情報は引き継がれない。

親ユーザーからサブユーザーの統計情報やマーケティングキャンペーンの情報を閲覧するには、一度サブユーザーとしてログインする必要がある。

image.png

親ユーザーで発行した API KEY でサブユーザーの情報を取得する

私は上述の問題点から、 SendGrid のサブユーザーは独立したチームや部署ごとに割り当てることをおすすめしている。一方で、サブユーザーごとの利用状況をモニタリングしたいという要求も出てくる。

親ユーザーで発行した API KEY を用いてサブユーザーごとの情報を取得したいと思って、 SendGrid のドキュメントを眺めてみた。

サブユーザの代理で要求を行う
on-behalf-ofヘッダを利用することで、親アカウントが特定サブユーザの代理で要求を発行できるようになります。この方法は、サブユーザの権限にスイッチすることなく、一括でサブユーザの設定を変更したり、管理したりする際に利用できます。このヘッダを利用する場合、シンプルに On-Behalf-Of: サブユーザのユーザ名 と指定するだけです。

出典: https://sendgrid.kke.co.jp/docs/API_Reference/Web_API_v3/How_To_Use_The_Web_API_v3/authentication.html#--

SDK で成り代わる

REST API では on-behalf-of を使えばいい ということがわかった。 SDK でも対応していることを願って探してみると……。

SendGridAPIClientクラスの中に、impersonate_subuserというキーワード引数を見つけた。

以上をまとめてコードを書くと次のようになる。 これで sg はサブユーザーとして振る舞うことができる


from sendgrid import SendGridAPIClient
import os

API_KEY = os.environ.get('SENDGRID_API_KEY')
subuser_username = 'SAMPLE_SUBUSER'

sg = SendGridAPIClient(API_KEY, impersonate_subuser=subuser_username)
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?