このトピックでは、DataWorksのFunction Computeノードを使用してFunction Computeサービスを呼び出し、Object Storage service (OSS) の増分PDFファイルにウォーターマークを定期的に追加する方法について説明します。
背景情報
DataWorksでは、Function Computeノードを使用してFunction Computeサービスを呼び出すことができます。 Function Computeサービスのさまざまな機能のカスタム設定を実行し、DataWorksのFunction Computeノードを使用してサービスを呼び出すことができます。
前提条件
DataWorksが有効化されています。 詳細については、「DataWorksの有効化」をご参照ください。
Function Computeが有効化されています。 詳細については、「関数の迅速な作成」をご参照ください。
Object Storage Service (OSS) が有効化されていること。 詳細については、「OSSの有効化」をご参照ください。 バケットを作成し、透かしを追加するPDFファイルをアップロードします。 この例では、
bucket-testxxxx
バケットに2023-08-15ディレクトリが作成され、example.pdf
ファイルがそのディレクトリにアップロードされます。
制限事項
機能の制限
DataWorksでは、イベント関数のみを呼び出すことができます。 DataWorksでイベント処理関数を定期的にスケジュールする場合は、HTTP関数ではなくイベント関数を作成して、function Computeでイベントリクエストを処理する必要があります。 その他の関数タイプについては、「関数タイプの選択」をご参照ください。
地域の制限
Function Computeノードが提供する機能は、中国 (杭州) 、中国 (上海) 、中国 (北京) 、
中国 (深セン) 、中国 (成都) 、中国 (香港) 、シンガポール、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、ドイツ (フランクフルト) 、英国 (ロンドン) 、米国 (シリコンバレー) 、米国 (バージニア) 。
ステップ1: start-pdf-watermarkアプリケーションの作成
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
[アプリケーション] ページで、[アプリケーションの作成] をクリックします。 [アプリケーションの作成] ページで、[テンプレートを使用してアプリケーションを作成する] を選択します。 [ファイル処理] タブで、start-pdf-watermarkカードを見つけ、その上にポインターを移動して、[今すぐ作成] をクリックします。
説明GitHubにアクセスして、start-pdf-watermarkアプリケーションテンプレートのソースコードを確認できます。 アプリケーションの実装ロジックは、指定された透かしをOSSのPDFファイルに追加し、透かしを含むPDFファイルを同じOSSパスに書き戻すことです。
表示されるページで、デプロイメントタイプとして [直接デプロイ] を選択し、リージョンとOSSバケット名を選択します。 特別な要件がない場合は、他のパラメーターにデフォルト値を使用します。 次に、[デフォルト環境の作成と展開] をクリックします。
パラメーター
説明
展開タイプ
値を [直接デプロイ] に設定します。
アプリケーション名
システムは、関連する要件を満たす名前を自動的に生成します。 ビジネス要件に基づいて名前を変更できます。
ロール名
デフォルトでは、AliyunFCServerlessDevsRoleが選択されています。 ビジネス要件に基づいて、ロールにアタッチされているポリシーを変更できます。
Serverless Application Centerでアプリケーションをデプロイするときは、Function Computeに必要な権限が付与されていることを確認してください。 たとえば、特定のサービスおよび機能リソースをデプロイし、Virtual Private Cloud (VPC) 、File Storage NAS (NAS) 、Simple Log serviceなどの他のAlibaba Cloudサービスにアクセスする場合は、いくつかの権限が必要です。 まず、RAMロールをアプリケーションまたは環境に関連付け、Function Computeを信頼できるサービスとして設定する必要があります。 その後、Service Application Centerは、AssumeRole操作を呼び出してSecurity Token Service (STS) トークンを取得し、RAMロールを引き受けてAlibaba Cloudサービスにアクセスできます。
承認を簡素化するために、Serverless Application CenterはデフォルトのロールAliyunFCServerlessDevsRoleを提供します。 このロールは、Service Application Centerによってアクセスされる一部のAlibaba Cloudリソースに対する権限を持ちます。 Resource Access Management (RAM) コンソールにログインして、AliyunFCServerlessDevsRoleロールの権限を表示できます。
リージョン
アプリケーションを作成するリージョンを選択します。 リージョンを選択すると、選択したリージョンのOSSバケットのみがOSSバケット名パラメーターで使用できます。
サービス名
システムは、関連する要件を満たす名前を自動的に生成します。 ビジネス要件に基づいて名前を変更できます。 Function Compute 3.0を使用している場合、このパラメーターは表示されません。
関数名
システムは、関連する要件を満たす名前を自動的に生成します。 ビジネス要件に基づいて名前を変更できます。
タイムゾーン
デフォルトでは、選択したリージョンが属するタイムゾーンが選択されます。 ビジネス要件に基づいて値を変更できます。
OSSバケット名
使用するOSSバケットを選択します。 [リージョン] ドロップダウンリストから選択したリージョンに存在するOSSバケットのみが使用できます。
RAMのARN
AliyunFcDefaultRoleはデフォルトで選択されています。 ビジネス要件に基づいて値を変更できます。
権限付与操作を簡素化するために、Function ComputeはAliyunFCDefaultRoleという名前のデフォルトのサービスロールを提供します。 このロールには、Function Computeがアクセスする必要がある特定のAlibaba Cloudリソースに対する権限があります。 AliyunFcDefaultRoleデフォルトサービスロールを作成してロールを割り当てる方法については、「関数の迅速な作成」トピックのステップ1: Function Computeの有効化セクションを参照してください。
説明アプリケーションの作成時にアプリケーションに追加の権限が必要であることをシステムが求めている場合は、[権限付与] をクリックして必要な権限を取得できます。
表示されるアプリケーションの詳細ページで、アプリケーションの展開ステータスを表示します。 ページの右側の [デプロイメントステータス] の横に [デプロイ済み] が表示されている場合、アプリケーションはデプロイされます。
次の操作を実行して、テスト用のOSSデータを準備します。OSSコンソールの [バケット] ページに移動し、アプリケーションの作成時に指定したバケットを見つけて、その名前をクリックします。
[オブジェクト] タブで、[ディレクトリの作成] をクリックして
[DataworksPDF]
という名前のディレクトリを作成し、example.pdf
ファイルをこのディレクトリにアップロードします。Function Computeコンソールのアプリケーションの詳細ページに戻り、[関数リソース] セクションの関数名をクリックして [関数の詳細] ページに移動します。
[テスト関数] タブをクリックし、[テストイベントの設定] をクリックします。 設定パラメータを表示します。
[テストイベント] パラメーターを [新しいテストイベントの作成] または [既存のテストイベントの変更] に設定し、その他のパラメーターを設定します。
イベント名: [イベント名] フィールドにテストイベントの名前を入力します。
イベントコンテンツ: コードエディターにJSON形式のコードを入力します。 この例では、次のコードが入力されます。
重要次のコードを直接コピーする場合は、スラッシュ (
/
) とスラッシュ (/) の後のコメントを削除する必要があります。 そうしないと、コードはJSON形式の検証に失敗する可能性があります。// The following code provides an example on how to add the watermark DataWorks to a PDF file named example.pdf in the DataworksPDF/ path. The font of the watermark is Helvetica, and the font size is 30. For information about the parameters in the code, see the comments of the parameters. { "pdf_file": "DataworksPDF/example.pdf", // The path of the PDF file in the OSS bucket. "mark_text": "DataWorks", // The watermark text. If you want to add a watermark to a PDF file, this parameter is required. "pagesize": [595.275590551181, 841.8897637795275], // Optional. The default value is the A4 paper size (21 cm × 29.7 cm). 1 cm is equivalent to 28.346456692913385 points. "font": "Helvetica", // Optional. The font of the watermark. The default value is Helvetica. If you want to add a watermark in Chinese to the PDF file, you can set this parameter to zenhei or microhei. "font_size": 20, // Optional. The font size of the watermark. The default value is 30. "font_color": [0, 0, 0], // The font color of the watermark, in the RGB format. The default color is black. "rotate": 30, // Optional. The rotation angle of the watermark. The default value is 0. "opacity": 0.1, // Optional. The transparency of the watermark. The default value is 0.1. The value 1 indicates that the watermark is not transparent. "density": [198.4251968503937, 283.46456692913387] // The density of the watermark. The default value is [141.73228346456693, 141.73228346456693], which indicates an interval of 7 cm on the X-axis and an interval of 10 cm on the Y-axis exist between watermark texts. }
[テスト関数] をクリックします。 コードが正常に実行されると、指定されたOSSパスで透かしが追加されたPDFファイルを表示できます。
この例では、
example-out.pdf
ファイルが生成されます。ソースPDFファイルと生成されたPDFファイルをOSSで表示できます。
手順2: DataWorksコンソールでのFunction Computeノードの作成と設定
DataWorks コンソールにログインします。
上部のナビゲーションバーで、手順1: Function Computeアプリケーションの作成で指定したリージョンを選択します。
左側のナビゲーションウィンドウで、[データ開発とガバナンス] > [データ開発] を選択します。 [データ開発] ページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
DataStudioページの [スケジュールされたワークフロー] ペインで、目的のワークフローを見つけ、名前をクリックし、[全般] を右クリックして、[ノードの作成]> [Function Compute] を選択します。 [ノードの作成] ダイアログボックスで、[名前] パラメーターを設定し、[確認] をクリックします。 Function Computeノードが作成されました。
Function Computeノードの [設定] タブで、パラメーターを設定します。
パラメーター
説明
関数の選択
ステップ1のサブステップ3で指定した関数名を選択します。 関数の作成方法については、「関数の管理」をご参照ください。
説明DataWorksでは、イベント関数のみを呼び出すことができます。 DataWorksでイベント処理関数を定期的にスケジュールする場合は、HTTP関数ではなくイベント関数を作成して、function Computeでイベントリクエストを処理する必要があります。 その他の関数タイプについては、「関数タイプの選択」をご参照ください。
バージョンまたはエイリアスの選択
その後の関数の呼び出しに使用するサービスのバージョンまたはエイリアスを選択します。 [デフォルトバージョン] を選択すると、Versionパラメーターが表示され、Versionパラメーターの値はLATESTに固定されます。 この例では、デフォルトバージョンが選択されています。
サービスバージョン
Function Computeは、サービスレベルのバージョン管理機能を提供します。これにより、サービスの1つ以上のバージョンをリリースできます。 バージョンは、サービス設定、サービスに属する機能のコードと設定などの情報を含むサービススナップショットに似ています。 バージョンにはトリガー情報が含まれていません。 バージョンをリリースすると、システムはサービスのスナップショットを生成し、将来使用するためにスナップショットに関連付けられたバージョン番号を割り当てます。 バージョンをリリースする方法の詳細については、「バージョンの管理」をご参照ください。
バージョンエイリアス
Function Computeでは、サービスバージョンのエイリアスを作成できます。 エイリアスは、サービスの特定のバージョンを指します。 エイリアスを使用して、バージョンリリース、ロールバック、またはカナリアリリースを簡単に実行できます。 エイリアスは、サービスまたはバージョンに依存します。 エイリアスを使用してサービスまたは関数にアクセスすると、function Computeはエイリアスをそのエイリアスが指すバージョンに解析します。 このように、インボーカは、エイリアスが指す特定のバージョンを知る必要がない。 エイリアスの作成方法については、「エイリアスの管理」をご参照ください。
呼び出しメソッド
この例では、同期呼び出しが選択されています。 呼び出し方法の詳細については、「同期呼び出し」と「非同期呼び出し」ディレクトリのトピックをご参照ください。
同期呼び出し: 関数を同期して呼び出すと、イベントが関数を直接トリガーし、function Computeが関数を実行して応答を待ちます。 関数が呼び出されると、function Computeは関数の実行結果を返します。
非同期呼び出し: 関数を非同期で呼び出すと、function Computeは、リクエストの実行が完了した後にのみ応答を返すのではなく、リクエストが永続化された後にすぐに応答を返します。
関数に時間がかかる、リソースがかかる、またはエラーが発生しやすいロジックがある場合は、この方法を使用して、プログラムが効率的かつ信頼性の高い方法でトラフィックの急増に対応できるようにすることができます。
この方法は、実行時間が1時間を超えるFunction Computeタスクに使用することを推奨します。
変数
関数を値として呼び出すためのコードで使用される変数に割り当てられるパラメーター。 この例では、手順1のサブステップ7で設定したJSONコンテンツが変更され、OSSの増分PDFファイルにウォーターマークを毎日追加するために使用されます。
// The following code provides an example on how to add a watermark to a PDF file named example.pdf in a path that is in the ${current_date}/ format. { "pdf_file": "${current_date}/example.pdf", // The path of the PDF file in the OSS bucket. "mark_text": "DataWorks", // The watermark text. If you want to add a watermark to a PDF file, this parameter is required. "pagesize": [595.275590551181, 841.8897637795275], // Optional. The default value is the A4 paper size (21 cm, 29.7 cm). 1 cm is equivalent to 28.346456692913385 points. "font": "Helvetica", // Optional. The font of the watermark. The default value is Helvetica. If you want to add a watermark in Chinese to the PDF file, you can set this parameter to zenhei or microhei. "font_size": 20, // Optional. The font size of the watermark. The default value is 30. "font_color": [0, 0, 0], // The font color of the watermark, in the RGB format. The default color is black. "rotate": 30, // Optional. The rotation angle of the watermark. The default value is 0. "opacity": 0.1, // Optional. The transparency of the watermark. The default value is 0.1. The value 1 indicates that the watermark is not transparent. "density": [198.4251968503937, 283.46456692913387] // The density of the watermark. The default value is [141.73228346456693, 141.73228346456693], which indicates an interval of 7 cm on the X-axis and an interval of 10 cm on the Y-axis exist between watermark texts. }
説明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
です。DataWorksは、Function Computeノードでタスクを実行して、Function Computeノードのスケジューリング時間より前に、特定の時間関連ルールに基づいて、ビジネスシステムが毎日、指定されたOSSパスに増分PDFファイルを生成する場合にのみ、毎日増分PDFファイルにウォーターマークを追加できます。
この例では、DataWorksがFunction Computeノードでタスクの実行を開始する前に、OSSの
/${current_date}/
形式のパスにPDFファイルをアップロードする必要があります。 たとえば、example.pdfという名前のPDFファイルを2023-08-15/
パスにアップロードできます。
オプション: Function Computeノードでタスクをデバッグして実行します。 設定が完了したら、Function Computeノードの設定タブの上部ツールバーにある
アイコンをクリックします。 [ランタイムパラメーター] ダイアログボックスで、Function Computeノードでタスクを実行するために使用するリソースグループを選択し、値として使用する変数に定数を割り当て、[確認] をクリックして、Function Computeノードのコードロジックが正しいかどうかをテストします。 たとえば、値として2023-08-15を
${current_date}
変数に割り当てると、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ノードを運用環境のOperation Centerにコミットしてデプロイした後、Operation CenterのノードでO&M操作を実行できます。 詳細については、「自動トリガーノードでの基本的なO&M操作の実行」をご参照ください。
Function Computeノードの作成と使用の基本的な手順を学習したら、ベストプラクティスに従ってFunction Computeノードの詳細な知識を得ることができます。 詳細については、「DataWorksでFunction Computeノードを使用してPDFファイルにウォーターマークを動的に追加する」をご参照ください。