AWS Elasticsearch Service を IAM ロールで認証する

Elasticsearch Service を使おうと思ったら、VPCでセキュリティグループに入れるのができないみたいで。無制限かIPで制限がIAMロールか... HTTPのAPIなのでどうやらS3やDynamoDBみたいに使うものってことらしいですね。

Signing an Amazon Elasticsearch Service Search Request — AWS SDK for PHP documentation

AWS SDKのこれを使えというやつはPSR-7のRequestインターフェースを想定しているので、本当にIAMの認証が通るか試してみました。

Credentialsがハードコードなのはダメって言われてるので、じっさいはdotenvとか使いましょう。

それにしても、もっとこう生curlとか古いGuzzleとかの勝手なやつでもいける形にはならなかったのかな、って、SignatureV4::signRequest() の中見たら、おおぅ、そりゃたしかに RequestInterface みたいなやつじゃないとダメだわこれ、ってなりました。

世の中PSR-7以前はもうレガシー扱いか... Guzzle を 6 に上げると Codeception が 2.1 じゃないとダメでいろいろ巻き添え。最新を追い続けられるようメンテしてないプロジェクトだと、こういう新しいサービスをぱっと使うのがホント難しいですね。