概要
sam deploy刷る前にsam buildをするだけでLambda Functionからimportできなくなってしまったので原因を調べました。
対象コード
Lambda Layer Template
Resources:
SystemSharedLayer:
Type: AWS::Serverless::LayerVersion
Properties:
ContentUri: src/layers/system_shared
CompatibleRuntimes:
- python3.8
Metadata:
BuildMethod: python3.8
Lambda Layer Src構造
src
└── layers
└── system_shared
├── python
│ └── hogehoge.py
└── requirements.txt
呼び出し側
import hogehoge.py
Lamnda Function側での展開パス
sam buildしなかった場合
/opt
└── python/
└── hogehoge.py
sam buildした場合
/opt
└── python/
└── python/ ← 余計なパスが付与される
└── hogehoge.py
解決策
仕様が一貫していないので諦めてtemplate側の階層指定を切り替える
Resources:
SystemSharedLayer:
Type: AWS::Serverless::LayerVersion
Properties:
ContentUri: src/layers/system_shared/python
CompatibleRuntimes:
- python3.8
Metadata:
BuildMethod: python3.8