【AWS】Cloud9上でLambda Layer使用
1. 使用するサービス
(AWS)
- Cloud9
- Lambda
- Lambda Layer
2.概要
Cloud9上でアップロード済のLambda Layerを使用する方法を説明します。
Cloud9でLambdaを開発していると、共通関数をまとめたくなることがあると思います。その際、Lambda Layerに共通関数をまとめ、LayerをLambdaにアタッチし、モジュールを呼び出すことでLayerを活用すると思います。Cloud9ではもちろんLayerをアタッチすることは出来ないので、今回はCloud9上でLambdaが載ったDocker上にLayerの中身をインストールすることでCloud9上での実行を実現します。
3. 実装
具体的にはtemplate.ymlにLayerのArnを記述するだけです。
LayerFunction: Type: AWS::Serverless::Function Properties: FunctionName: !Sub "${Project}-${Stage}-LayerFunction" Handler: index.handler Runtime: python3.8 CodeUri: ./layerfunction Role: !GetAtt layerRole.Arn Layers: - !Sub "arn:aws:lambda:${AWSRegion}:${AccountId}:layer:${Project}-${Stage}-TestLayer:1"
最後のLayersの箇所のArnを変数なしに変えるだけです。
Cloud9上だと擬似パラメータがデフォルトのままなどの問題がある為です。gitでコミットする際は書き直すよう注意しましょう。
4. おわりに
Layerに関して検索しても、何故かCloud9上では実行出来ないなど出てきたが、案外やってみれば出来る物でした。
余裕があれば、templateの擬似パラメータのoverrideなどに挑戦し、template.ymlの中身を書き換える必要のない方法を模索してみようと思います。