С учетом ваших требований вы можете использовать команду aws lambda get-function
CLI для загрузки пакета развертывания лямбда-функций.
См. Краткий обзор.
get-function
--function-name <value>
[--qualifier <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
Вы также можете увидеть полную информацию.
Но эта команда не выдаст вам zip-файл.Если вы выполните команду.
aws lambda get-function --function-name MyLambdaFunction
Она даст вам аналогичный результат, приведенный ниже.
{
"Code": {
"RepositoryType": "S3",
"Location": "https://awslambda-eu-west-1-tasks.s3.eu-west-1.amazonaws.com/snapshots/014747066885/MyLambdaFunction-aa227fd0-4d4a-4690-9447-6e1818aaa752?versionId=HoQu5vbudzRpYLe0laIVQIahVN2NVxET&X-Amz-Security-Token=FQoGZXIvYXdzEIr%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDB%2FdpZU6fCyQG%2ByhJyK3A7Dycy5L9hVWmExELuh6f0jFskmKJ62GhGf3J7LC94wB5E5CU2jplsLhw%2Fd%2FmmmJktzo07wI3XLWvSj6zxbHvJFdscCAqF7AYZOhRQR4mOIN6HkanRrHMBHeoTeDqOT6Yk8elhQYfno7dSHP%2FwdNVutS9P0SNmDLDhrxNLAxceDz8nBj1N9AZqhfMwV65OCtTubgLaLSFei75DosXIUaylWsrXgrz4B%2F6bo8LmeDxhNcYefGOBMvwKtyFSdPAP1TulcJpwQIUIC3losjtcTnRt9CSTxhn7TPMDfw4QI5ITKvxgNzO5T2TF2cJVqbotFFVdqPQNHuL2XLMNU24BwjSwF%2FsKWlV6tygXhdQWpTrJFRW%2FqxV%2BX2C1yq0sjpWtc5SerkrmqHvvDjA0L7GlOpG8Q1BLHyQWj0FPmuhrrPyjyFCNqVkpo6eUl35yK%2BHWa1hsXoEPyccoqdHa4gU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190203T092717Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=ASIA54NGUQSHZ4CZTFNT%2F20190203%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=ee3bbef557cff32f86d26abc769b14"
},
"Configuration": {
"TracingConfig": {
"Mode": "PassThrough"
},
"Version": "$LATEST",
"CodeSha256": "l6q5ldtk0YEhEv3wnJhhCiAPyRd2XB1/8nT+ZWk=",
"FunctionName": "MyLambdaFunction",
"MemorySize": 3008,
"RevisionId": "a3bdbef4-8616-4c6a-ba19-074acb80b143",
"CodeSize": 6083880,
"FunctionArn": "arn:aws:lambda:us-east-1:014747066885:function:MyLambdaFunction",
"Handler": "lambda_function.lambda_handler",
"Role": "arn:aws:iam::014747066885:role/lambda_admin",
"Timeout": 900,
"LastModified": "2019-01-30T10:09:50.283+0000",
"Runtime": "python3.6",
"Description": "Test MyLambdaFunction"
}
}
Теперь вам нужно преобразовать его в файл формата zip с дальнейшими настройками.
Вы можете использовать две нижеприведенные команды для получения лямбда-функции в формате zip-файла.
aws lambda get-function --function-name MyLambdaFunction --profile [AWS_ROFILE] | grep "Location" | awk -F ": " '{ print $2}' | sed 's/"//g' > ~/MyLambdaFunction.txt
wget -i ~/MyLambdaFunction.txt -O ~/MyLambdaFunction.zip
Здесь приведены полные команды сценария оболочки.
FUNCTION_NAME=${1}
AWS_PROFILE=[AWSPROFILE]
aws lambda get-function --function-name ${FUNCTION_NAME} --profile ${AWS_PROFILE} | grep "Location" | awk -F ": " '{ print $2}' | sed 's/"//g' > ~/${FUNCTION_NAME}.txt
wget -i ~/${FUNCTION_NAME}.txt -O ~/${FUNCTION_NAME}.zip
Вы можете преобразовать ее всценарий оболочки (например, getLambdaFunction.sh) и выполните его с помощью приведенной ниже команды.
./getLambdaFunction.sh [FUNCTIONNAME]
После получения лямбда-пакета в виде zip-файла вы можете создать лямбда-функцию.
aws lambda create-function --region us-east-1 --function-name MyLambdaFunction --zip-file fileb://MyLambdaFunction.zip --role arn:aws:iam::[AWSACCOUNT]:role/service-role/[LAMBDAROLE] --handler lambda_function.lambda_handler --description="My Lambda Function" --runtime "python3.6" --profile [AWSPROFILE]
Какпример: предполагается, что MyLambdaFunction - это имя лямбда-функции, us-east-1 - область aws, а время выполнения - python 3.6.