ASK CLIのフックでデプロイ前にコマンドを仕込む
ASK CLIにはデプロイ前に実行できるフックがあります。ask newするとhooks/というディレクトリが作られるので「これなんだろう」と思われた方も少なくないのではないでしょうか。 ちなみにデフォルトのフックはこの […]
広告ここから
広告ここまで
目次
ASK CLIにはデプロイ前に実行できるフックがあります。ask new
するとhooks/
というディレクトリが作られるので「これなんだろう」と思われた方も少なくないのではないでしょうか。
ちなみにデフォルトのフックはこのような形です。 FROM: https://github.com/alexa/skill-sample-nodejs-trivia/blob/en-US/hooks/pre_deploy_hook.sh
SKILL_NAME=$1
DO_DEBUG=${2:-false}
TARGET=${3:-"all"}
if [ $DO_DEBUG == false ]
then
exec > /dev/null 2>&1
fi
install_dependencies() {
npm install --prefix "$1" >/dev/null 2>&1
return $?
}
echo "###########################"
echo "##### pre-deploy hook #####"
echo "###########################"
if [[ $TARGET == "all" || $TARGET == "lambda" ]]; then
grep "sourceDir" ./skill.json | cut -d: -f2 | sed 's/"//g' | sed 's/,//g' | while read -r SOURCE_DIR; do
if install_dependencies $SOURCE_DIR; then
echo "Codebase ($SOURCE_DIR) built successfully."
else
echo "There was a problem installing dependencies for ($SOURCE_DIR)."
exit 1
fi
done
echo "###########################"
fi
exit 0
「Lambdaをデプロイするときだけ、npm install
を事前に実行する」というものです。
ちなみにこれ、--debug
オプションつけないと見えないようになっているので要注意です。
使い所
真っ先に思いつくのはTypeScriptなどのビルドです。以下のようにnpm install
の後ろにコマンドをつけることでask deploy
でビルドも済ませることができます。
install_dependencies() {
npm install --prefix "$1" >/dev/null 2>&1
npm run build --prefix "$1"
return $?
}
その他にもLambdaを個別デプロイする際はServerless FrameworkやSAM CLIのコマンドを入れておくと良いでしょう。