2
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 1 year has passed since last update.

Lambda(Go)とAuroraを接続するときにDataAPIとRDS Proxyがよくわからなかったのでまとめる

Last updated at Posted at 2022-10-13

はじめに

Lambda(Go)をServerlessFrameworkでデプロイして、次にAuroraを利用してデータ取得をしようとしたとき色々知識がなかったので苦戦しました

そこで、知識面で参考になりそうなことをまとめていきます

なぜDataAPIかRDSProxyが必要なのか

まず最初に思ったのはなぜDataAPIまたはRDSProxyを経由してDBにアクセスしないといけないのかというのでした
Auroraにはエンドポイントがあるのでそれで直接アクセスでよいのではと考えました
しかし、Lambdaからやる場合は直接ではなく、どちらかを仲介したほうが良いです。

使う理由は「DBへの接続数が多くなってしまうのを防ぐため」です。接続プーリングをうまいことやってくれるようでした

2つの違い

Q. RDS Proxy と DataAPIの違いは何でしょうか?
A. RDS Proxy はデータベースへの接続をプールすることでバックエンドのRDSの負荷を軽減しつつ、コネクション作成のコストを軽減します。Data API はデータベースのコネクションではなくAPIを利用してクエリを実行できる機能です。

このように公式では説明があります

DataAPIのメリット/デメリット

DataAPIは基本的にお金がかからないはずです
デメリットとしてはベータ版なのでまだ記事も少ないです
VPC内に置く場合はインターネット接続が必要なのでNATの用意が必要です

今回Goの接続は以下を参考にしました

main.go
	conf := &rds.Config{
		ResourceArn: "DBクラスターのリソースARN",
		SecretArn:   "DBを紐づけたシークレット",
		Database:    "テーブル名",
		AWSRegion:   "ap-northeast-1",
		SplitMulti:  false,
		ParseTime:   true,
	}
	dsn := conf.ToDSN()

	DB, err = gorm.Open(mysql.New(mysql.Config{
		DriverName: rds.DRIVERNAME,
		DSN:        dsn,
	}), &gorm.Config{})

RDS Proxyのメリット/デメリット

RDS Proxyは料金が発生してしまうのでそこがデメリットです
エンドポイントはRDSと同じように使えるのでコードはいままで通りで動かせます

RDS ProxyとAuroraがしっかり疎通できているかのチェックには以下のコマンドが役立ちます

aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

このコマンドでUNAVAILABLE(PENDING_PROXY_CAPACITY)は時間が解決してくれます。
Targets[]のときは、RDS Proxyのターゲットが設定されてるか確認します

個人的につまづいたところ

今回GoのLambdaでGO SDKを利用してSESからメールを飛ばす処理があったのですが、パブリックサブネットに配置しても送信できないというトラブルがありました

この記事にある通りですが、LambdaにはパブリックIPがそもそもないため、インターネットゲートウェイを通して外部にアクセスすることはできないようです

なのでNATインスタンスを作成することでAPIをたたけるようにしました

おわりに

Lambdaの環境を構築するのに3週間ほど使ってしまいましたが、Lambdaとは?というところからなんとか本番環境構築まで行うことができました

そこで知りたかった内容をこの記事にまとめましたので誰かの役に立つと嬉しいです

参考

2
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
2
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?