3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSを使って簡単にメール送信機能を作成しよう

メール送信機能って、自前で作るのめっちゃだるくない?
プロトコル、サーバー、セキュリティ、色々考えること多い,,,,,.
そこで、簡単に作れるAWSのやり方を書きます

使用するサービス

  • apigateway
  • lambda
  • ses

手順

1. APIGatewayの設定

スクリーンショット 2023-12-23 7.23.09.png
REST APIを選択
スクリーンショット 2023-12-23 7.23.17.png
新しいAPIを選択し、任意のAPI名を入力し、APIを作成する
スクリーンショット 2023-12-23 7.23.52.png
後ほど、設定しますが、一旦次へ行きます。

2. Lambdaの設定

スクリーンショット 2023-12-23 7.25.56.png
一から関数を作成します。
スクリーンショット 2023-12-23 7.26.04.png

次に、コードを記述します。

import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses";
const ses = new SESClient({ region: "ap-northeast-1" });

export const handler = async(event) => {
  const command = new SendEmailCommand({
    Destination: {
      ToAddresses: ["送信先のメールアドレス"],
    },
    Message: {
      Body: {
        Text: { Data: "Test" },
      },

      Subject: { Data: "Test Email" },
    },
    Source: "送信元のメールアドレス",
  });

  try {
    let response = await ses.send(command);
    response.statusCode = 200;
    response.body = "OK";
    return response;
  }
  catch (error) {
    return error;
  }
  finally {
    // finally.
  }
};

これで実行テスト!!
とは行きません。メールアドレスの検証が必要です。

3. SESの設定

スクリーンショット 2023-12-23 7.33.58.png
IDの作成をします。
ここでは、開発で使用するメールアドレスを登録してください。
スクリーンショット 2023-12-23 7.35.34.png
ID作成完了したら、画面右上の新しい確認Eメールへをクリックします。
スクリーンショット 2023-12-23 7.36.02.png
クリック後、登録したメールアドレスへ以下のようなメールが届いています。
リンクをクリックします。
スクリーンショット 2023-12-23 7.36.26.png
おめでとうございますの画面が表示されればメールアドレスの検証に成功しました。
これで使用できます。
スクリーンショット 2023-12-23 7.35.02.png

本番環境では、サンドボックスというものがあり、その設定が必要になります。

これで、lambdaを実行すると,,,
まだ送信できません。エラーになるはずです。
なぜなら、lambdaにはメールを送信する権限が付与されていないからです。
なので、権限を付与しましょう

4. lambdaに権限付与

IAMサービスを開きます。
ポリシーを選択します
スクリーンショット 2023-12-23 23.54.12.png
ポリシーの作成をクリック
スクリーンショット 2023-12-23 23.55.34.png
アクセス許可を指定で、JSONを選択し、以下のポリシーを追加してください

{
 "Version": "2012-10-17",
 "Statement": [
 {
 "Effect": "Allow",
 "Action": [
 "ses:SendEmail",
 "ses:SendRawEmail"
 ],
 "Resource": "*"
 }
 ]
}

スクリーンショット 2023-12-23 7.59.55.png
確認して作成します。
スクリーンショット 2023-12-23 8.00.32.png
スクリーンショット 2023-12-23 8.00.46.png
次に作成したポリシーをロールに付与します。
ロールを作成してください 入力は任意の文字。
スクリーンショット 2023-12-23 8.02.37.png
スクリーンショット 2023-12-23 8.02.52.png
スクリーンショット 2023-12-23 8.03.23.png
スクリーンショット 2023-12-23 8.03.43.png
スクリーンショット 2023-12-23 8.06.36.png

lambdaの設定=>アクセス権限=>編集で今作成したロールにします。

スクリーンショット 2023-12-23 23.59.23.png
これで、lambdaのテストでメールが送信されるようになります。

最後にAPIGatewayを開いて、エンドポイントを作成したラムダに設定して、テストを実行してみましょう

スクリーンショット 2023-12-23 8.09.27.png
スクリーンショット 2023-12-23 8.11.32.png
スクリーンショット 2023-12-23 8.11.53.png

完了できました。

セキュリティを意識した設定

これでは、デプロイ後にapiのリンクを叩けば、無限にメールを送信できるようになってしまいます。

apigatewayには、IP制限や鍵の設定ができるのでそれを設定してください。
また、apigatewayのリンクをむき出しにするのもよくないので、別のapiを用意して経由する形で扱うのがいいでしょう。

### 最後に
めっちゃ簡単にメール送信機能の作成ができました。
aws様様ですね。

参考

3
3
1

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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?