質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

501閲覧

API Gatewayで受信した時、処理の前にレスポンスを返したい。

yuki_90453

総合スコア326

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/04/09 02:28

編集2022/04/09 02:29

概要

LINE ログインした時、注文明細をチャットに送信するコードを書いています。

処理の流れ

  1. LINEログイン時にこちらのAPIにGETリクエスト来ます。
  2. リクエスト受信し、チャットへ送信するデータを生成し、チャットへ送信します。(この処理が少し遅い)
  3. GETリクエストのリダイレクトのレスポンスを返します
  4. ユーザーはリダイレクトのレスポンスから自動的にLINEを開きログインが完了します。

コード

APIはAPI Gateway、処理はLambdaで行っています。

TypeScript

1export const handler=async(event:APIGatewayEvent,context:Context, callback:Callback)=>{ 2 const param:any = event.queryStringParameters 3 console.log(param) 4 // 時間がかかる処理 5 callback(null, { 6 statusCode: 302, 7 "headers": { 8 "Location": "https://line.me/R/oaMessage/@lineat/" 9 } 10 }) 11}

問題点

上記の②の処理に1〜3秒掛かり、ユーザーを待たせることになります。
リクエストを受け取ってスグにリダイレクトのレスポンスを返して、先にユーザーにLINEのチャット画面を開いておいてもらいたいです。

恐らく、API GatewayでX-Amz-Invocation-Typeをeventにするのだと思いますが、リダイレクトのレスポンスを返す方法がわかりません。
どこを設定すれば良いか教えて頂けませんか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

長い処理は非同期用のLambda関数をもうひとつ用意し、API Gatewayのバックエンド関数から以下のようにInvocationTypeを指定して非同期呼び出ししてみては如何でしょうか。

https://teratail.com/questions/318095

いま作ってる提示されている関数は非同期関数呼び出し→リダイレクトレスポンスの返却を行う形で。
API Gatewayのレスポンス方向のテンプレートで固定でリダイレクトさせることも出来るのかもしれないです(調べてない)が、リダイレクト先を動的に出来たりすることを考えると今のままLambdaでやるのが良いかなと思いました。

投稿2022/04/12 10:25

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問