Home
Blog
Products
Profile
Study
Collatz
© 2024 Oizumi Yuta

【個人開発】問い合わせフォーム追加

2024-10-23

今日の開発内容

AWS の SNS と Lambda を使って問い合わせフォームを追加した。

SNS トピックとサブスクリプションの作成

トピックの作成

以下のドキュメントにしたがいトピックを作成する。

Amazon SNS トピックの作成

細かい設定はせず、タイプ、名前、表示名だけ設定して作成した。

サブスクリプションの作成

次にサブスクリプションを作成する。

Amazon SNS トピックへのサブスクライブ

サブスクライブ先のトピックとして先ほどのトピックを選択し、プロトコルは E メールとした。これでトピックにパブリッシュすることで指定したサブスクリプションのメールアドレスにメールが届くようになる。

SNS のパブリッシュ API を叩く Lambda 関数

AWS SDK for JavaScript v3 ライブラリ

@aws-sdk/client-sns
を使用する。

  • @aws-sdk/client-sns SNSClient
  • @aws-sdk/client-sns PublishCommand
import { PublishCommand, SNSClient } from "@aws-sdk/client-sns";

export const handler = async (event) => {
  console.log('--- EVENT ---', event)

  const {subject, email, content} = event;

  const snsClient = new SNSClient({});

  try {
    // パブリッシュ
    const response = await snsClient.send(
      new PublishCommand({
        Subject: '【ここえほん】ユーザーお問い合わせ',
        Message: `ユーザーからお問い合わせが届きました。\n\n
■お問い合わせ件名:\n${subject}\n
■送信元メールアドレス:\n${email}\n
■内容:\n${content}`,
        TopicArn: process.env['SNS_TOPIC_ARN'],
      }),
    );

    // 以下省略

参考

  • Amazon SNS トピックの作成
  • Amazon SNS トピックへのサブスクライブ
  • @aws-sdk/client-sns SNSClient
  • @aws-sdk/client-sns PublishCommand