Help us understand the problem. What is going on with this article?

AmazonAPIGatewayでパラメータを渡す

More than 3 years have passed since last update.

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away