環境
- aws-sam-cli v0.3.0
AWS SAM を使ったサーバーレスアプリケーションをローカルで試せる的なやつ。
v.0.3.0 からは言語が python ベースになってリポジトリ名が変わった。
https://github.com/awslabs/aws-sam-cli
以下は v0.3.0 以前でメモしていたもの。
SAM を使うの初めてだったので初歩的なところを書いておく。
CodeUri と Handler が何を指しているのかよくわからなかった
Handler について
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
FunctionName:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs6.10
Handler: index.handler
CodeUri: ../src
CodeUri で指定したディレクトリ、もしくは template.yml に存在する ファイル名.メソッド
を指定する。
index.handler というのは index.js の handler() を実行するという意味らしい。(今回はRuntime が node)
CodeUri について
指定方法が複数ある
s3//
形式- 絶対パス
- template.yml からの相対パス
- CodeUri プロパティ自体記述しない
相対パス、絶対パスの場合、 sam local ではここで指定したディレクトリがマウントされる。
記述しない場合、 template.yml のあるディレクトリをマウントする
(通常、コマンドを実行したディレクトリ -t でテンプレートの場所を指定した場合はそのディレクトリ)
内部で docker にマウントしてるのでシンボリックリンクは使えないので注意
参考
- https://stackoverflow.com/questions/38485607/mount-host-directory-with-a-symbolic-link-inside-in-docker-container
- https://dev.classmethod.jp/cloud/aws/understanding-codeuri-property-and-deployment-package-in-serverless-application-model/