Logic Composer は、ワークフローを実行するための SDK を提供しています。 SDK を使用してワークフローを実行する場合、認証のために AccessKey ペアを設定してセキュリティを確保できます。
Logic Composer のカスタムリクエストトリガーは、認証ありまたは認証なしでワークフローを実行するための以下のメソッドを提供します。認証が不要な場合、SDK は対応するトリガーのエンドポイントを取得してワークフローを実行します。 AccessKey ペアを使用して認証する場合は、このトピックの「手順」セクションに記載されている操作を実行します。
ワークフローパスを取得します。 Logic Composer コンソールにログオンします。 左側のナビゲーションウィンドウで、[ワークフロー] をクリックします。 [ワークフロー] ページで、目的のワークフローをクリックします。 表示されるページで、[ワークフロー] タブをクリックします。 表示されるメッセージで、[キャンセル] をクリックします。 [トリガーの選択] ダイアログボックスで、[リクエスト] を選択します。 次に、[HTTP リクエストを受信した場合] をクリックして、トリガーに関する詳細を表示します。 認証に AccessKey を選択します。 [パス] を見つけて、[コピー] をクリックして、トリガーの呼び出しに使用するワークフローパスをコピーします。

2. Resource Access Management (RAM) ユーザーに権限を付与します。
RAM ユーザーの AccessKey ペアを使用してアクセスする場合は、事前に必要な権限を RAM ユーザーに付与してください。 詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
3. SDK を使用してワークフローを実行します。
重要
Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。 AccessKey ペアを使用して操作を実行することは、リスクの高い操作です。 RAM ユーザーを使用して API 操作を呼び出したり、日常的な O&M を実行することをお勧めします。
AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
以下の例では、AccessKey ペアは環境変数に設定されて認証が実装されています。 環境変数の設定方法の詳細については、「認証情報を設定する」をご参照ください。
以下の例では、ALIBABA_CLOUD_ACCESS_KEY_ID
および ALIBABA_CLOUD_ACCESS_KEY_SECRET
環境変数が使用されています。
Java
pom.xml ファイルに Maven の依存関係を追加します。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.0.3</version>
</dependency>
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
public class TestJavaSDK {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("default", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("lc.<regionId>.aliyuncs.com");
request.setVersion("2019-09-25");
request.setUriPattern("<Path>");
request.putQueryParameter("RegionId", "us-east-1");
request.putHeadParameter("Content-Type", "application/json");
String requestBody = "";
request.setHttpContent(requestBody.getBytes(), "utf-8", FormatType.JSON);
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
Go
package main
import (
"fmt"
"os"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
)
func main() {
client, err := sdk.NewClientWithAccessKey("default", os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
if err != nil {
panic(err)
}
request := requests.NewCommonRequest()
request.Method = "POST"
request.Scheme = "https"
request.Domain = "lc.<regionId>.aliyuncs.com"
request.Version = "2019-09-25"
request.PathPattern = "<Path>"
request.Headers["Content-Type"] = "application/json"
request.QueryParams["RegionId"] = "us-east-1"
body := ``
request.Content = []byte(body)
response, err := client.ProcessCommonRequest(request)
if err != nil {
panic(err)
}
fmt.Print(response.GetHttpContentString())
}
Python
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
client = AcsClient(os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), 'default')
request = CommonRequest()
request.set_accept_format('json')
request.set_method('POST')
request.set_protocol_type('https')
request.set_domain('lc.<regionId>.aliyuncs.com')
request.set_version('2019-09-25')
request.set_uri_pattern('<Path>')
request.add_query_param('RegionId', "us-east-1")
request.add_header('Content-Type', 'application/json')
body = ''''''
request.set_content(body.encode('utf-8'))
response = client.do_action_with_exception(request)
print(str(response, encoding = 'utf-8'))
Ruby
require 'aliyunsdkcore'
client = ROAClient.new(
access_key_id: ENV['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret: ENV['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: 'https://lc.<regionId>.aliyuncs.com',
api_version: '2019-09-25'
)
response = client.request(
method: 'POST',
uri: '<Path>',
queries: {
"RegionId": "cn-hangzhou",
},
headers: {
"Content-Type": "application/json"
},
body: ``,
options: {}
)
print response
Node.js
npm install @alicloud/pop-core
var ROAClient = require('@alicloud/pop-core').ROAClient;
var client = new ROAClient({
accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
endpoint: 'https://lc.<regionId>.aliyuncs.com',
apiVersion: '2019-09-25',
});
async function test() {
try {
var res = await client.request(
'POST',
'<Path>',
{},
'<request body>',
{
'content-type': 'application/json',
}
);
console.log('invoke workflow: ', res);
} catch (err) {
console.error(err);
}
}
test().then();
SDK で使用される操作の入力パラメーターの詳細については、@alicloud/pop-core をご参照ください。
サポートされているリージョン
以下のサポートされているリージョンで、認証に AccessKey ペアを使用できます。 この機能を使用する際に必要なエンドポイントは、Logic Composer の管理 API 操作のエンドポイントとは異なることに注意してください。 次の表に示すリージョンのエンドポイントを使用してください。
リージョン | リージョン ID | エンドポイント |
中国 (上海) | cn-shanghai | https://lc.cn-shanghai.aliyuncs.com |
米国 (バージニア) | us-east-1 | https://lc.us-east-1.aliyuncs.com |
シンガポール | ap-southeast-1 | https://lc.ap-southeast-1.aliyuncs.com |