You can deploy a Go Project to Function Compute with one click using the Custom Runtime of Function Compute. This topic describes how to deploy and invoke Go functions.

Prerequisites

You have completed the following operations:
Note If you have installed Funcraft, you can go to Step 2: Deploy and invoke the function.

Step 1: Prepare the environment

An easy and simple way to install Funcraft is to download the executable binary files.

  1. Install Funcraft on the local machine. For more information, see installation instructions.
  2. Run fun --version to check whether the installation is successful.
  3. Run fun config to configure Funcraft. Then configure Account ID, Access Key ID, Access Key Secret, and Default region name as prompted.
    $ fun config
    Aliyun Account ID 1234xxx
    Aliyun Access Key ID xxxx
    Aliyun Access Key Secret xxxx
    Default region name cn-xxxx
    The timeout in seconds for each SDK client invoking 300
    The maximum number of retries for each SDK client 5
    Allow to anonynously report usage statistics to improve the tool over time? (Y/n)

Step 2: Deploy and invoke the function

  1. Run the following command to clone the sample project to your local machine.
    git clone https:// github.com/awesome-fc/fc-custom-demo          
    Note If you do not have git installed, enter https://github.com/awesome-fc/fc-custom-demo in the address bar of your browser. Click the download button to download directly.
  2. Run the following command to go to the cloned sample project.
    cd go_demo
  3. Run the following command to deploy the function.
    $ make deploy
    docker build -t fc-go-runtime  -f build-image/Dockerfile build-image
    Sending build context to Docker daemon  3.072kB
    Step 1/5 : FROM golang:1.12.16-stretch
     ---> 7ad03a8aece5
    ...
    Step 5/5 : RUN go get github.com/awesome-fc/golang-runtime
     ---> Using cache
     ---> 262e7f38ac05
    Successfully built 262e7f38ac05
    Successfully tagged fc-go-runtime:latest
    docker run -it -v $(pwd):/tmp fc-go-runtime bash -c "go build -o /tmp/code//bootstrap /tmp/code/main.go"
    chmod +x code/bootstrap
    fun deploy -y
    using template: template.yml
    ···
    Waiting for service go_demo to be deployed...
            Waiting for function fc_go to be deployed...
                    Waiting for packaging function fc_go code...
                    The function fc_go has been packaged. A total of 1 file were compressed and the final size was 3.76 MB
            function fc_go deploy success
    service go_demo deploy success
  4. Run the following command to invoke the deployed function.
    $ fun invoke -e "Hello World"
    ...
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 4c1451b2-f29b-4554-87e5-126f3bc11fcf
    2020-04-07T02:53:01.981Z: 4c1451b2-f29b-4554-87e5-126f3bc11fcf [INFO]  hello golang!
    FC Invoke End RequestId: 4c1451b2-f29b-4554-87e5-126f3bc11fcf
    
    Duration: 1.03 ms, Billed Duration: 100 ms, Memory Size: 512 MB, Max Memory Used: 4.39 MB
    ========= FC invoke Logs end =========
    
    FC Invoke Result:
    Hello World