![](/img/trans.png)
[英]Set $_HANDLER environment variable AWS Lambda in Dockerfile or via terraform
[英]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"),
});
但是我想设置dockerfile
和environment variables
。
例如
const messageLambda = new lambda.DockerImageFunction(this, "BotLambda", {
code: lambda.DockerImageCode.fromImageAsset(
"chatbot-sam/botapp",
dockerfile: Dockerfile.message,
enviroment_variables: { DBNAME:'mydb'}
),
});
上面的代码不正确,但是我的想法可以吗?
我如何指示Dockerfile
和environment 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.