Chaliceによるデプロイ


A Chapter

今回のハンズオンでは、Cloud9から直接Lambda Functionをデプロイします。
下記の操作に沿って、Lambda Functionをデプロイしてください。

1. Chaliceプロジェクトの作成・初期設定

cd ~/environment/
chalice new-project s3upload
cd s3upload

Chaliceプロジェクトの作成は非常に簡単です。
上記のコマンドのみで、API GatewayとLambdaをデプロイする準備ができました。

2. アプリの配置・デプロイ

さて、これでAPIをデプロイする準備が整いました。

cp -p ~/environment/20200206_LIFF_HandsOn/handson-2/s3upload/app.py ~/environment/s3upload/
cp -p ~/environment/20200206_LIFF_HandsOn/handson-2/s3upload/.chalice/config.json ~/environment/s3upload/.chalice/
cd ~/environment/s3upload/

本APIによって、LIFFからPUTされた画像がS3にアップロードされます。
そのため、LambdaFunctionにデプロイされる関数に記載されているS3バケット名を修正します。
操作対象のファイルは、.chalice配下にあるconfig.jsonファイルです。

vim .chalice/config.json

★こちらも任意のテキストエディタ、もしくはCloud9の機能をお使いいただいて構いません

"S3_BUCKET_NAME": ""

ファイル内にこちらの行がありますので、バケット名を記載してください。

chalice deploy

修正完了後、Chaliceプロジェクトをデプロイします。 上記コマンドがエラーを出力することなく終了することを確認してください。

以下にサンプルの出力を示します。

$ chalice deploy
Creating deployment package.
Updating policy for IAM role: s3upload
Updating lambda function: s3upload
Updating rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:us-east-1:123456789012:function:s3upload
  - Rest API URL: https://1abcdef2gh.execute-api.us-east-1.amazonaws.com/api/

末尾に表示されているRest API URLを後続の手順で利用しますので、メモ帳に控えておいてください。

3. index.htmlの修正

最後に、LIFFからアクセスするためのhtmlファイルを修正します。

vim ~/environment/20200206_LIFF_HandsOn/handson-2/index.html

★こちらも任意のテキストエディタ、もしくはCloud9の機能をお使いいただいて構いません

url: 'https://<YourAPIGatewayURL>/upload_via_api',

ファイル中部、ajaxリクエストの中にこちらの行がありますので、<>の部分を先ほどメモしたURLに修正してください。 注意:/upload_via_apiは削除しないようご注意ください。

その後、書き換えたindex.htmlで、ハンズオン1で利用した資材を置き換えます。
ここでも、S3バケットの書き換えが必要な点にご注意ください。

aws s3 cp ~/environment/20200206_LIFF_HandsOn/handson-2/index.html s3://YourBucketName/

4. 動作確認

先ほどのLIFF URIにアクセスして、お絵かきキャンバスが表示されることと、書いた絵がポストされることを確認してみましょう!
下記のように動作すれば、正常に構築できています。

あとは、LIFFの設定から画面サイズをTallからFullに変えてみるなど、LIFFをグリグリ触ってみましょう!