Opracowałem dwie funkcje pythonów lambda AWS. Ponieważ wszyscy potrzebujemy kontroli źródła, zapisuję mój projekt w git. Pytanie brzmi, jaki jest najlepszy sposób aktualizacji AWS lambda z aktualizacjami z git. AFAIK obecnie jedynym sposobem jest użycie aws cli z funkcją update-function-code. Napisałem następujące bash, aby ręcznie zaktualizować kod:
#!/bin/bash
command -v aws >/dev/null 2>&1 || { echo >&2 "This command requires aws but it"s not installed or not in the path. Aborting."; exit 1; }
bold=$(tput bold)
normal=$(tput sgr0)
if [ "$#" -ne 2 -a "$#" -ne 1 ]; then
echo "usage: $0 <code file path> [lambda function name if not same]"
exit 1
fi
if ! [ -e $1 ]; then
echo "File $1 does not exist"
exit 1
fi
ZIPFILE="lamzip.zip"
LAMBDA_FUNC="lambda_function.py"
if [ "$#" -ne 2 ]; then
AWS_LAMBDA_NAME=$(basename $1)
AWS_LAMBDA_NAME="${AWS_LAMBDA_NAME%.*}"
else
AWS_LAMBDA_NAME=$2
fi
echo "Will upload your code file to aws lamda ${bold}$AWS_LAMBDA_NAME${normal}"
cp -f $1 /tmp/$LAMBDA_FUNC
rm -f /tmp/$ZIPFILE
zip -j /tmp/$ZIPFILE /tmp/$LAMBDA_FUNC
CMD="aws lambda update-function-code --function-name $AWS_LAMBDA_NAME --zip-file fileb:///tmp/$ZIPFILE --publish"
echo executing: $CMD
$CMD
exit 0
Czy miałbym jenkinsa lub podobnego, mógłbym zautomatyzować ten skrypt.
Ale czy jest lepszy sposób?
EDYTOWAĆ 28/1/16 zaktualizowany do skryptu, którego teraz używam, zakłada, że nazwa skryptu jest nazwą metody w aws, chyba że podano inny parametr
Odpowiedzi:
0 dla odpowiedzi № 1Używanie serwera budowania jest normalnym sposobem wdrażania funkcji lambda AWS, jest to naprawdę tak proste, jak to robisz. Stosujemy bardzo podobne podejście i wszystko idzie dobrze.