サポートされているカスタムCNCFサーバーレス・ワークフロー
Rapid Adapter Builderは、Cloud Native Computing Foundation (CNCF)プロジェクトのサーバーレス・ワークフロー仕様でサポートされている構成のサブセットをサポートしています。
関数の各入力引数は、JSONノード、文字列またはjq式にすることができ、CNCF構文に従います。
connectivity::restconnectivity::logconnectivity::avroSchemaToJsonSchemaconnectivity::avroEncodeconnectivity::avroDecodeconnectivity::jsonPayloadToXMLPayloadconnectivity::xmlPayloadToJsonSchemaconnectivity::sampleXmlToJsonconnectivity::updateSecurityPropertyconnectivity::getSecurityPropertyconnectivity::getPersistentStateconnectivity::setPersistentState
connectivity::rest
この関数は、アウトバウンドHTTPコールです。 デフォルトでは、構成済のセキュリティ・ポリシーが使用されます。 引数の値は有効なjq式にできます。
この表は、この関数のJSONノード入力形式について説明しています。
| 入力オブジェクト | 説明 |
|---|---|
|
|
これはアウトバウンドURLです。 |
|
|
これはHTTPメソッドです。 |
|
|
(オプション) JSONノードがキー・ヘッダー名で、値がヘッダー値の文字列または配列であるヘッダーを設定します。 |
|
|
(オプション)これは、パスまたは問合せパラメータ、あるいはその両方のコレクションです。 |
|
|
(オプション)アウトバウンド・リクエスト・ペイロードです。 |
|
|
(オプション)これはブール値で、デフォルトで セキュリティ・ポリシーをスキップする場合は、 |
|
|
(オプション)これを使用して、デフォルトのconnectivity::rest動作をオーバーライドし、構造化(JSON)、バイナリ、マルチパート、フォーム・エンコードなどのリクエスト・メディアを処理します。 |
|
|
(オプション)これを使用して、デフォルトのconnectivity::rest動作をオーバーライドし、構造化(JSON)、バイナリ、マルチパート、フォーム・エンコードなどのレスポンス・メディアを処理します。 |
この表は、この関数のJSONノード出力形式について説明しています。
| connectivity::restのレスポンス/出力オブジェクト | 説明 |
|---|---|
|
|
これはレスポンス・ヘッダーで、JSONノードはキー・ヘッダー名で、値はヘッダー値の文字列または配列です。 |
|
|
これはレスポンス・ステータスです。 これは整数です。 |
|
|
これはアウトバウンド・レスポンス・ペイロードです。 |
サンプル・コード:
"functions": [
{
"name": "createTaskListFunction",
"type": "custom",
"operation": "connectivity::rest"
}
],
"states":[
{
...
"actions":[
{
"functionRef": {
"refName": "createTaskListFunction",
"arguments": {
"uri": <String/JQ expression>,
"method": <String/JQ expression>,
"headers": <Object/JQ expression>",
"parameters": "<Object/JQ expression>,
"body": <Object/String/JQ>",
"skipPolicy": boolean
}
},
"actionDataFilter": {
"results": "${ {body: .body, headers: .headers, status: .status} }",
..
}
}
],
....
}
connectivity::log
このファンクションは、指定されたレベルでメッセージをログに記録します。
この表は、この関数の入力引数について説明しています。
| 入力引数 | 説明 |
|---|---|
|
|
これはログに記録するメッセージです。 |
|
|
これは、メッセージをログに記録するレベルです。 値は、 |
ノート:
DEBUGモードは、メッセージをアクティビティ・ストリームに公開します。サンプル・コード:
"functions": [
{
"name": "logFunction",
"type": "custom",
"operation": "connectivity::log"
}
],
"states":[
{
...
"actions":[
{
"functionRef": {
"refName": "logFunction",
"arguments": {
"message": <String/JQ expression>
}
}
}
],
....
}
connectivity::avroSchemaToJsonSchema
このファンクションは、AVROスキーマをJSONスキーマに変換します。
この表は、この関数の入力引数について説明しています。
| 入力 | 値の例 |
|---|---|
|
|
|
サンプル出力:
{
"type" : "object",
"required" : [ "name", "age", "email" ],
"properties" : {
"name" : {
"type" : "string"
},
"age" : {
"type" : "integer"
},
"email" : {
"type" : "string"
}
}
}
サンプル・コード:
"functions": [
{
"name": "dynamicAvroSchema",
"type": "custom",
"operation": "connectivity::avroSchemaToJsonSchema"
}
],
"states": [
{
...
"actions": [
{
"functionRef": {
"refName":"dynamicAvroSchema",
"arguments": {
"avroSchema": <String/JQ expression> }
},
"actionDataFilter": {
"toStateData":
<JQ expression>
}
}
]
}
connectivity::avroEncode
このファンクションは、AVROスキーマに対応するJSONデータをAVROバイナリでエンコードされたデータに変換します。
この表は、入力引数について説明しています。
| キー | 説明 | 値の例 |
|---|---|---|
|
|
AVROスキーマ(文字列形式)。 |
|
avroJsonData |
AVROスキーマに対応するJSONデータ(文字列形式)。 |
|
次にサンプル出力を示します:
Jane Smith2*janesmith@example.com
サンプル・コード:
"functions": [
{
"name": "avroEncodeFunc",
"operation": "connectivity::avroEncode",
"type": "custom"
}
],
"states": [
{
"actions": [
{
"functionRef": {
"refName":"avroEncodeFunc",
"arguments": {
"avroSchema": "<String/JQ expression>
"avroJsonData": <String/JQ expression>
}
},
"actionDataFilter": {
"toStateData":
<JQ expression>
}
}
}
]
connectivity::avroDecode
このファンクションは、AVROバイナリでエンコードされたデータをデコードします。
この表は、入力引数について説明しています。
| キー | 説明 | 値の例 |
|---|---|---|
avroSchema |
JSONスキーマに変換されたAVROスキーマ(文字列形式)。 |
|
avroEncodedData |
AVROバイナリ・エンコード・データ(テキスト)。 |
|
サンプル出力:
{"name":"Jane Smith","age":25,"email":"janesmith@example.com"}
サンプル・コード:
"functions": [
{
"name": "avroDecodeFunc",
"operation": "connectivity::avroDecode",
"type": "custom"
}
],
"states": [
{
"actions": [
{
"functionRef": {
"refName":"avroDecodeFunc",
"arguments": {
"avroSchema": "<String/JQ expression>"
"avroEncodedData": "<String/JQ expression>"
}
},
"actionDataFilter": {
"toStateData":
<JQ expression>
}
}
}
]
connectivity::jsonPayloadToXMLPayload
この関数は、JSONペイロードをXMLペイロードに変換します。 この関数は、targetNamespace属性の有無を問わず、2つの方法で使用できます。 この属性を使用すると、出力xmlペイロードにターゲット・ネームスペースを追加できます。
次に、両方のシナリオの入力引数について説明します。
表14-1 targetNamespace引数なし
| キー | 説明 | 入力パラメータの例 |
|---|---|---|
|
|
XMLペイロードに変換されるJSONペイロード(文字列形式)。 |
|
表14-2 targetNamespace引数
| キー | 説明 | 値の例 |
|---|---|---|
|
|
XMLペイロードに変換されるJSONペイロード(文字列形式)。 |
|
targetNamespace |
出力xmlペイロードに追加するターゲット・ネームスペース。 |
|
targetNamespaceプロパティを使用しないサンプル出力:
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>true</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>true</Enabled><IncludeAPIs>true</IncludeAPIs><RetentionPolicy><Enabled>true</Enabled><Days>7</Days></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors/><DeleteRetentionPolicy><Enabled>true</Enabled><Days>7</Days><AllowPermanentDelete>false</AllowPermanentDelete></DeleteRetentionPolicy><StaticWebsite><Enabled>false</Enabled></StaticWebsite></StorageServiceProperties>targetNamespaceプロパティを使用した出力例:
<?xml version="1.0" encoding="UTF-8"?>
<AccelerateConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Status>Suspended</Status>
</AccelerateConfiguration>targetNamespaceプロパティを使用しないサンプル・コード:
"functions": [
{
"name": "dynamicXMLPayload",
"type": "custom",
"operation": "connectivity::jsonPayloadToXMLPayload"
}
],
"states": [
{
...
"actions": [
{
"functionRef": {
"refName":"dynamicXMLPayload",
"arguments": {
"jsonPayload": <String/JQ expression>
}
},
"actionDataFilter": {
"toStateData":
<JQ expression>
}
}
]
}
targetNamespaceプロパティを使用したサンプル・コード:
"functions": [
{
"name": "dynamicXMLPayload",
"type": "custom",
"operation": "connectivity::jsonPayloadToXMLPayload"
}
],
"states": [
{
...
"actions": [
{
"functionRef": {
"refName":"dynamicXMLPayload",
"arguments": {
"jsonPayload": <String/JQ expression>,
"targetNamespace": "${.configuration.TargetNamespace}"
}
},
"actionDataFilter": {
"toStateData":
<JQ expression>
}
}
]
}
connectivity::xmlPayloadToJsonSchema
この関数は、XMLペイロードをJSONスキーマに変換します。 XMLペイロードにアダプタ・エンドポイント構成ウィザードの属性を指定できます。この属性はJSONスキーマに変換されます。 これを使用して、実行時にJSONトリガーを作成することもできます。
関数の入力引数を次に説明します。
| キー | 説明 | 値の例 |
|---|---|---|
XMLPayload |
JSONスキーマに変換されるXMLペイロード。 |
|
サンプル出力:
{
"type": "object",
"properties": {
"ListBucketResult": {
"type": "object",
"properties": {
"Name": {
"type": "object",
"properties": {
"firstname": {
"type": "string",
"xml": {
"attribute": true
}
},
"xml": {
"type": "string"
}
}
},
"Prefix": {
"type": "string"
},
"Marker": {
"type": "string"
},
"MaxKeys": {
"type": "number"
},
"IsTruncated": {
"type": "boolean"
}
}
}
}
}サンプル・コード:
"functions": [
{
"name": "dynamicJSONSchema",
"type": "custom",
"operation": "connectivity::xmlPayloadToJsonSchema"
}
],
"states": [
{
...
"actions": [
{
"functionRef": {
"refName":"dynamicJSONSchema",
"arguments": {
"XMLPayload": <String/JQ expression> }
},
"actionDataFilter": {
"toStateData":
<JQ expression>
}
}
]connectivity::sampleXmlToJson
この関数は、サンプルXMLペイロードをデザインタイムのJSONスキーマに変換します。
関数の入力引数を次に説明します。
| キー | 説明 | 値の例 |
|---|---|---|
XMLPayload |
設計時にJSONペイロードに変換されるXMLペイロード(文字列形式)。 |
|
サンプル出力:
{
"ListAllMyBucketsResult": {
"Owner": {
"ID": "77fd6d45133de29e6f96bf93a519ffcff023b726995f38e8100e7d95ff8fe501"
},
"Buckets": {
"Bucket": [
{
"Name": "ap-bucket-bcone",
"CreationDate": "2024-01-25T05:44:12.000Z"
},
{
"Name": "ap-bucket-bconevi",
"CreationDate": "2024-01-18T08:40:28.000Z"
},
{
"Name": "ap-bucket-bconevj",
"CreationDate": "2024-01-18T08:28:40.000Z"
},
{
"Name": "ap-bucket-bconevo",
"CreationDate": "2024-01-18T08:40:46.000Z"
},
{
"Name": "bconeb",
"CreationDate": "2024-01-08T14:48:21.000Z"
},
{
"Name": "bconebkt1",
"CreationDate": "2024-01-02T11:54:28.000Z"
},
{
"Name": "bconebuck16thjan",
"CreationDate": "2024-01-16T09:15:53.000Z"
},
{
"Name": "bconebuck18thjan",
"CreationDate": "2024-01-18T07:46:16.000Z"
},
{
"Name": "bconebucket",
"CreationDate": "2024-02-14T06:57:49.000Z"
},
{
"Name": "bconegbbucketab",
"CreationDate": "2024-02-21T11:40:35.000Z"
},
{
"Name": "bucket12feb",
"CreationDate": "2024-02-12T10:21:33.000Z"
},
{
"Name": "bucket23rdjan",
"CreationDate": "2024-01-23T05:10:29.000Z"
},
{
"Name": "bucket30thjan",
"CreationDate": "2024-01-30T05:39:54.000Z"
},
{
"Name": "bucket31stjan",
"CreationDate": "2024-01-31T05:37:53.000Z"
},
{
"Name": "demobucket2vj",
"CreationDate": "2024-02-13T08:21:30.000Z"
},
{
"Name": "demotest88",
"CreationDate": "2024-02-13T12:05:51.000Z"
},
{
"Name": "demotest89",
"CreationDate": "2024-02-21T11:43:54.000Z"
},
{
"Name": "east-2-11",
"CreationDate": "2024-01-24T06:43:23.000Z"
},
{
"Name": "mulebucket1abc",
"CreationDate": "2024-02-12T08:08:27.000Z"
},
{
"Name": "oicawsbucket",
"CreationDate": "2024-02-15T12:19:06.000Z"
},
{
"Name": "oicbucketaws6thfeb",
"CreationDate": "2024-02-09T11:32:52.000Z"
},
{
"Name": "sstestbucket10",
"CreationDate": "2024-01-30T04:58:40.000Z"
},
{
"Name": "sstestbucket11",
"CreationDate": "2024-01-30T05:16:19.000Z"
},
{
"Name": "sstestbucket13",
"CreationDate": "2024-01-30T05:27:11.000Z"
},
{
"Name": "test2vijaya",
"CreationDate": "2024-02-16T07:23:21.000Z"
},
{
"Name": "vijaya2000",
"CreationDate": "2024-02-19T10:42:51.000Z"
}
]
}
}
}サンプル・コード:
"functions": [
{
"name": "samplexmlToJsonFunc",
"operation": "connectivity::sampleXmlToJson",
"type": "custom"
}
],
"states": [
{
...
"actions": [
{
"name": "SampleXMLToJSONConverstion",
"functionRef": {
"refName": "samplexmlToJsonFunc",
"arguments": {
"XMLPayload": <String/JQ expression>
}
},
"actionDataFilter": {
"toStateData": <String/JQ expression>
}
}
]connectivity::updateSecurityProperty
このファンクションは、シークレット・ストア内のセキュリティ・プロパティを更新または追加します。
ノート:
この機能は、サブスクリプション登録または登録解除フローでのみ使用できます。関数の入力引数を次に説明します。 成功すると、出力はブールtrueノードになります。
| キー | タイプ | 説明 |
|---|---|---|
key |
テキスト・ノード |
プロパティ・キー。 |
value |
テキスト・ノード |
プロパティの値。 |
scope |
テキスト・ノード(オプション) |
コンポジット・ポリシーのスコープ。 有効な値は次のとおりです。
ノート: プロパティが存在しない場合は、インバウンド・スコープに存在するかどうかを確認します。 存在する場合、インバウンド・スコープが追加され、それ以外の場合はアウトバウンド・スコープとして追加されます。 |
サンプル・コード: スコープなしのプロパティ更新
"functions": [
{
"name": "updateSecurityPropertyFn",
"type": "custom",
"operation": "connectivity::updateSecurityProperty"
}
...
{
"functionRef": {
"refName": "updateSecurityPropertyFn",
"arguments": {
"name": "secret",
"value": "${.configuration.value}"
}
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}
//.output is set to Boolean(True or false)
サンプル・コード: スコープ付きプロパティの更新
"functions": [
{
"name": "updateSecurityPropertyFn",
"type": "custom",
"operation": "connectivity::updateSecurityProperty"
}
]
....
{
"functionRef": {
"refName": "updateSecurityPropertyFn",
"arguments": {
"name": "signKey",
"value": "${.configuration.value}",
"scope": "inbound"
}
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}
//.output is set to Boolean(True or false)connectivity::getSecurityProperty
この関数は、セキュリティ・プロパティ値を取得します。
ノート:
この機能は、サブスクリプション登録または登録解除フローでのみ使用できます。関数の入力引数を次に説明します。 出力はテキスト値になります。
| キー | タイプ | 説明 |
|---|---|---|
key |
テキスト・ノード |
プロパティ・キー。 |
scope |
テキスト・ノード(オプション) |
コンポジット・ポリシーのスコープ。 有効な値は次のとおりです。
ノート: プロパティが存在しない場合は、最初にアウトバウンド・スコープに存在するかどうか、次にインバウンド・スコープに存在するかどうかを確認します。 |
サンプル・コード: Fn宣言
{
"name": "getSecurityPropertyFn",
"type": "custom",
"operation": "connectivity::getSecurityProperty"
}
サンプル・コード: スコープなしの取得
{
"functionRef": {
"refName": "getSecurityPropertyFn",
"arguments": {
"name": "secret"
}
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}
...
{
"functionRef": {
"refName": "getSecurityPropertyFn",
"arguments": {
"name": "secret"
}
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}
//.output is textNode with property value
サンプル・コード: スコープ付き取得
{
"functionRef": {
"refName": "getSecurityPropertyFn",
"arguments": {
"name": "secret"
}
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}
...
{
"functionRef": {
"refName": "getSecurityPropertyFn",
"arguments": {
"name": "secret",
"scope": "inbound"
}
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}
//.output is textNode with property valueconnectivity::getPersistentState
この関数は、永続プロパティのバッグを取得します。
ノート:
この関数は、init、ポーリング、成功およびエラー・フローのポーリングで許可されます。 複数のストレージ・コールを回避するために、プロパティのバッグを返します。関数は、フロー・コンテキストからキーを自動的に導出します。 出力は、設定したプロパティのバッグであるJSONノードです。
サンプル・コード:
"functions": [
{
"name": "getRTSessionPropsFn",
"type": "custom",
"operation": "connectivity::getPersistentState"
}
],
"states":[
{
"name": "startState",
"type": "operation",
"actions": [
{
"functionRef": {
"refName": "getRTSessionPropsFn"
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}
],connectivity::setPersistentState
この関数は、永続プロパティのバッグを設定します。
ノート:
この関数は、init、successおよびerrorフローのポーリングに制限されます。 関数の使用は1つだけ許可されます。関数の入力引数を次に説明します。 フロー・コンテキストからキーを自動的に導出します。
| 入力引数 | タイプ | 説明 |
|---|---|---|
properties |
JSONノード |
プロパティのバッグを表します。 |
出力は、成功または失敗を示すブール・ノードです。
サンプル・コード:
"functions": [
{
"name": "setRTSessionPropsFn",
"type": "custom",
"operation": "connectivity::setPersistentState"
}
],
"states":[
{
"name": "startState",
"type": "operation",
"actions": [
{
"functionRef": {
"refName": "setRTSessionPropsFn",
"arguments": {
"properties": "${.input}"
}
},
"actionDataFilter": {
"toStateData": "${ .output }"
}
}