如何在由AWS CDK创建的Python Lambda函数中安装外部模块?

问题描述 投票:1回答:1

我在Cloud9中使用Python AWS CDK,我部署简单的Lambda函数应该将发送API请求到Atlassian的API 当将对象上传到S3时桶(也由CDK创建)。这是我的CDK Stack代码:

from aws_cdk import core
from aws_cdk import aws_s3
from aws_cdk import aws_lambda
from aws_cdk.aws_lambda_event_sources import S3EventSource


class JiraPythonStack(core.Stack):
    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        # The code that defines your stack goes here
        jira_bucket = aws_s3.Bucket(self,
                                    "JiraBucket",
                                    encryption=aws_s3.BucketEncryption.KMS)

        event_lambda = aws_lambda.Function(
            self,
            "JiraFileLambda",
            code=aws_lambda.Code.asset("lambda"),
            handler='JiraFileLambda.handler',
            runtime=aws_lambda.Runtime.PYTHON_3_6,
            function_name="JiraPythonFromCDK")

        event_lambda.add_event_source(
            S3EventSource(jira_bucket,
                          events=[aws_s3.EventType.OBJECT_CREATED]))

lambda函数代码使用我已导入的requests模块。但是,当我检查CloudWatch Logs并测试lambda函数时-我得到:

无法导入模块'JiraFileLambda':没有名为'requests'的模块

我的问题是:如何通过Python CDK安装请求模块?

I've already looked around online and found this。但是它似乎直接修改了lambda函数,这将导致Stack Drift(我被告知是IaaS的BAD)。我也查看了AWS CDK Docs,但是没有提到任何外部模块/库(我现在正在对其进行彻底检查)有人知道我可以如何解决此问题?

编辑: It would appear I'm not the only one looking for this

Here's another GitHub issue that's been raised.

python aws-lambda amazon-cloudformation python-module aws-cdk
1个回答
2
投票

您应先在本地安装lambda的依赖项,然后再通过CDK部署lambda。 CDK不知道如何安装依赖项以及应安装哪些库。

© www.soinside.com 2019 - 2024. All rights reserved.