Cloud Logicを使ってみましょう。
サンプルアプリの使い方は、Function
にLambda関数、Request
にリクエストデータを指定し、Invoke
をクリックします。Lambda関数からの戻り値が、Result
に表示されます。
Lambda関数の呼び出しには、ヘルパークラスAWSCloudLogic
のinvokeFunction
を使用します。ブロックでコールバックを処理します。
public func invokeFunction(name: String, withParameters parameters: AnyObject?, completionBlock: (AnyObject, NSError) -> Void)
何度かInvoke
をタップして実行しましょう。
AWSコンソールのLambdaサービスからアクセスログを見てみます。
きめ細かいアクセスコントロールを実装したい場合は、AWS API Gatewayを使用する必要があります。
残念ながら、まだMobile Hubではサポートしてませんが。。。
余興 - LambdaでSwiftを動かしてみる
サーバサイドのLambdaもSwiftで書きたくなりますよね? [詳細はここ]
(https://medium.com/@gigq/using-swift-in-aws-lambda-6e2a67a27e03#.xq9iazgkv)
Swiftはこちらからダウンロードできるようです。Ubuntu版しかありませんね。
https://swift.org/download/#releases
AMIはこちらを使用しました。
Ubuntu Server 14.04 LTS (HVM), SSD Volume Type - ami-9abea4fb
設定方法
swift
とlambda
用のディレクトリを作成します。
sudo mkdir /usr/local/swift
sudo chown ubuntu /usr/local/swift
mkdir ~/lambda
Swiftコンパイラー、ライブラリをインストールします。
# Install dependencies
sudo apt-get update
sudo apt-get install clang libicu-dev libbsd-dev
cd /usr/local/swift/
wget https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz
tar xfz swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz --strip 1
export PATH="/usr/local/swift/usr/bin/:$PATH"
Swiftで、Hello Worldプログラムを書きます。
cd ~/lambda
echo print\("Hello World"\) > hello.swift
swiftc hello.swift
./hello
Hello World!
Lambdaサービスが動いているAmazonLinux
にはダイナミックライブラリがないため一緒にアーカイブします。
(スタティックリンクではダメみたいです。)
ダイナミックライブラリ用のディレクトリを作成します。
mkdir lib
コピーします。
cp /usr/local/swift/usr/lib/swift/linux/*.so lib/
cp /usr/lib/x86_64-linux-gnu/libicudata.so.52 lib/
cp /usr/lib/x86_64-linux-gnu/libicui18n.so.52 lib/
cp /usr/lib/x86_64-linux-gnu/libicuuc.so.52 lib/
cp /usr/lib/x86_64-linux-gnu/libbsd.so lib/libbsd.so.0
vi ~/lambda/index.js
Swiftを呼び出すLambda(Node.js)を書きます。
var exec = require('child_process').exec;
exports.handler = function(event, context) {
child = exec("./hello", function(error) {
// Resolve with result of process
context.done(error, 'Process complete!');
});
// Log process stdout and stderr
child.stdout.on('data', console.log);
child.stderr.on('data', console.error);
};
固めます。
sudo apt-get install zip
zip swift.zip hello index.js
こんなファイル構成になってます。
AWSコンソールのLambdaサービスから、作成したswift.zip
ファイルをアップロードします。
Role
に、Mobile Hubで作成したRoleを指定します。
Mobile HubのCloud Logicから、作成したLambdaファンクションにチェックを入れます。
コンソールから、テストします。
Mobile Hubアプリから、作成したSwift Lambdaを呼んでみます。
(クレデンシャルをキャッシュしているので、一旦アプリを再起動してください。)
うまくいきました!