実行する

Cloud FunctionsのActionとTriggerとを実行するためには、以下の方法を利用することができます。

ご注意:Betaから提供していた実行URLは3カ月の猶予を持ち、2019年8月頃に一括削除される予定です。終了時点まで従来利用していた方法で利用可能であるが、安定したご利用のためには、以下のAPI Gatewayと接続して利用するようにしてください。

基本情報

遠隔地からactionを実行するためには、API Gateway製品を利用し、APIの実行URLを作らなければなりません。

  • 現在の外部接続アドレスを作ることができるオブジェクトは、各個別のActionとnone TypeのBasic Triggerです。
  • API Gateway製品に会員登録をしていない場合、製品内のサービスのご利用登録後に外部接続アドレスの作成をご利用いただけます。
  • 上記の方法の他に、CLIとOpenAPIとを利用して実行できる方法をご提供するために準備しております。

外部接続アドレスの作成表記の例

compute-15-601

外部接続アドレスの作成に移行すると、ユーザーの必要に応じて、従来のAPI Gatewayに作っておいたProductを選択したり新しく作り、URLを作成してAction/Triggerと接続することができます。

compute-15-603

API Gateway URLを作るためには、以下の段階を順次に行います。

  1. Productの選択/作成

  2. APIの選択/作成

  3. Resourceの作成

    以前の過程で選択されたProduct > APIの位置にランダムの名前でResourceを作ります。

  4. Stageの選択/作成

  5. 選択したStageに配布

    ( API Gatewayに関する詳しい説明は、API Gateway製品の説明とガイドとをご参照ください。)

URL情報

各ActionとTriggerは、呼び出すことができるURL情報を含んでいます。

WebプロパティがTrueであるActionは、GET、POST、PUT、DELETE、OPTIONなど、REST リクエスト形式に全て対応しており、一般のActionとTriggerとは、POSTリクエストで実行することができます。

ご案内:現在、API Gatewayを利用したAction/Triggerの接続には、basic Auth値が必要ありません。非公開な呼び出しが必要で認証を追加したい場合には、API Gateway製品内の認証値を追加して利用することができます。 (API Gateway-APIの呼び出しを参照)

外部接続アドレスの作成に表示されるAPI Keyと追加情報は、今後OpenAPIとCLIとを使うのに利用されます。

Action URL例

compute-15-602

Trigger URL例

compute-15-603

実行

Curlを利用してterminalで実行

リクエストのURLの最後のresult値はtrueである場合、結果だけを揃えて表示し、falseの場合には、実行に関連する複数のメタデータを提供します。

一般のActionとTriggerの実行

一般のActionやTriggerは、以下の4つの値を入力して実行することができます。

  • ActionURL
  • 転送するパラメータ(JSON形式)
$curl -X POST -d "{転送するパラメータ}"  -H "Content-Type: application/json" "{ActionURL}?blocking=true&result=true"

一般のActionは、HTTP POSTのみで実行が可能です。REST形式で提供するためには、WebプロパティのActionを作る必要があります。

WebプロパティのActionの実行

WebプロパティのActionは、HTTP POSTだけでなく、REST形式で提供する全ての形式のリクエストの処理が可能です。

$curl -X GET -d "{転送するパラメータ}"  -H "Content-Type: application/json"  "{ActionURL}?blocking=true&result=true"

Sample値を利用した例

値が以下のような場合のリクエスト例は、次の通りです。

項目 値(例示)
ActionURL "https://zzz"
転送するパラメータ {"info":"qqq"}

一般のAction、Trigger

$curl -X POST -d "{/"info/":/"qqq/"}"  -H "Content-Type: application/json" -H "https://zzz?blocking=true&result=true"

WebプロパティAction

$curl -X GET -d "{/"info/":/"qqq/"}"  -H "Content-Type: application/json" "https://zzz?blocking=true&result=true"

Node JSを利用して実行する

一般のAction、Trigger

// npm install axios

const axios = require('axios');
 var config = {
  headers: {
    'Content-Type': 'application/json',
  }
};

axios.post(
    '{ActionURL}?blocking=true&result=true'
    , {}
    , config)
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.log(error);
  });

WebプロパティAction

// npm install axios

const axios = require('axios');
 var config = {
  headers: {
    'Content-Type': 'application/json',
  }
};

axios.get('{ActionURL}?blocking=true&result=true', config)
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.log(error);
  });

Spring Codeを利用して実行する

一般のAction、Trigger

Map<String, String> params = new HashMap<>();

HttpHeaders header = new HttpHeaders();
header.add(HttpHeaders.CONTENT_TYPE, "application/json");
HttpEntity<Map> requestEntity = new HttpEntity<>(params, header);
ResponseEntity<Map> response = restTemplate
    .exchange("{ActionURL}?blocking=true&result=true"
    , HttpMethod.POST, requestEntity, Map.class);

WebプロパティAction

HttpHeaders header = new HttpHeaders();
header.add(HttpHeaders.CONTENT_TYPE, "application/json");
HttpEntity<Map> requestEntity = new HttpEntity<>(header);
ResponseEntity<Map> response = restTemplate.exchange("{ActionURL}?blocking=true&result=true", HttpMethod.GET, requestEntity, Map.class);

Goコードを利用して実行する

一般のAction & Trigger

package main
import (
    "fmt"
    "io/ioutil"
    "net/http"
    "bytes"
)

func main() {
    var params = []byte(`{}`)
    req, err := http.NewRequest("POST", "{ActionURL}?blocking=true&result=true", bytes.NewBuffer(params))
    if err != nil {
        panic(err)
    }

  req.Header.Add("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    bytes, _ := ioutil.ReadAll(resp.Body)
    str := string(bytes)
    fmt.Println(str)
}

WebプロパティAction

package main
import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "{ActionURL}?blocking=true&result=true", nil)
    if err != nil {
        panic(err)
    }

    req.Header.Add("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    bytes, _ := ioutil.ReadAll(resp.Body)
    str := string(bytes)
    fmt.Println(str)
}

関連情報へ

下のガイドから関連情報をご確認いただけます。

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...