皆様お久しぶりです!ぎらくさです!
GW中に彼女の誕生日がありまして
その際に作成したデートプラン通知システムの構成を
備忘録としてqiitaに残したいと思います。
まず、最初に要件ですが
要件としては主に2つです。
これから行く場所の情報を予定時間の30分前に通知したい。
自分に通知がくるのではなく、彼女のスマホに通知がくるようにしたい。
以上の要件に対して
今回作成した通知システムの概要は下記になります。
彼女のuserid取得のため受信用Lambda作成
LambdaからLINEに通知させるようLINE連携
EventBridgeの発火対象として送信用Lambdaを作成
デート先のお店情報などを載せたhtmlファイルを作成(AIに頼んで後から微調整)
S3バケット内にhtmlファイルをアップロードし、静的ウェブサイトホスティングを有効
EventBridgeスケジュールを利用して予定の30分前にLambdaが発火するよう設定
大まかにはこのような形で実装しました!
URLとテキストをEventBridge側のJSONで指定して
LambdaでLINEに通知させる流れになります。
需要があるかはわかりませんが
下記にある程度詳しく掲載しますので
よかったらみていってください!
① 彼女のuserid取得のため受信用Lambda作成
送信用Lambdaの環境変数に
USER_IDとLINE_TOKENを設定するのですが
今回の場合2つ欲しいものがあります。
LINEのチャネルアクセストークン (LINE_TOKEN)
彼女のLINEのuserid (USER_ID)
以上の2つです。
そして今回作成する受信用Lambdaは
適切に設定したあと、彼女側のLINEからメッセージを送信すると
CloudWatchのlambdaログにuseridが通知されるのでそのために作成します。
まずは受信用Lambdaを作成します。
(わたくしコード書けないのでAIに丸投げです!)
1.コンソールにログインしてLambdaと検索し、Lambdaをクリックします。

3.関数名を適当に決めます!ランタイムはPython3.14にしました。

5.AIに作成してと頼んだコードをコードソースに丸々貼り付けます。
※元々あったコードは全て消して貼り付けてください。
def lambda_handler(event, context):
print(event)
return {
'statusCode': 200,
'body': 'ok'
}
Lambdaのページを開いたまま②に進みます。
② LambdaからLINEに通知させるようLINE連携
1.LINE Developers (https://developers.line.biz/ja/)
のコンソールにログインを押します。(LINEIDでログインするのが無難です。)

6.アカウント名とメールアドレスを入力して、確認を押します。


8.作成したら、LINE Official Account Managerへを押します。

9.規約が色々でてきたら同意して、左タブにある友だち追加ガイドを押します。

10.友達追加QRコードを作成を押すと下記画面とQRが出るのでLINEで読んで追加します。

13.MessagingAPIを利用するを押して、プロバイダ選択したら同意するを押します。



14.プライバシーポリシーと利用規約を登録は無視してOKを押します。
15.以下の内容でMessaging APIを利用しますか?にOKを押します。

16.WebhookURLが画面に表示されたら、開いておいたLambdaの画面に戻ります。

18.NONEにして、保存をクリックします。
19.出てきた関数URLをコピーして、WebhookURLに貼り付けて保存します。


23.彼女のLINEからメッセージを適当に送信する。
26.ロググループから先ほど作成したlambdaをクリック。

27.ログの中から"source":{"type":"user","userId":"***********"}を探し出す。
28.userid":"***********"の中身だけコピーして忘れないようにしておく。
29.LINE Developers (https://developers.line.biz/ja/)
に戻り、コンソールを開く。(ログインしたままならコンソールボタンが出る。)

30.プロバイダーから作成したプロバイダ名(tekitounanamae)をクリック。

34.チャネルアクセストークンをコピーして忘れないようにしておく。
③ EventBridgeの発火対象として送信用Lambdaを作成
長くなりましたがこれで
LINEのチャネルアクセストークン (LINE_TOKEN)
彼女のLINEのuserid (USER_ID)
以上が出揃いました。
ですので、送信用Lambdaを別で作成します!
1.コンソールにログインしてLambdaと検索し、Lambdaをクリックします。

3.関数名を適当に決めます!ランタイムはPython3.14にしました。

5.5.AIに作成してと頼んだコードをコードソースに丸々貼り付けます。
※元々あったコードは全て消して貼り付けてください。
import os
import json
import urllib.request
def lambda_handler(event, context):
message = event.get("message", "")
url = event.get("url", "")
text = f"{message}\n{url}"
api_url = "https://api.line.me/v2/bot/message/push"
payload = {
"to": os.environ["USER_ID"],
"messages": [
{"type": "text", "text": text}
]
}
req = urllib.request.Request(
api_url,
data=json.dumps(payload).encode("utf-8"),
headers={
"Authorization": f"Bearer {os.environ['LINE_TOKEN']}",
"Content-Type": "application/json"
}
)
urllib.request.urlopen(req)
return {"statusCode": 200}
8.useridのコピーとチャネルアクセストークンのコピーを下図のように記載して保存。

9.保存したらコードをクリックして、Deployを押します。

③ デート先のお店情報などを載せたhtmlファイルを作成
こちらに関しましては皆様にお任せしますが
今回はメモ帳にHelloWorldと入力して、test.htmlというファイルを作成します。
④ S3バケット内にhtmlファイルをアップロードし
静的ウェブサイトホスティングを有効
3.バケット名を設定し、その他はデフォルトのままでバケットを作成をクリック。


5.ファイルとフォルダにhtmlが追加されたことを確認し、アップロードをクリック。


9.オブジェクトURLも後で使うので忘れないようにどこかにコピー

10.さっきのバケットをクリック。(testtekitounanamae)

11.アクセス許可をクリックし、ブロックパブリックアクセスの編集をクリック。


12.パブリックアクセスをすべてブロックのチェックを外し、変更の保存をクリック。


14.バケットポリシーから編集をクリック。
15.ポリシーに下記をコピペして、Resourceの中身だけ変更し、変更の保存をクリック。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "ここだけさっきコピーしたARNに変えてね"
}
]
}
⑤ EventBridgeスケジュールを利用して
予定の30分前にLambdaが発火するよう設定
いよいよここまで来ましたね..!
あとはEventBridgeの設定するだけです!
1.EventBridgeと検索してEventBridgeをクリック。

2.EventBridgeスケジュールにチェックをつけて、スケジュールを作成をクリック。

3.スケジュール名、日付と時刻を設定し、フレックスタイムをオフにし、次へをクリック。

4.ターゲットの詳細からAWSLambdaにチェックをつける。

6.ペイロードに下記をコピーして、urlの中身をオブジェクトURLに変えて次へをクリック。
{
"message": "てすと",
"url": "④の9でコピーしたオブジェクトURLを入れます。"
}
7.スケジュール完了後のアクションをDELETEに変えて次へをクリック。
しばらくするとスケジュールが作成されて
設定した時刻に”てすと”というメッセージと共にURLが届きます。
それを開いて中身が表示されていれば成功です!
終わりに
実際に動きましたでしょうか!
全く触ったことない方でも分かりやすいように
書いたつもりなので是非やってみてくださいね![]()
現在はまだオンプレ案件に参画しておりまして
クラウドは未経験のままです![]()
ただ、資格としては4月にAWSSOAを追加で取得しましたので
実際に触りたいと思って今回のシステムを構築しました![]()
次はこの仕組みを利用して天気予報通知でも
作成してみたいと思います![]()
![]()
またなにかアウトプットとして残した際は
温かい目で見守ってくださると嬉しいです。
ここまで見ていただき、ありがとうございました!









































