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のコマンドを入れておくと良いでしょう。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark