クイックスタート: gcloud コマンドライン ツールの使用

このページでは、gcloud コマンドライン ツールにより Cloud Functions の関数を作成してデプロイする方法について説明します。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud Functions and Cloud Build API を有効にします。

    API を有効にする

  5. Cloud SDK をインストールし、初期化します
  6. gcloud コンポーネントを更新します。
    gcloud components update
  7. コマンド プロンプトが必要な場合は、Google Cloud Shell を使用できます。Google Cloud Shell は、Google Cloud SDK がすでに含まれているコマンドライン環境であるため、インストールする必要はありません。Google Cloud SDK も Google Compute Engine の仮想マシンにプリインストールされています。

  8. 開発環境を準備します。

サンプルコードを取得する

  1. ローカルマシンにサンプル リポジトリのクローンを作成します。

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Ruby

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    PHP

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

  2. Cloud Functions のサンプルコードが含まれているディレクトリに移動します。

    Node.js

    cd nodejs-docs-samples/functions/helloworld/

    Python

    cd python-docs-samples/functions/helloworld/

    Go

    cd golang-samples/functions/helloworld/

    Java

    cd java-docs-samples/functions/helloworld/helloworld/

    C#

    cd dotnet-docs-samples/functions/helloworld/HelloWorld/

    Ruby

    cd ruby-docs-samples/functions/helloworld/get/

    PHP

    cd php-docs-samples/functions/helloworld_get/

  3. サンプルコードを見てみましょう。

    Node.js

    /**
     * HTTP Cloud Function.
     * This function is exported by index.js, and is executed when
     * you make an HTTP request to the deployed function's endpoint.
     *
     * @param {Object} req Cloud Function request context.
     *                     More info: https://expressjs.com/en/api.html#req
     * @param {Object} res Cloud Function response context.
     *                     More info: https://expressjs.com/en/api.html#res
     */
    exports.helloGET = (req, res) => {
      res.send('Hello World!');
    };

    Python

    def hello_get(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
        Returns:
            The response text, or any set of values that can be turned into a
            Response object using `make_response`
            <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
        Note:
            For more information on how Flask integrates with Cloud
            Functions, see the `Writing HTTP functions` page.
            <https://cloud.google.com/functions/docs/writing/http#http_frameworks>
        """
        return 'Hello World!'

    Go

    
    // Package helloworld provides a set of Cloud Functions samples.
    package helloworld
    
    import (
    	"fmt"
    	"net/http"
    )
    
    // HelloGet is an HTTP Cloud Function.
    func HelloGet(w http.ResponseWriter, r *http.Request) {
    	fmt.Fprint(w, "Hello, World!")
    }
    

    Java

    
    package functions;
    
    import com.google.cloud.functions.HttpFunction;
    import com.google.cloud.functions.HttpRequest;
    import com.google.cloud.functions.HttpResponse;
    import java.io.BufferedWriter;
    import java.io.IOException;
    
    public class HelloWorld implements HttpFunction {
      // Simple function to return "Hello World"
      @Override
      public void service(HttpRequest request, HttpResponse response)
          throws IOException {
        BufferedWriter writer = response.getWriter();
        writer.write("Hello World!");
      }
    }

    C#

    using Google.Cloud.Functions.Framework;
    using Microsoft.AspNetCore.Http;
    using System.Threading.Tasks;
    
    namespace HelloWorld
    {
        public class Function : IHttpFunction
        {
            public async Task HandleAsync(HttpContext context)
            {
                await context.Response.WriteAsync("Hello World!");
            }
        }
    }

    Ruby

    require "functions_framework"
    
    FunctionsFramework.http "hello_get" do |_request|
      # The request parameter is a Rack::Request object.
      # See https://www.rubydoc.info/gems/rack/Rack/Request
    
      # Return the response body as a string.
      # You can also return a Rack::Response object, a Rack response array, or
      # a hash which will be JSON-encoded into a response.
      "Hello World!"
    end

    PHP

    
    use Psr\Http\Message\ServerRequestInterface;
    
    function helloGet(ServerRequestInterface $request): string
    {
        return 'Hello, World!' . PHP_EOL;
    }
    

関数をデプロイする

HTTP トリガーを使用して関数をデプロイするには、関数を含むディレクトリで次のコマンドを実行します。

Node.js

gcloud functions deploy helloGET \
--runtime nodejs14 --trigger-http --allow-unauthenticated
優先する Node.js のバージョンを指定するには、--runtime フラグに次の値を使用します。
  • nodejs10
  • nodejs12
  • nodejs14

Python

gcloud functions deploy hello_get \
--runtime python39 --trigger-http --allow-unauthenticated
優先する Python バージョンを指定するには、--runtime フラグに次の値を使用します。
  • python37
  • python38
  • python39

Go

gcloud functions deploy HelloGet \
--runtime go113 --trigger-http --allow-unauthenticated
優先する Go バージョンを指定するには、--runtime フラグに次の値を使用します。
  • go111(サポート終了)
  • go113

Java

gcloud functions deploy java-helloworld \
--entry-point functions.HelloWorld \
--runtime java11 \
--memory 512MB --trigger-http --allow-unauthenticated

C#

gcloud functions deploy csharp-helloworld \
--entry-point HelloWorld.Function \
--runtime dotnet3 --trigger-http --allow-unauthenticated

Ruby

gcloud functions deploy hello_get --runtime ruby27 --trigger-http --allow-unauthenticated
優先する Ruby バージョンを指定するには、--runtime フラグに次の値を使用します。
  • ruby26
  • ruby27

PHP

gcloud functions deploy helloGet --runtime php74 --trigger-http --allow-unauthenticated

--allow-unauthenticated フラグを使用すると、認証なしで関数にアクセスできます。認証を要求するには、フラグを省略します。

関数をテストする

  1. 関数がデプロイされたら、httpsTriggerurl プロパティをメモするか、次のコマンドを使用して検索します。

    Node.js

    gcloud functions describe helloGET

    Python

    gcloud functions describe hello_get

    Go

    gcloud functions describe HelloGet

    Java

    gcloud functions describe java-helloworld

    C#

    gcloud functions describe csharp-helloworld

    Ruby

    gcloud functions describe hello_get

    PHP

    gcloud functions describe helloGet

    次のようになります。

    Node.js

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloGET

    Python

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_get

    Go

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloGet

    Java

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/java-helloworld

    C#

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/csharp-helloworld

    Ruby

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_get

    PHP

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloGet

  2. ブラウザで、この URL にアクセスします。Hello World! というメッセージが表示されます。

関数を削除する

関数を削除するには、次のコマンドを実行します。

Node.js

gcloud functions delete helloGET 

Python

gcloud functions delete hello_get 

Go

gcloud functions delete HelloGet 

Java

gcloud functions delete java-helloworld 

C#

gcloud functions delete csharp-helloworld 

Ruby

gcloud functions delete hello_get 

PHP

gcloud functions delete helloGet 

次のステップ