[英]How can I create a lambda function from an Elastic Container Registry image using AWS CLI?
我已經創建了這個 lambda function:
exports.lambdaHandler = async event => {
const body =
message: "Hello"
};
return {
statusCode: 200,
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(body)
};
};
我用這個 Dockerfile 創建了一個 Docker 圖像:
FROM amazon/aws-lambda-nodejs:12
COPY app.js package*.json ./
RUN npm install
CMD [ "app.lambdaHandler" ]
我已將其推送到 ECR。 現在,我想創建一個運行它的 lambda function。
我試過這個命令:
aws lambda create-function --function-name greeting --role arn:aws:iam::xxxxxxxxxxxx:role/my-role --code ImageUri=xxxxxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/greeting:latest
我得到這個錯誤:
調用 CreateFunction 操作時發生錯誤(InvalidParameterValueException):Runtime 和 Handler 是使用部署包創建的函數的必需參數。
這是沒有意義的,因為它是基於 Docker 圖像的 lambda function ,因此不需要參數。
這似乎對我有用。 您需要刪除處理程序、運行時並確保將 package 類型指定為 Image,並且
aws lambda create-function \
--function-name greeting \
--role arn:aws:iam::xxxxxxxxxxx:role/my-role \
--code ImageUri=xxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/greeting:latest \
--package-type Image
(AWS Cli 版本 2.1.7)
您創建的 function 如下所示:
aws lambda create-function \
--function-name greeting \
--role arn:aws:iam::xxxxxxxxxxxx:role/my-role \
--code ImageUri=xxxxxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/greeting:latest
從錯誤中,您需要指定處理程序和運行時:
aws lambda create-function \
--function-name greeting \
--runtime nodejs12.x
--handler lambdaHandler
--role arn:aws:iam::xxxxxxxxxxxx:role/my-role \
--code ImageUri=xxxxxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/greeting:latest
這都是相當新的,並且“感覺”就像它不應該是容器定義所定義的那樣是必需的......
我想知道 lambda 是否需要設置package-type才能獲得這些值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.