擅长:python、mysql、java
<p>这个线程有点旧,但我遇到了这个问题,它是令人费解的,所以我想分享我的解决方案。通过使用<code>aws_s3_assets</code>库并将<code>local</code>标志传递到无服务器堆栈中,以决定是否在synth上上载资产,或使用本地exec的路径,我能够解决部署中的这个问题</p>
<p>例如:</p>
<pre><code>import aws_cdk.core as cdk
from aws_cdk import aws_sam as sam
from aws_cdk import aws_s3_assets as s3_assets
class ServerlessStack(cdk.Stack):
def __init__(
self, scope: cdk.Construct, id: str, local: bool = False, **kwargs
) -> None:
# function_kwargs is a dict containing specific function params
# see: https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_sam/CfnFunction.html
if not local:
function_kwargs['code_uri'] = s3_assets.Asset(
scope=self,
id=f"{function}asset",
path=function_kwargs.pop('code_uri')
).s3_object_url
# Create the function resource
sam.CfnFunction(
scope=self,
id=function,
runtime="python3.8",
**function_kwargs
)
</code></pre>