<p>我做了类似的事情,下面是我使用的方法</p>
<pre><code>cdk-project
| package.json
| cdk.json
| stack.ts
|- lambda (sam application directory)
| template.yaml
|- solution
| requirements.txt
|- app
| index.py
</code></pre>
<p>在template.yaml中</p>
<pre><code>Resources:
SolutionAPIFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: solution/
Handler: app.index.lambda_handler
</code></pre>
<p>在package.json中</p>
<pre><code> "scripts": {
"build": "cd lambda && sam build && cd .. && tsc",
"watch": "tsc -w",
"test": "jest",
"cdk": "cdk"
},
</code></pre>
<p>因此,当运行“npm run build”时,它将运行sam构建,并在cdk project/lambda/.aws sam下创建一个文件夹</p>
<p>在堆栈内部</p>
<pre class="lang-js prettyprint-override"><code> const aFunction = new Function(this, "aFunction", {
runtime: Runtime.PYTHON_3_8,
handler: "app.index.lambda_handler",
code: Code.asset('./lambda/.aws-sam/build/SolutionAPIFunction')
timeout: cdk.Duration.minutes(3),
logRetention: logs.RetentionDays.THREE_MONTHS
})
</code></pre>