月別アーカイブ: 2022年11月

AWS Lambda 入門~おすすめ本5冊の紹介~

概要〜サーバレス基礎からAmplifyを使った本格開発までのおすすめ書籍〜

最近、AWS Lambdaの本増えてきましたよね。ということで今回はLambdaのおすすめ本の紹介です。

基礎編から本格的な専門書、アーキテクト、実際にAmplifyを使った開発と徐々にレベルアップする内容になっているのでLambdaを学びたい人は一つずつ読んでいってみてください。

※本ページはプロモーションが含まれています。

Lambdaおすすめ本 5冊

今回紹介するAWS Lambdaのおすすめ本の一覧です。
忙しい方はここだけ確認してください。

基礎から学ぶ サーバーレス開発

基礎から学ぶ サーバーレス開発

まずは基本編です。Lambdaというかサーバレスとは?という導入編です。サーバレスとはどういうものか丁寧に書かれています。まずはサーバでの開発と比較してサーバレスにはどういったメリットデメリットがあるのかこの本で学びましょう。

目次

  • CHAPTER 01 サーバーレスとは
    • 1 サーバーレスの概要
    • 2 サーバーレスが注目された要因と新たなる課題
    • 3 サーバーレスのメリット・デメリット
  • CHAPTER 02 サーバーレス開発でよく使うサービス
    • 4 AWS Lambda
    • 5 Amazon API Gateway
    • 6 Amazon Aurora Serverless
    • 7 Amazon CloudWatch
    • 8 Amazon Simple Queue Service (Amazon SQS)
    • 9 AWS CodeCommit
    • 10 AWS CodePipeline
    • 11 AWS CodeBuild
    • 12 AWS CodeDeploy
    • 13 Amazon Simple Storage Service (Amazon S3)
    • 14 AWS Step Functions
    • 15 Amazon DynamoDB
    • 16 AWS Cloud9
    • 17 AWS X-Ray
  • CHAPTER 03 サーバーレスアプリケーションの構築
    • 18 フレームワーク
    • 19 CI/CD
    • 20 AWSにおけるCI/CD
    • 21 デプロイ手法
    • 22 トラフィックシフト
    • 23 昇格
  • CHAPTER 04 サーバーレスの運用監視
    • 24 サーバーレスのコスト
    • 25 サーバーレスにおける監視
  • CHAPTER 05 サーバーレス開発におけるセキュリティ
    • 26 サーバーレス開発におけるセキュリティの考え方
    • 27 Lambda@Edgeの利用
  • CHAPTER 06 サーバーレスの構築例
    • 28 完全サーバーレスでのWebページ構築事案
    • 29 完全サーバーレスでのWebページのバッチ部分
    • 30 APIバックエンドにAmazon RDSを用いた事例および2019年のアップデートについて
    • 31 サーバーレスで作る在宅勤務中の勤務時間登録システム
    • 32 AWS LambdaをAlexaのエンドポイントとして使う事例
  • CHAPTER 07 サーバーレスの失敗談と問題解決
    • 33 失敗談①~Amazon RDSを起動させ続けた
    • 34 失敗談②~AWS Lambda でスロットリングが発生してしまった
    • 35 SPA+サーバーレスで再読み込みをするとAccessDeniedになってしまう問題の解決方法

AWSではじめる クラウド開発入門

AWSではじめる クラウド開発入門

東大の人気授業が書籍化された内容です。Lambdaに限らずクラウド開発入門という位置付けなのでいろんな開発内容が書かれていて、クラウドでこうやって開発するんだとわかる内容になってます。最後の方は、かなり実践的で勉強になります。

目次

  • Chapter 1 はじめに
    • 1-1 本書の目的内容
    • 1-2 本書のフィロソフィー
    • 1-3 AWS アカウント
    • 1-4 環境構築
    • 1-5 前提知識
    • 1-6 本書で使用する表記について
  • Chapter 2 クラウド概論
    • 2-1 クラウドとは?
    • 2-2 なぜクラウドを使うのか?
  • Chapter 3 AWS入門
    • 3-1 AWSとは?
    • 3-2 AWSの機能・サービス
    • 3-3 Region と Availability Zone
    • 3-4 AWSでのクラウド開発
    • 3-5 CloudFormationとAWS CDK
  • Chapter 4 Hands-on #1:初めてのEC2インスタンスを起動する
    • 4-1 準備
    • 4-2 SSH
    • 4-3 アプリケーションの説明
    • 4-4 プログラムを実行する
    • 4-5 小括
  • Chapter 5 Hands-on #2: AWS でディープラーニングを実践
    • 5-1 なぜ機械学習をクラウドで行うのか?
    • 5-2 GPU による深層学習の高速化
    • 5-3 準備
    • 5-4 アプリケーションの説明
    • 5-5 スタックのデプロイ
    • 5-6 ログイン
    • 5-7 Jupyter Notebook の起動
    • 5-8 PyTorch はじめの一歩
    • 5-9 実践ディープラーニング! MNIST手書き数字認識タスク
    • 5-10 スタックの削除
  • Chapter 6 Docker 入門
    • 6-1 クラウドシステムの構築に向けて
    • 6-2 機械学習の大規模化
    • 6-3 Docker とは
    • 6-4 Docker チュートリアル
    • 6-5 Elastic Container Service (ECS)
  • Chapter 7 Hands-on #3 : AWS で自動質問回答ボットを走らせる
    • 7-1 Fargate
    • 7-2 準備
    • 7-3 Transformer を用いた question-answering プログラム
    • 7-4 アプリケーションの説明
    • 7-5 スタックのデプロイ
    • 7-6 タスクの実行
    • 7-7 タスクの同時実行
    • 7-8 スタックの削除
  • Chapter 8 Hands-on #4: AWS Batch を使って機械学習のハイパーパラメータサーチを並列化する
    • 8-1 クラウドを用いた機械学習モデルの最適化
    • 8-2 AWS Batch
    • 8-3 準備
    • 8-4 MNIST 手書き文字認識(再訪)
    • 8-5 アプリケーションの説明
    • 8-6 スタックのデプロイ
    • 8-7 Docker image を ECR に配置する
    • 8-8 単一のジョブを実行する
    • 8-9 並列に複数の Job を実行する
    • 8-10 スタックの削除
    • 8-11 クラウドを用いた機械学習アプリケーションの開発とデバッグ
    • 8-12 小括
  • Chapter 9 ウェブサービスの作り方
    • 9-1 個人のためのクラウドからみんなのためのクラウドへ
    • 9-2 ウェブサービスの仕組み Twitter を例に
    • 9-3 REST API
    • 9-4 Twitter API
  • Chapter 10 Serverless architecture
    • 10-1 Serverful クラウド (従来型)
    • 10-2 Serverless クラウドへ
    • 10-3 サーバーレスクラウドを構成するコンポーネント
  • Chapter 11 Hands-on #5: サーバーレス入門
    • 11-1 Lambda ハンズオン
    • 11-2 DynamoDB ハンズオン
    • 11-3 S3 ハンズオン
  • Chapter 12 Hands-on #6: Bashoutter
    • 12-1 準備
    • 12-2 アプリケーションの説明
    • 12-3 アプリケーションのデプロイ
    • 12-4 API リクエストを送信する
    • 12-5 大量のAPIリクエストをシミュレートする
    • 12-6 Bashoutter GUI を動かしてみる
    • 12-7 アプリケーションの削除
    • 12-8 小括
  • Chapter 13 Hands-on #7: boto3 道場
    • 13-1 boto3 の基本
    • 13-2 S3 道場
    • 13-3 DynamoDB 道場
    • 13-4 小括
  • Chapter 14 Hands-on #8: シン・Bashoutter
    • 14-1 シン・Bashoutter プロジェクトの概要
    • 14-2 STEP1:ドメインの設定とCloudFront の配置
    • 14-3 STEP2:Cognito によるユーザー認証の追加
  • Chapter 15 Hands-on #9: 深層学習を用いたアート自動生成アプリケーション
    • 15-1 Neural Art Canvas プロジェクト
    • 15-2 Neural style transfer
    • 15-3 ローカルで Neural style transfer を実行
    • 15-4 Step Functions
    • 15-5 Lambda layers
    • 15-6 アプリケーションの説明
    • 15-7 アプリケーションのデプロイ
    • 15-8 画像の生成 (コマンドラインから)
    • 15-9 画像の生成 (GUIから)
    • 15-10 アプリケーションの削除
  • Appendix 環境構築
    • A-1 本書で必要な計算機環境
    • A-2 AWS アカウントの取得
    • A-3 AWS のシークレットキーの作成
    • A-4 AWS CLI のインストール
    • A-5 AWS CDKのインストール
    • A-6 WSL のインストール
    • A-7 Docker のインストール
    • A-8 Python venv クイックガイド
    • A-9 ハンズオン実行用の Docker image の使い方

AWS Lambda実践ガイド 第2版 impress top gearシリーズ

AWS Lambda実践ガイド 第2版

ここからがLambdaの本格化書籍です。まずはLambdaの専門書といったらこれという一冊です。人気本で第二版も発売されてます。Lambdaの基礎からSAMを使った本格化開発まで記載されている良書です。Lambdaの専門書としてまずはこの本をおさえた方が良い内容になってます。

基本を抑えつつ現場で役に立つバージョン管理やエイリアスといった運用面の記載や、コールドスタートやコネクションなど現場で知っておかなければならない制限事項についても書かれており、本当にLambdaと言ったらこれという良書だと思います。

目次

  • 第1章 Lambda で実現するサーバーレスシステム
  • 第2章 Lambda 事始め
  • 第3章 Lambda の実行環境とイベント
  • 第4章 Lambda の開発環境と SAM
  • 第5章 S3 のイベント処理
  • 第6章 API Gateway、DynamoDB、SES との連携
  • 第7章 SQS やSNS を使った連携

AWSによるサーバーレスアーキテクチャ

AWSによるサーバーレスアーキテクチャ

アーキテクト部分からの一冊です。サーバレスアーキテクチャの本ということですが、Lambdaの解説書になっているのでLambdaの専門書という一面もあります。基礎からアーキテクトまで書かれていて参考になります。

目次

  • 第1部 導入
    • 第1章 サーバーレスの世界へ
      • 1.1 ここに至るまでの流れ
      • 1.2 サーバーレスアーキテクチャの原則
      • 1.3 サーバーからサーバーレスへの乗り換え
      • 1.4 サーバーレスの長所と短所
      • 1.5 まとめ
    • 第2章 アーキテクチャとパターン
      • 2.1 ユースケース
      • 2.2 アーキテクチャ
      • 2.3 パターン
      • 2.4 まとめ
    • 第3章 サーバーレスアプリケーションの構築
      • 3.1 24-Hour Video
      • 3.2 Amazon SNS の設定
      • 3.3 動画ファイルのアクセス権限の設定
      • 3.4 メタデータの生成
      • 3.5 仕上げ
      • 3.6 演習問題
      • 3.7 まとめ
    • 第4章 クラウドの設定
      • 4.1 セキュリティモデルとID管理
      • 4.2 ログとアラート
      • 4.3 料金
      • 4.4 演習問題
      • 4.5 まとめ
  • 第2部 コア機能
    • 第5章 認証と認可
      • 5.1 サーバーレス環境における認証
      • 5.2 24-Hour Videoへの認証の追加
      • 5.3 AWS との統合
      • 5.4 委任 トークン
      • 5.5 演習問題
      • 5.6 まとめ
    • 第6章 オーケストレーターとしての AWS Lambda
      • 6.1 AWS Lambdaの内部
      • 6.2 プログラミングモデル
      • 6.3 バージョニング、エイリアス、環境変数
      • 6.4 CLI の使い方
      • 6.5 AWS Lambdaのパターン
      • 6.6 Lambda関数のテスト
      • 6.7 演習問題
      • 6.8 まとめ
    • 第7章 Amazon API Gateway
      • 7.1 インターフェイスとしてのAmazon API Gateway
      • 7.2 Amazon API Gateway の操作
      • 7.3 ゲートウェイの最適化
      • 7.4 ステージとバージョン
      • 7.5 演習問題
      • 7.6 まとめ
  • 第3部 アーキテクチャの拡張
    • 第8章 ストレージ
      • 8.1 賢いストレージ
      • 8.2 セキュアなアップロード
      • 8.3 ファイルへのアクセス制限
      • 8.4 演習問題
      • 8.5 まとめ
    • 第9章 データベース
      • 9.1 Firebase 入門
      • 9.2 24-Hour VideoへのFirebase の追加
      • 9.3 ファイルへのアクセスの保護
      • 9.4 演習問題
      • 9.5 まとめ
    • 第10章 仕上げの学習
      • 10.1 デプロイとフレームワーク
      • 10.2 よりよいマイクロサービスのために
      • 10.3 AWS Step Functions
      • 10.4 AWS Marketplaceが開くビジネスチャンス
      • 10.5 これからの展開のために
  • 付録A サーバーレスアーキテクチャのためのサービス
    • A.1 Amazon API Gateway
    • A.2 Amazon SNS (Simple Notification Service)
    • A.3 Amazon 53 (Simple Storage Service)
    • A.4 Amazon SQS (Simple Queue Service)
    • A.5 Amazon SES (Simple Email Service)
    • A.6 Amazon RDS (Relational Database Service) & Amazon DynamoDB
    • A.7 Amazon CloudSearch
    • A.8 Amazon Elastic Transcoder
    • A.9 Amazon Kinesis Data Streams
    • A.10 Amazon Cognito
    • A.11 Auth0
    • A.12 Firebase
    • A.13 その他のサービス
  • 付録B インストールとセットアップ
    • B.1 システムの準備
    • B.2 IAM ユーザーとCLI のセットアップ
    • B.3 ユーザーアクセス権限の設定
    • B.4 新しいS3バケットの作成
    • B.5 IAMロールの作成
    • B.6 Lambda関数のための準備
    • B.7 Amazon Elastic Transcoder の設定
    • B.8 npm のセットアップ
  • 付録C 認証と認可について
    • C.1 認証と認可の基本
    • C.2 JWT
  • 付録D AWS Lambdaの内部
    • D.1 実行環境
    • D.2 制限
    • D.3 古いランタイムの扱い方
  • 付録 E モデルとマッピング
    • E.1 動画リストの取得
  • 付録 F Amazon S3のイベントメッセージ構造
    • F.1 S3 イベントメッセージの構造
    • F.2 覚えておくべきこと
  • 付録 G Serverless Framework & AWS SAM
    • G.1 Serverless Framework
    • G.2 AWS SAM
    • G.3 まとめ

AWS Amplify Studioではじめるフロントエンド+バックエンド統合開発

AWS Amplify Studioではじめるフロントエンド+バックエンド統合開発

最後はより実践編という位置付けでAmplifyを使った開発の内容の本にしました。Lambdaの基礎ではないため、これまでの本で基礎をおさえつつ再度のAmplifyでアプリ開発の本格入門という位置付けの本のしています。Amplify自体いろんな機能があって覚えることがたくさんなのですが、それら丁寧に解説してくれる内容になってます。

Lambdaの真価が問われるのはバックエンドとしてフロントエンドから連携されたアプリだと思っており、それを簡単に実現してくれるAmplifyには個人的には非常に期待しています。本の内容としては、Amplifyの一機能としてLambdaの使用方法を説明した内容になるのでLambdaに特化した内容ではないのですが、実業務でのLambdaで完結することはあまりないと思うで、一番実践に近い本だと思っています。

目次

  • Chapter1 AWS Amplifyを使おう
    • 1.1. AWS Amplifyを準備する
    • 1.2. サンプルアプリを作成する
  • Chapter2 Amplify Studioでバックエンドを設計する
    • 2.1. Reactアプリケーションの作成
    • 2.2. Amplify Studioとユーザー認証
    • 2.3. データモデルの設計
  • Chapter3 FigmaによるUI設計
    • 3.1. Figmaの基本操作
    • 3.2. Figmaでデザインする
    • 3.3. グラフィックの作成
    • 3.4. データモデル用のコンポーネントの利用
  • Chapter4 Reactによるフロントエンド開発
    • 4.1. Reactアプリケーションの基本
    • 4.2. Reactコンポーネントの設計
    • 4.3. ステートフックと副作用フック
    • 4.4. Reactコンポーネントを活用する
  • Chapter5 DataStoreによるデータベースアクセス
    • 5.1. コレクションコンポーネントの利用
    • 5.2. ReactとDataStoreの利用
    • 5.3. モデルデータの操作
  • Chapter6 GraphQLによるデータの利用
    • 6.1. Amplify MockとGraphQL
    • 6.2. コードからGraphQLを利用する
    • 6.3. GraphQLによるデータの書き換え
  • Chapter7 S3ストレージとLambda関数
    • 7.1. Amazon S3の利用
    • 7.2. ファイルの基本操作
    • 7.3. Lambda関数の利用
    • 7.4. LambdaからAWSの機能を使う
  • Chapter8 JavaScriptベースによるフロントエンド開発
    • 8.1. JavaScriptベースのアプリケーション作成
    • 8.2. Amplifyの機能を利用する

LINE Messaging API を使ってAWS Lambdaに連携する

概要

最近、LINE Messaging API x AWS Lambda x Google スプレッドシート を連携してサクッと便利ツールを作っている日々です♪
個人的にサクッと作れる便利ツールとして、UILINE Messaging APIにして、ロジックAWS Lambdaに、DBGoogle スプレッドシートで作るという構成が簡単に出来て気に入っています。

そこで今回はLINE Messaging API x AWS Lambda の連携編になります。
LINE Messaging API と AWS Lambda をWebhookを使ってHTTPSで連携します。
LINE Developersアカウントがあれば誰でも簡単・無料で出来るので、気になった人はやってみてください。

Lambdaの良書が増えてきたので、おすすめ本5冊を以下で紹介しています。Lambdaについて本格的に勉強したい方はぜひ読んでみてください。

AWS Lambdaおすすめ書籍5冊の紹介

前提条件

  • LINE Developersアカウント(LINE Business ID)取得
    • 無料で作成できるのでアカウントがない人は取得しましょう。
  • AWS Lambda関数の HTTP(S) エンドポイント割り当て
    • LINEからLambdaに連携するために、Lambda関数にHTTP(S) エンドポイントが必要になります。Lambdaを作成する際に、関数 URL を有効化する方法が簡単ですが、アクセス制御はしっかり行ってHTTP(S) エンドポイントを公開しましょう。

公式ページ

Messaging APIを始めよう
https://developers.line.biz/ja/docs/messaging-api/getting-started/

LINE Developersにログイン

まずは、LINEにログインします。
LINE Developersアカウント(LINE Business ID)を作成していない人はアカウントを作成から作成します。

https://account.line.biz/login

プロバイダー/チャネル作成 

ログイン後、LINE DevelopersコンソールというLINEの画面でプロバイダーチャネルを作成します。

  • プロバイダー:サービスを提供し、ユーザーの情報を取得する開発者個人、企業、または団体等のことです。個人で運用する場合は自由に登録すれば良いと思います。
  • チャネル:LINEが提供する機能を、サービス提供者が利用するための通信路です。今回の場合は、AWS Lambdaと LINE Messaging API を使って連携するLINEアプリのことです。

参考ページ
https://developers.line.biz/ja/docs/line-developers-console/overview/

プロバイダー作成

それではプロバイダーから作成していきます。
LINE Developersコンソールの画面操作だけで作成できるので簡単です。

LINE Developersコンソールにログイン後、表示される左メニューのプロバイダーを選択しし、プロバイダーの作成を選択します。

作成画面が表示されるため、任意のプロバイダー名を入力し、作成ボタンで作成されます。
簡単ですね。

チャネル作成

続いてチャネルの作成に移ります。
こちらもLINE Developersコンソールの画面操作だけで作成できます。

プロバイダーを選択する(今回は、AWS Lambdaとの連携が目的なのでLambdaProviderというプロバイダーを作成しています)と、チャネルの設定画面が表示されるため、AWS Lambdaと連携する Messaging API をクリックします。

チャネルの種類Messaging API になっていること、プロバイダー作成したプロバイダーになっていることを確認しましょう。あとは、必須項目を自身の情報で入力すれば大丈夫です。
利用規約を確認して、作成ボタンを押しましょう。

チャネル設定

無事にチャネルが作成されたらチャネルの設定に移ります。
この設定作業でAWS Lambdaとの連携情報認証情報LINEアプリの応答メッセージの設定などを行います。

作成したチャネルを選択します。(今回は、MessagingLambdaというチャネル名で作成しています)

Messaging API設定をクリックします。

ページ中央にあるWebhook URLに連携するAWS Lambdaの公開されたURLを編集ボタンを押して設定します。

URLを設定すると、検証ボタンやWebhookの利用Webhookの再送エラーの統計情報の設定ができるようになるので、必要な設定を行います。
Webhookの利用は必ず必要になるので、必ずONにします。

ページ下部にあるチャネルアクセストークンを設定します。
LambdaからこのLINEアプリに連携する際に指定するキーになる情報なので外部に漏れないないように管理しましょう。

応答/あいさつメッセージのカスタマイズ

ページ中央部にある応答メッセージあいさつメッセージ編集ボタンからこのLINEアプリにメッセージを送った時の応答メッセージLINEアプリを友だち追加した時のあいさつメッセージを編集できます。必要であれば編集しましょう。

編集ボタンをクリックすると以下の応答設定用の専用画面が表示されるため、専用画面で設定を変更します。

今回、AWS Lambdaから応答メッセージを自動作成して送信予定のため、応答メッセージオフに設定します。

AWS Lambdaの実装

いよいよここからはAWS Lambda側の実装になります。
前提条件のところに書きましたが、LINEと連携するためHTTP(S) エンドポイントが公開されているLambda関数の使用が前提になります。
今回は、最も基本的なLINEからLambdaにメッセージを送った時にLambdaからLINEへの応答メッセージを送る方法と、LambdaからLINEへプッシュメッセージを送る方法を記載します。

応答メッセージを送る

LINEからLambdaにメッセージを送った時に送られたメッセージをもとにして応答メッセージを送信するAPIは以下になります。

https://developers.line.biz/ja/reference/messaging-api/#send-reply-message

具体的には以下のhttpsリクエストを応答メッセージとして送信する必要があります。

curl -v -X POST https://api.line.me/v2/bot/message/reply \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "replyToken":"{Reply token}",
    "messages":[
        {
            "type":"text",
            "text":"Hello, user"
        },
        {
            "type":"text",
            "text":"May I help you?"
        }
    ]
}'

  • channel access token:LINE Developersコンソールで発行したチャネルアクセストークンを設定します。
  • Reply token:メッセージのやり時の度にLINEからLambdaに送られたリクエストメッセージの中からReply tokenを取得して設定します。

LINEから送られてくるリクエストメッセージのReply tokenの具体例は以下になります。replyToken部から取得しましょう。
text部にLINEから送られてくるメッセージが格納されており、userId部がLINEの送信者を特定するIDになります。(userIdは次の「プッシュメッセージを送る」で使用します)

{
  "destination": "xxxxxxxxxx",
  "events": [
    {
      "type": "message",
      "message": {
        "type": "text",
        "id": "14353798921116",
        "text": "Hello, world"
      },
      "timestamp": 1625665242211,
      "source": {
        "type": "user",
        "userId": "U80696558e1aa831..."
      },
      "replyToken": "{Reply token}",
      "mode": "active",
      "webhookEventId": "01FZ74A0TDDPYRVKNK77XKC3ZR",
      "deliveryContext": {
        "isRedelivery": false
      }
    }
  ]
}

実際にLambdaで replyToken を取得して、応答メッセージを送信するサンプルは以下になります。

import json
import requests
from pprint import pprint

def lambda_handler(event, context):
    #=========================
    # LINEからのリクエスト解析
    #=========================
    bodyjson = json.loads(event['body'])
    messagetext = bodyjson['events'][0]['message']['text']
    print("messagetext: " + messagetext)
    replyToken = bodyjson['events'][0]['replyToken']
    print("replyToken: " + replyToken)

    #=========================
    # LINEへのレスポンス作成
    #=========================
    resmessage = [
        {'type':'text','text':messagetext}
    ]
    payload = {'replyToken': replyToken, 'messages': resmessage}
    # カスタムヘッダーの生成(dict形式)
    headers = {'content-type': 'application/json', 'Authorization': 'Bearer XXX'}
    # headersにカスタムヘッダーを指定
    r = requests.post("https://api.line.me/v2/bot/message/reply", headers=headers, data=json.dumps(payload))
    print("LINEレスポンス:" + r.text)
    return

LINEから送られてきたメッセージをそのまま送り返すサンプルになっています。
LINEからのメッセージと replyToken を取得して、応答メッセージ用のhttpsリクエストに設定して送信すればOKです。簡単ですね。

プッシュメッセージを送る

次はLambdaからLINEにプッシュメッセージを送るAPIは以下になります。

https://developers.line.biz/ja/reference/messaging-api/#send-push-message

具体的には以下のhttpsリクエストを送信することでプッシュメッセージを送ることができます。

curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "to": "{user id}",
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'

  • channel access token:LINE Developersコンソールで発行したチャネルアクセストークンを設定します。
  • user id:プッシュメッセージを送りたい相手の userId を設定します。(userId は「応答メッセージを送る」で確認したLINEからメッセージが送られてきた時のリクエスト内容から確認できます)

実際にLambdaでプッシュメッセージを送信するサンプルは以下になります。

import json
import requests
from pprint import pprint

def lambda_handler(event, context):
    #===========================
    # LINEへのPUSHメッセージ作成
    #===========================
    resmessage = [
        {'type':'text','text':'メッセージ1'},
        {'type':'text','text':'メッセージ2'}
    ]
    payload = {'to': 'XXX', 'messages': resmessage}
    # カスタムヘッダーの生成(dict形式)
    headers = {'content-type': 'application/json', 'Authorization': 'Bearer XXX'}
    # headersにカスタムヘッダーを指定
    r = requests.post("https://api.line.me/v2/bot/message/push", headers=headers, data=json.dumps(payload))
    print("LINEレスポンス:" + r.text)
    return
  • ['to': 'XXX']:プッシュメッセージを送りたい相手の userId を設定します。
  • [Bearer XXX]:LINE Developersコンソールで発行したチャネルアクセストークンを設定します。

送信先のuserIdとチャネルアクセストークンを設定するだけになります。こちらも簡単ですね。

まとめ

今回は、LINE Messaging API x AWS Lambda の連携編を説明しました。
基本的にはLINE Developersコンソール上の設定作業がメインで、Lambda上の実装はMessaging API のリファレンス通りやるだけなので比較的簡単にできたのではないでしょうか。
これで何かあったらLINEにメッセージを送るとツールを動かせたり、定期的にLambdaを起動してLINEにメッセージを送ったりできるので簡単なツールだったら自分でサクッと作ってしまおうかなと思って個人的には気に入っている方法になります。
興味がある方がいたらぜひやってみてください。