このトピックでは、DataWorks で Function Compute ノードを使用して Function Compute サービスを呼び出し、Object Storage Service (OSS) 内の増分 PDF ファイルに定期的にウォーターマークを追加する方法について説明します。
背景情報
DataWorks では、Function Compute ノードを使用して Function Compute サービスを呼び出すことができます。 Function Compute サービスのさまざまな機能のカスタム構成を実行し、DataWorks の Function Compute ノードを使用してサービスを呼び出すことができます。
前提条件
DataWorks がアクティブ化されていること。 詳細については、「DataWorks をアクティブ化する」をご参照ください。
Function Compute がアクティブ化されていること。 詳細については、「関数をすばやく作成する」をご参照ください。
OSS がアクティブ化されていること。 詳細については、「OSS をアクティブ化する」をご参照ください。 バケットが作成され、ウォーターマークを追加する PDF ファイルがバケットにアップロードされていること。 この例では、
bucket-test222バケットに 2023-08-15 という名前のディレクトリが作成され、example.pdf という名前のファイルがディレクトリにアップロードされています。
制限事項
機能の制限
DataWorks では、イベント関数のみを呼び出すことができます。 DataWorks でイベント処理関数を定期的にスケジュールするには、Function Compute でイベントリクエストを処理するために HTTP 関数ではなくイベント関数を作成する必要があります。 その他の関数タイプについては、「関数タイプの選択」をご参照ください。
リージョンの制限
Function Compute ノードで提供される機能は、中国 (杭州)、中国 (上海)、中国 (北京)、、中国 (深セン)、中国 (成都)、中国 (香港)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、英国 (ロンドン)、米国 (シリコンバレー)、米国 (バージニア) のリージョンにあるワークスペースでのみ使用できます。
ステップ 1: Function Compute アプリケーションを作成する
Function Compute コンソール にログインします。 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
[アプリケーション] ページで、[アプリケーションの作成] をクリックします。 [アプリケーションの作成] ページで、[テンプレートを使用してアプリケーションを作成する] を選択します。 検索ボックスに start-pdf-watermark と入力し、検索アイコンをクリックします。 検索後に表示される start-pdf-watermark アプリケーションテンプレートにポインタを移動し、[今すぐ作成] をクリックします。
説明GitHub にアクセスして、start-pdf-watermark アプリケーションテンプレートのソースコードを表示できます。 アプリケーションの実装ロジックは、指定されたウォーターマークを OSS の PDF ファイルに追加し、ウォーターマーク付きの PDF ファイルを同じ OSS パスに書き戻すことです。
[アプリケーションの作成] ページで、パラメータを構成します。
パラメータ
説明
デプロイメントタイプ
直接デプロイ に設定します。
アプリケーション名
関連要件を満たす名前がシステムによって自動的に生成されます。 業務要件に基づいて名前を変更できます。
ロール名
デフォルトでは AliyunFCServerlessDevsRole が選択されています。 業務要件に基づいて、ロールにアタッチされているポリシーを変更できます。
Serverless Application Center にアプリケーションをデプロイする場合は、Function Compute に必要な権限が付与されていることを確認してください。 たとえば、特定のサービスと関数リソースをデプロイし、Virtual Private Cloud (VPC)、NAS ファイルシステム (NAS)、Simple Log Service などの他の Alibaba Cloud サービスにアクセスするには、いくつかの権限が必要です。 まず、RAM ロールをアプリケーションまたは環境に関連付け、Function Compute を信頼できるサービスとして設定する必要があります。 その後、Service Application Center は AssumeRole 操作を呼び出してセキュリティトークンサービス (STS) トークンを取得し、RAM ロールを偽装して Alibaba Cloud サービスにアクセスできます。
承認操作を簡素化するために、Serverless Application Center はデフォルトロール AliyunFCServerlessDevsRole を提供します。 このロールには、Service Application Center がアクセスする一部の Alibaba Cloud リソースに対する権限があります。 Resource Access Management (RAM) コンソール にログインして、AliyunFCServerlessDevsRole ロールの権限を表示できます。
リージョン
アプリケーションを作成するリージョン。 リージョンを選択すると、OSS バケット名 パラメータでは、選択したリージョンにある OSS バケットのみ使用できます。
関数名
関連要件を満たす名前がシステムによって自動的に生成されます。 業務要件に基づいて名前を変更できます。
タイムゾーン
デフォルトでは、選択したリージョンが属するタイムゾーンが選択されています。 業務要件に基づいて値を変更できます。
OSS バケット名
使用する OSS バケットの名前。 [リージョン] パラメータで指定されたリージョンにある OSS バケットのみ使用できます。
RAM の ARN
デフォルトでは AliyunFCDefaultRole が選択されています。 業務要件に基づいて値を変更できます。
承認操作を簡素化するために、Function Compute は AliyunFCDefaultRole という名前のデフォルトサービスロールを提供しています。このロールには、Function Compute がアクセスする必要のある特定の Alibaba Cloud リソースに対する権限があります。AliyunFcDefaultRole デフォルトサービスロールを作成して割り当てる方法については、「関数をすばやく作成する」トピックの 手順 1: Function Compute をアクティブ化する セクションをご参照ください。
説明アプリケーションの作成時に、アプリケーションに追加の権限が必要であるというシステムプロンプトが表示された場合は、[承認] をクリックして必要な権限を取得できます。
[デフォルト環境の作成とデプロイ] をクリックします。 表示される詳細ページの右側にある [デプロイメントステータス] の横に デプロイ済み と表示されている場合、アプリケーションは作成およびデプロイされています。

[アプリケーション] ページで、作成したアプリケーションを見つけ、アプリケーション名をクリックします。 [環境の詳細] タブが表示されます。

[環境の詳細] タブの [リソース情報] セクションで、[関数] の値をクリックして、関数の詳細ページに移動します。

関数の詳細ページで、[関数のテスト] タブをクリックします。 [関数のテスト] タブで、[テストイベントの構成] を展開し、次のパラメータを構成します。

イベント名: [イベント名] フィールドにテストイベントの名前を入力します。
イベントコンテンツ: コードエディタに JSON 形式のコードを入力します。 この例では、次のコードが入力されています。
重要次のコードを直接コピーする場合は、スラッシュ (
/) とスラッシュ (/) の後のコメントを削除する必要があります。 そうしないと、コードが JSON 形式の検証に失敗する可能性があります。// 次のコードは、2023-08-15/ パスの example.pdf という名前の PDF ファイルに DataWorks というウォーターマークを追加する方法の例を示しています。 ウォーターマークのフォントは Helvetica で、フォントサイズは 30 です。 コード内のパラメータについては、パラメータのコメントを参照してください。 { "pdf_file": "2023-08-15/example.pdf", // OSS バケット内の PDF ファイルのパス。 "mark_text": "DataWorks", // ウォーターマークテキスト。 PDF ファイルにウォーターマークを追加する場合は、このパラメータが必要です。 "pagesize": [595.275590551181, 841.8897637795275], // オプション。 デフォルト値は A4 用紙サイズ (21 cm、29.7 cm) です。 1 cm は 28.346456692913385 ポイントに相当します。 "font": "Helvetica", // オプション。 ウォーターマークのフォント。 デフォルト値は Helvetica です。 PDF ファイルに中国語のウォーターマークを追加する場合は、このパラメータを zenhei または microhei に設定できます。 "font_size": 20, // オプション。 ウォーターマークのフォントサイズ。 デフォルト値は 30 です。 "font_color": [0, 0, 0], // ウォーターマークのフォントの色 (RGB 形式)。 デフォルトの色は黒です。 "rotate": 30, // オプション。 ウォーターマークの回転角度。 デフォルト値は 0 です。 "opacity": 0.1, // オプション。 ウォーターマークの透明度。 デフォルト値は 0.1 です。 値 1 は、ウォーターマークが透明でないことを示します。 "density": [198.4251968503937, 283.46456692913387] // ウォーターマークの密度。 デフォルト値は [141.73228346456693, 141.73228346456693] です。これは、ウォーターマークテキスト間に X 軸で 7 cm、Y 軸で 10 cm の間隔があることを示します。 }
[関数のテスト] をクリックします。 コードが正常に実行された場合は、指定された OSS パスでウォーターマークが追加された PDF ファイルを表示できます。 この例では、
example-out.pdfファイルが生成されます。
OSS でソース PDF ファイルと生成された PDF ファイルを表示できます。

ステップ 2: DataWorks コンソールで Function Compute ノードを作成および構成する
DataWorks コンソール にログインします。
上部のナビゲーションバーで、ステップ 1: Function Compute アプリケーションを作成する で指定したリージョンを選択します。
左側のナビゲーションウィンドウで、[データ開発と O&M] > [データ開発] を選択します。 [データ開発] ページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
DataStudio ページの [スケジュール済みワークフロー] ウィンドウで、目的のワークフローを見つけ、その名前をクリックし、[全般] を右クリックして、[ノードの作成] > [Function Compute] を選択します。 [ノードの作成] ダイアログボックスで、[名前] パラメータを構成し、[確認] をクリックします。 Function Compute ノードが作成されます。
Function Compute ノードの構成タブで、パラメータを構成します。

パラメータ
説明
関数の選択
ステップ 1 の サブステップ 3 で指定した関数名を選択します。 関数の作成方法については、「関数を管理する」をご参照ください。
説明DataWorks では、イベント関数のみを呼び出すことができます。 DataWorks でイベント処理関数を定期的にスケジュールするには、Function Compute でイベントリクエストを処理するために HTTP 関数ではなくイベント関数を作成する必要があります。 その他の関数タイプについては、「関数タイプの選択」をご参照ください。
バージョンまたはエイリアスの選択
後続の関数呼び出しに使用するサービスのバージョンまたはエイリアスを選択します。 [デフォルトバージョン] を選択すると、[バージョン] パラメータが表示され、[バージョン] パラメータの値は LATEST に固定されます。 この例では、デフォルトバージョン が選択されています。
サービスバージョン
Function Compute は、サービスレベルのバージョン管理機能を提供します。これにより、サービスの 1 つ以上のバージョンをリリースできます。 バージョンは、サービス設定、サービスに属する関数のコードと設定などの情報を含むサービススナップショットに似ています。 バージョンにはトリガー情報は含まれていません。 バージョンをリリースすると、システムはサービスのスナップショットを生成し、後で使用するスナップショットに関連付けられたバージョン番号を割り当てます。 バージョンのリリース方法については、「バージョンを管理する」をご参照ください。
バージョンエイリアス
Function Compute では、サービスバージョンのエイリアスを作成できます。 エイリアスは、サービスの特定のバージョンを指します。 エイリアスを使用して、バージョンのリリース、ロールバック、またはカナリアリリースを簡単に行うことができます。 エイリアスは、サービスまたはバージョンに依存します。 エイリアスを使用してサービスまたは関数にアクセスすると、Function Compute はエイリアスをエイリアスが指すバージョンに解析します。 これにより、呼び出し側はエイリアスが指す特定のバージョンを知る必要がなくなります。 エイリアスの作成方法については、「エイリアスを管理する」をご参照ください。
呼び出し方法
この例では、[同期呼び出し] が選択されています。呼び出しメソッドの詳細については、「同期呼び出し」と 非同期呼び出し ディレクトリのトピックをご参照ください。
同期呼び出し: 関数を同期的に呼び出すと、イベントが関数を直接トリガーし、Function Compute が関数を実行して応答を待機します。関数が呼び出されると、Function Compute は関数の実行結果を返します。
非同期呼び出し: Function Compute 関数を非同期で呼び出すと、リクエストの実行が完了した後ではなく、リクエストが永続化された後にすぐに応答が返されます。
関数が時間のかかるロジック、リソース消費の多いロジック、またはエラーが発生しやすいロジックである場合、このメソッドを使用すると、プログラムがトラフィックの急増に効率的かつ確実に対応できるようになります。
実行時間が 1 時間を超える Function Compute タスクには、このメソッドを使用することをお勧めします。
変数
関数を呼び出すコードで使用される変数に値として割り当てられるパラメーターです。この例では、ステップ 1 のサブステップ 7で設定した JSON コンテンツが変更され、OSS 内の増分 PDF ファイルに毎日ウォーターマークを追加するために使用されます。
// ${current_date}/ 形式のパスにある example.pdf という名前の PDF ファイルにウォーターマークを追加する方法の例を次のコードに示します。 { "pdf_file": "${current_date}/example.pdf", // OSS バケット内の PDF ファイルのパス。 "mark_text": "DataWorks", // ウォーターマークテキスト。 PDF ファイルにウォーターマークを追加する場合、このパラメーターは必須です。 "pagesize": [595.275590551181, 841.8897637795275], // オプション。デフォルト値は A4 用紙サイズ(21 cm、29.7 cm)です。 1 cm は 28.346456692913385 ポイントに相当します。 "font": "Helvetica", // オプション。ウォーターマークのフォント。デフォルト値は Helvetica です。 PDF ファイルに中国語でウォーターマークを追加する場合は、このパラメーターを zenhei または microhei に設定できます。 "font_size": 20, // オプション。ウォーターマークのフォントサイズ。デフォルト値は 30 です。 "font_color": [0, 0, 0], // ウォーターマークのフォントの色(RGB 形式)。デフォルトの色は黒です。 "rotate": 30, // オプション。ウォーターマークの回転角度。デフォルト値は 0 です。 "opacity": 0.1, // オプション。ウォーターマークの透明度。デフォルト値は 0.1 です。値 1 は、ウォーターマークが透明でないことを示します。 "density": [198.4251968503937, 283.46456692913387] // ウォーターマークの密度。デフォルト値は [141.73228346456693, 141.73228346456693] で、これは X 軸上で 7 cm の間隔、Y 軸上で 10 cm の間隔がウォーターマークテキスト間に存在することを示します。 }説明pdf_fileの値は${current_date}/example.pdf形式です。${current_date}は、current_dateという名前の変数が使用されていることを示します。DataWorks が Function Compute ノードでタスクを実行すると、DataWorks は
${current_date}を実際の値に置き換えます。 Function Compute ノードのスケジューリングパラメーターを設定するときに、変数を設定できます。たとえば、DataWorks が 2023 年 8 月 15 日に Function Compute ノードでタスクを実行する場合、pdf_fileの値は2023-08-15/example.pdfです。 DataWorks が 2023 年 8 月 16 日に Function Compute ノードでタスクを実行する場合、pdf_fileの値は2023-08-16/example.pdfです。業務システムが Function Compute ノードのスケジューリング時間前に特定の時間関連ルールに基づいて指定された OSS パスに毎日増分 PDF ファイルを生成する場合にのみ、DataWorks は Function Compute ノードでタスクを実行して増分 PDF ファイルに毎日ウォーターマークを追加できます。
この例では、DataWorks が Function Compute ノードでタスクの実行を開始する前に、OSS の
/${current_date}/形式のパスに PDF ファイルをアップロードする必要があります。たとえば、example.pdf という名前の PDF ファイルを2023-08-15/パスにアップロードできます。
オプション。 Function Compute ノードでタスクをデバッグおよび実行します。 構成が完了したら、Function Compute ノードの構成タブの上部にあるツールバーの
アイコンをクリックします。 [ランタイムパラメータ] ダイアログボックスで、Function Compute ノードでタスクを実行するために使用するリソースグループを選択し、値として使用する変数に定数を割り当ててから、[確認] をクリックして、Function Compute ノードのコードロジックが正しいかどうかをテストします。 たとえば、${current_date}変数に 2023-08-15 を値として割り当てると、DataWorks は Function Compute ノードでタスクを実行して、2023-08-15/パスに保存されている example.pdf ファイルにウォーターマークを追加します。Function Compute ノードのスケジューリングプロパティを構成して、ノードでタスクを定期的にスケジュールおよび実行します。DataWorks は、スケジューリングシナリオでノードコードに動的なパラメーター受け渡しを実装するために使用されるスケジューリングパラメーターを提供します。Function Compute ノードの構成タブの右側のナビゲーションウィンドウで、[プロパティ] をクリックできます。[スケジューリングパラメーター] タブの [プロパティ] セクションで、Function Compute ノードのスケジューリングパラメーターを構成できます。この例では、
current_dateスケジューリングパラメーターが追加され、$[yyyy-mm-dd]が値としてスケジューリングパラメーターに割り当てられます。yyyy-mm-dd は、Function Compute ノードでタスクが実行される年、月、および日を示します。スケジューリングパラメーターの構成の詳細については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。スケジューリングプロパティの詳細については、「スケジュール」をご参照ください。
3. Function Compute ノードをコミットしてデプロイする
Function Compute ノードは、本番環境にコミットおよびデプロイされた後にのみ、自動的にスケジュールできます。
Function Compute ノードを保存してコミットします。
Function Compute ノードの構成タブにある上部ツールバーの
アイコンと
アイコンをクリックして、Function Compute ノードを保存してコミットします。ノードをコミットするときは、プロンプトに従って変更の説明を入力し、コードレビューとスモークテストを実行するかどうかを指定します。説明[再実行] パラメーターと [親ノード] パラメーターを [プロパティ] タブで構成した後でのみ、ノードをコミットできます。
コードレビュー機能が有効になっている場合、ノードは、ノードのコードが指定されたレビュー担当者によって承認された後にのみデプロイできます。詳細については、「コードレビュー」をご参照ください。
作成したノードが期待どおりに実行されるようにするために、ノードをデプロイする前にスモークテストを実行することをお勧めします。詳細については、「スモークテストを実行する」をご参照ください。
オプション。 Function Compute ノードをデプロイします。
使用しているワークスペースが標準モードの場合、コミット後に右上隅にある [デプロイ] をクリックしてノードをデプロイする必要があります。詳細については、「基本モードのワークスペースと標準モードのワークスペースの違い」および「ノードをデプロイする」をご参照ください。
次のステップ
Function Compute ノードをコミットして本番環境のオペレーションセンターにデプロイした後、オペレーションセンターでノードの O&M 操作を実行できます。詳細については、「自動トリガーノードで基本的な O&M 操作を実行する」をご参照ください。
Function Compute ノードの作成と使用の基本手順を学習した後、ベストプラクティスに従って Function Compute ノードに関する詳細な知識を得ることができます。詳細については、「DataWorks で Function Compute ノードを使用して PDF ファイルに動的にウォーターマークを追加する」をご参照ください。