7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AmazonAPIGatewayでパラメータを渡す

Last updated at Posted at 2015-07-26

Lambdaをさわる

久々にLambda触ってあそぼうとおもったらAmazonAPIGatewayなどというステキなものとくっついて連携できるようになってます。

#なにをしよう

とりあえず触るのが目的なので、挨拶APIつくります。

ブラウザで
http://example.com/hello?name=seike
にアクセスしたら
hello seike
が返ってくるのを目的にします。
動かすこととパラメータを渡すことだけがハードルです。

#動かす
やった内容を書く前につまづいたこと。
東京リージョンでAPIエンドポイントの作成時にエラーになりどうしても作成できませんでした。
作業してたタイミングがわるかったのか、未対応だったのか…?とりあえずバージニア北部リージョンで作成することができたのでこのあとはその体でみてください。

APIエンドポイントは以下の設定

  • Method = GET
  • Security = OPEN

でやってます。何も考えなくていいので。

#コード
目的が大したことないので。javascript入門みたいなコードになってます。

sample.js
exports.handler = function(event, context) {
    context.succeed("hello " + event.name);
};

#パラメータを渡そう
デフォルトのままではパラメータがそもそもlambdaのコードに渡りません。
ここからAmazonAPIGatewayを触ってパラメータをうまいこと渡してあげる設定をしていきます。
スクリーンショット 2015-07-27 3.58.52.png
MethodのGETの文字列のリンクを開くと、AmazonAPIGatewayのページが開きます。

スクリーンショット 2015-07-27 4.02.05.png

このページの右上のIntegration Requestで設定することでパラメータを受け取れます。

設定方法は説明を端折ると以下の画像のような感じの内容を書く必要があります。

スクリーンショット 2015-07-27 3.58.31.png

画像内のMappingTemplateを以下のように設定することで、GETパラメータの内容をLambdaのeventとして渡せました。

MappingTemplate.sample
{
    "name" : "$input.params('name')"
}

paramsではなくpathパラメータを受け取る設定も可能なはずです。
設定変更した後「Deploy API」をすると有効になります。

そして動作した結果がこれです。
スクリーンショット 2015-07-27 4.07.04.png

さわってみて

  • サーバを立てなければならないという呪縛から解き放たれた気がする?
  • DNSの設定を組み合わせればもう少しまともなURLへのアクセスで動作させられそう。これは後でやってみようかな。

参考

How to serve API using Amazon API Gateway and Amazon Lambda

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?