LoginSignup
0
1

前回の続きになります!
今回はHTMLの更新とAPIをたたくJSをS3にのせて実際にメールが送信されるか確認します。
前回記事はこちら

S3でサーバーレスなHPを立てるお話はこちら

S3のファイルを更新

HTML

今あるindex.htmlを以下のものに変更します。
何の変哲もない、単純な入力フォームですね。

image.png

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>お問い合わせフォーム</title>
</head>
<body>
    <form id="contactForm" method="post">
        <label for="name">名前:</label><br>
        <input type="text" id="name" name="name" required><br><br>
        
        <label for="email">メールアドレス:</label><br>
        <input type="email" id="email" name="email" required><br><br>
        
        <label for="message">メッセージ:</label><br>
        <textarea id="message" name="message" rows="4" required></textarea><br><br>
        
        <input type="submit" value="送信">
    </form>
    <script src="script/sender.js"></script>
</html>

これだけでは何もできないのでここにボタンを押下するとAPIをたたくようにJSを追加します。

JSのコードを追加

続いてS3に新たにフォルダを作成し、JSのスクリプトを配置します。
フォルダ作成よりscriptフォルダを作成します。

image.png
image.png

ここに、formのsubmitアクションに反応するJSのコードを追加します。
scriptフォルダに入りアップロードを選択します。

image.png

追加するJSはこちら

sender.js
document.getElementById('contactForm').addEventListener('submit', function(event) {
    event.preventDefault();
    
    var formData = {
        name: event.target.name.value,
        email: event.target.email.value,
        message: event.target.message.value
    };

    fetch('YOUR_API_GATEWAY_ENDPOINT', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(formData)
    })
    .then(response => response.json())
    .then(data => {
        console.log('Success:', data);
        alert('メッセージが送信されました');
    })
    .catch((error) => {
        console.error('Error:', error);
        alert('メッセージの送信に失敗しました');
    });
});

さて、プログラム内にYOUR_API_GATEWAY_ENDPOINTとありますが、これは作成したAPI GatewayのURLになります。
URLの場所はこちらです。

API GatewayのURL

API Gateway>API>作成したAPI

image.png

左のメニューにあるステージを押下し、作成したステージ、私の場合はv1を選択します。

image.png

そのまま下にスクロールすると「URLを呼び出す」があるのでこのURLをJSのプログラムに記入します。

image.png

送信テスト

ここまでできると後は送信ボタンを押すだけです!
実際にメールが届くか確認してみてください。

メールが届かなかったとき

CloudWatchのログを見ましょう!
ロググループより、Lambdaで作った関数のグループを選択。

image.png

ログストリームにLambdaの実行結果が出力されているのでこちら確認しつつ修正を加えていきます。

image.png

感想

実は思いもよらないところで何回も躓き、時間がかかってしまいました...
ただ、構成自体はとても簡単にできるのでいい勉強になりました。

0
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
0
1