繁体   English   中英

CDK制作lambda时如何设置dockerfile和环境变量

[英]How to set the dockerfile and environment variables while making lambda in CDK

我在template.yml中有 SAM 项目

Globals:
  Function:
    Timeout: 30
    Environment:
      Variables:
        DBNAME: !Ref DBNAME

Resources:
  MessageFunction:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      Architectures:
        - x86_64
      Events:
        Message:
          Type: Api
          Properties:
            Path: /message
            Method: post
    Metadata:
      Dockerfile: Dockerfile.message
      DockerContext: ./botapp
      DockerTag: python3.9-v1

然后像这样部署

sam deploy --guided --parameter-overrides DBNAME=mydb

这意味着我将设置环境变量DBNAME=mydb并从Dockerfile.message构建图像。

目前效果很好。

但是现在我想把它移到cdk

所以,在cdk中我首先写了这段代码

const messageLambda = new lambda.DockerImageFunction(this, "BotLambda", {
  code: lambda.DockerImageCode.fromImageAsset("chatbot-sam/botapp"),
});

但是我想设置dockerfileenvironment variables

例如

const messageLambda = new lambda.DockerImageFunction(this, "BotLambda", {
  code: lambda.DockerImageCode.fromImageAsset(
         "chatbot-sam/botapp",
         dockerfile: Dockerfile.message,
         enviroment_variables: { DBNAME:'mydb'}
       ),
});

上面的代码不正确,但是我的想法可以吗?

我如何指示Dockerfileenvironment variables

正如您在DockerImageCode.fromImageAsset()文档中所见,您可以在file参数中指定 Dockerfile 的相对路径。

至于 lambda 本身的环境变量,lambda.DockerImageFunction lambda.DockerImageFunction文档也对此进行了解释。 您使用environment属性定义环境变量:

环境?

类型:{ [string]: string }(可选,默认:无环境变量。)

Lambda 缓存并可用于您的 Lambda 函数的键值对。

所以它看起来像这样:

const messageLambda = new lambda.DockerImageFunction(this, "BotLambda", {
  code: lambda.DockerImageCode.fromImageAsset(
         "chatbot-sam/botapp",
         {
            file: "Dockerfile.message",
         }
       ),
  environment: { DBNAME:'mydb'}
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM