Nao000のぶろぐ

蝶を追っている少年になりたい

Amazon SNS からの通知を PHP アプリで検証する方法のChatGPT リンク

ChatGPT に聞いたときのメモ

https://chatgpt.com/share/68629c78-d140-8003-991e-bacaa9da5721

Amazon SNS 自体の使い方は公式サイトや「試してみた、やってみた」系の記事を過去に見たはずなのですが、それっぽいキーワードで検索しても、クリックしたあとが無い。以前はどうやって試したのだろうか...

以下を見ていたのかもしれないです。

https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-create-topic.html

ChatGPT に聞いたものは、PHPアプリへのリクエストが Amazon SNSであることを検証する具体的な方法を聞きたかったときのものです。

検証についての記事は以下の公式の記事にありますが、具体的なコードを知りたかったんだと思います。

https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-verify-signature-of-message.html

特にこちらに検証方法が書いてあります。

https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-verify-signature-of-message-verify-message-signature.html

そもそも $_POST が受け取れるのは Content-Type による、ということを知らなかった

PHP アプリにリクエストしたら、そのボディ部分は必ず $_POST で受け取れると思ってましたが違いました。業務のコードでも確かに file_get_contents('php://input');で受け取るコードを見たことがありますが、見かけただけで意図を知りませんでした。

公式サイトにも以下のように書いてありました。

説明 ¶

Content-Type に application/x-www-form-urlencoded あるいは multipart/form-data を用いた HTTP リクエストで、 HTTP POST メソッドから現在のスクリプトに渡された変数の連想配列です。

https://www.php.net/manual/ja/reserved.variables.post.php

実際に必要な場面にならないと知らないものでした。ChatGPT無かったら自分はこれに辿り着けたのか分からないです。