代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

有可能让aws-sam本地运行得更快吗?

  •  0
  • Pablo Fernandez  · 技术社区  · 2 年前

    我试过了 sam local start-api 在CDK和SAM应用程序上,我注意到两者的行为相同。有一个Lambda函数什么都不做,实际上这就是代码:

    export async function handler(event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> {
        return {
            statusCode: 200,
            headers: {"Content-Type": "text/plain"},
            body: `Hello, CDK! You've hit ${event.path}\n`
        }
    }
    

    跑步似乎总是需要4秒以上,通常在6秒左右。这样的函数应该以毫秒为单位。但samlocal的做法似乎是每次都创建一个Docker容器。

    日志显示如下:

    Mounting C:\Users\pupeno\Code\example4-be\lambda as /var/task:ro,delegated inside runtime container
    START RequestId: d63b417e-460e-4861-a2f1-85ebb29472a4 Version: $LATEST
    END RequestId: d63b417e-460e-4861-a2f1-85ebb29472a4
    REPORT RequestId: d63b417e-460e-4861-a2f1-85ebb29472a4  Init Duration: 0.32 ms  Duration: 140.76 ms     Billed Duration: 141 ms Memory Size: 128 MB     Max Memory Used: 128 MB
    2022-01-21 22:40:29 127.0.0.1 - - [21/Jan/2022 22:40:29] "GET / HTTP/1.1" 200 -
    

    它在第一行上花费了绝大多数时间,实际上实际功能花费了140毫秒。

    有没有一种方法可以加快速度,与RubyonRails、Django、NodeJS+Express等类似的速度?

    0 回复  |  直到 2 年前
        1
  •  0
  •   samppa    2 年前

    我也有类似的问题,有时Mounting会卡住。我使用Windows Subsystem For Linux(WSL)和Docker Desktop在本地运行容器。从Docker Desktop清理未使用和悬挂的容器似乎有助于加快挂载速度。这不是一个合适的解决方案,但可能会有所帮助。

    推荐文章