すべてのプロダクト
Search
ドキュメントセンター

AI Guardrails:Document Moderation 2.0 SDK

最終更新日:May 28, 2026

SDK またはネイティブ HTTPS 呼び出しを使用して、Document Moderation Version 2.0 と統合できます。SDK を使用することを推奨します。SDK は、署名検証やリクエストボディの構築などの技術的な詳細を自動的に処理するためです。このトピックでは、Document Moderation Version 2.0 との統合方法について説明します。

ステップ 1:サービスの有効化

Content Moderation 2.0 の有効化 ページに移動し、Content Moderation 2.0 を有効化します。API の使用を開始すると、使用量に基づいて課金されます。詳細については、「請求明細」をご参照ください。

Content Moderation 2.0 を有効化した後、デフォルトの課金方法は従量課金になります。実際の使用量に基づいて日次で課金されます。サービスを使用した場合にのみ課金されます。

ステップ 2:RAM ユーザーへの権限付与

SDK または API と統合する前に、RAM ユーザーに権限を付与する必要があります。Alibaba Cloud API 呼び出しを認証するために AccessKey ペアが必要です。手順については、「AccessKey の取得」をご参照ください。

RAM ユーザーへの権限付与

  1. Alibaba Cloud アカウントを使用して RAM コンソール にログインします。

  2. RAM ユーザーを作成します。詳細については、「RAM ユーザーの作成」をご参照ください。

  3. RAM ユーザーにシステムポリシー AliyunYundunGreenWebFullAccess を付与します。このポリシーにより、Content Moderation へのフルアクセス権限が付与されます。詳細については、「RAM ユーザー権限の管理」をご参照ください。

    RAM ユーザーはこれで Content Moderation API を呼び出せるようになります。

ステップ 3:ドキュメントモデレーションサービスの設定

サポートされているリージョン:

リージョン

パブリックエンドポイント

VPC エンドポイント

サポートされているサービス

シンガポール

green-cip.ap-southeast-1.aliyuncs.com

green-cip-vpc.ap-southeast-1.aliyuncs.com

, document_detection_global

説明

OpenAPI Explorer を使用して API をデバッグし、他のプログラミング言語の SDK サンプルコードを自動生成できます。

Alibaba Cloud SDK は、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を読み取ることでデフォルトの認証情報を自動的に作成します。API オペレーションを呼び出す際、プログラムはこれらの変数からご利用の AccessKey を読み取り、自動的に認証を完了します。SDK サンプルコードを使用する前に、環境変数を設定する必要があります。詳細については、「認証情報の設定」をご参照ください。

API フィールドの説明については、「Content Moderation - Enhanced 2.0 API」をご参照ください。

Java SDK

Java 1.8 以降をサポートしています。

Java SDK ソースコードまたはJava SDK ソースコード (OSS パス)をご参照ください。

この機能は、以下の 3 種類のドキュメント検出タイプをサポートしています。

公開ドキュメントのモデレーション

利用シーン

ファイルモデレーション 2.0 サービスは、URL から公開ドキュメントをフェッチすることでモデレーションを実行できます。

Maven プロジェクトで SDK を使用するには、pom.xml ファイルに依存関係を追加します。

  1. dependencies セクションに以下の依存関係を追加します。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>3.3.3</version>
    </dependency>
  2. Java SDK を統合します。

    • ドキュメント検出タスクを送信するサンプルコード

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.FileModerationRequest; 
      import com.aliyun.green20220302.models.FileModerationResponse; 
      import com.aliyun.green20220302.models.FileModerationResponseBody; 
      import com.aliyun.teaopenapi.models.Config;
      
      public class FileModerationDemo {
          public static void main(String[] args) throws Exception {
              Config config = new Config();
               /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する権限があります。API オペレーションの呼び出しや日常的な O&M には RAM ユーザーの使用を推奨します。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザーの AccessKey ID を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザーの AccessKey ID を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // 必要に応じてリージョンとエンドポイントを変更します。
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 読み取りタイムアウト。単位:ミリ秒 (ms)。
              config.setReadTimeout(6000);
              // 接続タイムアウト。単位:ミリ秒 (ms)。
              config.setConnectTimeout(3000);
      
              Client client = new Client(config);
              JSONObject serviceParameters = new JSONObject();
              serviceParameters.put("url", "https://xxx.oss.aliyuncs.com/xxx.pdf"); // ファイルの URL。
      
              FileModerationRequest fileModerationRequest = new FileModerationRequest(); 
              // 検出サービスを指定:一般ドキュメント検出の場合は document_detection_global。
              fileModerationRequest.setService("document_detection_global");
              fileModerationRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  FileModerationResponse response = client.fileModeration(fileModerationRequest); 
                  if (response.getStatusCode() == 200) {
                      FileModerationResponseBody result = response.getBody(); 
                      System.out.println(JSON.toJSONString(result));
                      System.out.println("requestId = " + result.getRequestId());
                      System.out.println("code = " + result.getCode());
                      System.out.println("msg = " + result.getMessage());
                      Integer code = result.getCode();
                      if (200 == code) {
                          FileModerationResponseBody.FileModerationResponseBodyData data = result.getData();
                          System.out.println("taskId = [" + data.getTaskId() + "]");
                      } else {
                          System.out.println("File moderation failed. Code: " + code);
                      }
                  } else {
                      System.out.println("The response was unsuccessful. Status: " + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      
    • ドキュメント検出結果を取得するサンプルコード

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeFileModerationResultRequest;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponse;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class DescribeFileModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する権限があります。API オペレーションの呼び出しや日常的な O&M には RAM ユーザーの使用を推奨します。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザーの AccessKey ID を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザーの AccessKey ID を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // 必要に応じてリージョンとエンドポイントを変更します。
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 読み取りタイムアウト。単位:ミリ秒 (ms)。
              config.setReadTimeout(6000);
              // 接続タイムアウト。単位:ミリ秒 (ms)。
              config.setConnectTimeout(3000);
            
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // モデレーションタスクを送信後に返されたタスク ID。
              serviceParameters.put("taskId", "fi_f_O5z5i*********-1xxp0V");
      
      
              DescribeFileModerationResultRequest describeFileModerationResultRequest = new DescribeFileModerationResultRequest();
              
              describeFileModerationResultRequest.setService("document_detection_global");
              describeFileModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  DescribeFileModerationResultResponse response = client.describeFileModerationResult(describeFileModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      DescribeFileModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          DescribeFileModerationResultResponseBody.DescribeFileModerationResultResponseBodyData data = result.getData();
                          System.out.println("pageResult = " + JSON.toJSONString(data.getPageResult()));
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("url = " + data.getUrl());
                      } else {
                          System.out.println("Querying the file moderation result failed. Code: " + result.getCode());
                      }
                  } else {
                      System.out.println("The response was unsuccessful. Status: " + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

ローカルドキュメントのスキャン

利用シーン

パブリック URL を持たないローカルマシンに保存されているドキュメントをモデレーションする必要がある場合は、Object Storage Service (OSS) バケットにアップロードします。ファイルモデレーション 2.0 サービスは、OSS バケットからドキュメントにアクセスしてモデレーションを実行できます。

  1. dependencies セクションに以下の依存関係を追加します。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>3.3.3</version>
    </dependency>

    OSS SDK の依存関係を追加します。

    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.16.3</version>
    </dependency>
  2. Java SDK を統合します。

    • ファイルモデレーションタスクを送信するサンプルコード

      import com.alibaba.fastjson.JSON;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeUploadTokenResponse;
      import com.aliyun.green20220302.models.DescribeUploadTokenResponseBody;
      import com.aliyun.green20220302.models.FileModerationRequest;
      import com.aliyun.green20220302.models.FileModerationResponse;
      import com.aliyun.green20220302.models.FileModerationResponseBody;
      import com.aliyun.oss.OSS;
      import com.aliyun.oss.OSSClientBuilder;
      import com.aliyun.oss.model.PutObjectRequest;
      import com.aliyun.teaopenapi.models.Config;
      import com.aliyun.teautil.models.RuntimeOptions;
      
      import java.io.File;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.UUID;
      
      public class FileModerationFile {
          /** サービスが VPC にデプロイされているかどうかを指定します。 */
          public static boolean isVPC = false;
      
          /** アップロードトークンをキャッシュします。このマップはエンドポイントをトークンにマッピングします。 */
          public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>();
      
          /** ファイルをアップロードするために使用されるクライアント。 */
          public static OSS ossClient = null;
      
          /**
           * リクエストを送信するためのクライアントを作成します。
           *
           * @param accessKeyId
           * @param accessKeySecret
           * @param endpoint
           * @return
           * @throws Exception
           */
          public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              Config config = new Config();
              config.setAccessKeyId(accessKeyId);
              config.setAccessKeySecret(accessKeySecret);
              // 実際のデプロイメントに基づいてリージョンとエンドポイントを変更します。
              config.setEndpoint(endpoint);
              return new Client(config);
          }
      
          /**
           * ファイルをアップロードするためのクライアントを作成します。
           *
           * @param tokenData
           * @param isVPC
           */
          public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) {
              // パフォーマンス向上のため、クライアントインスタンスの再利用を推奨します。
              if (isVPC) {
                  ossClient = new OSSClientBuilder().build(tokenData.ossInternalEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
              } else {
                  ossClient = new OSSClientBuilder().build(tokenData.ossInternetEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
              }
          }
      
          /**
           * ファイルをアップロードします。
           *
           * @param filePath
           * @param tokenData
           * @return
           * @throws Exception
           */
          public static String uploadFile(String filePath, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData) throws Exception {
              String[] split = filePath.split("\\.");
              String objectName;
              if (split.length > 1) {
                  objectName = tokenData.getFileNamePrefix() + UUID.randomUUID() + "." + split[split.length - 1];
              } else {
                  objectName = tokenData.getFileNamePrefix() + UUID.randomUUID();
              }
              PutObjectRequest putObjectRequest = new PutObjectRequest(tokenData.getBucketName(), objectName, new File(filePath));
              ossClient.putObject(putObjectRequest);
              return objectName;
          }
      
          public static FileModerationResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              // パフォーマンス向上のため、クライアントインスタンスの再利用を推奨します。
              Client client = createClient(accessKeyId, accessKeySecret, endpoint);
              RuntimeOptions runtime = new RuntimeOptions();
      
              // ローカルファイルの絶対パス。例:D:\localPath\exampleFile.mp3。
              String filePath = "D:/test/1.pdf";
              // ファイルアップロードトークンを取得します。
              if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) {
                  DescribeUploadTokenResponse tokenResponse = client.describeUploadToken();
                  tokenMap.put(endpoint, tokenResponse.getBody().getData());
              }
              // ファイルアップロード用のクライアントを作成します。
              getOssClient(tokenMap.get(endpoint), isVPC);
      
              // ファイルをアップロードします。
              String objectName = uploadFile(filePath, tokenMap.get(endpoint));
      
              // モデレーションパラメーターを構築します。
              Map<String, String> serviceParameters = new HashMap<>();
              // ファイルアップロード情報を指定します。
              serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName());
              serviceParameters.put("ossObjectName", objectName);
              serviceParameters.put("dataId", UUID.randomUUID().toString());
      
              FileModerationRequest request = new FileModerationRequest();
              // モデレーションサービスを指定します。
              request.setService("document_detection_global");
              request.setServiceParameters(JSON.toJSONString(serviceParameters));
      
              FileModerationResponse response = null;
              try {
                  response = client.fileModerationWithOptions(request, runtime);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return response;
          }
      
          public static void main(String[] args) throws Exception {
              /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する完全な権限が付与されています。セキュリティを強化するため、API 呼び出しや日常的なメンテナンスには RAM ユーザーの使用を推奨します。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザーの AccessKey ID を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザーの AccessKey ID を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              String accessKeyId = "YOUR_ACCESS_KEY_ID";
              String accessKeySecret = "YOUR_ACCESS_KEY_SECRET";
              // 実際のデプロイメントに基づいてリージョンとエンドポイントを変更します。
              FileModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.ap-southeast-1.aliyuncs.com");
      
                  // モデレーション結果を出力します。
                  if (response != null) {
                      if (response.getStatusCode() == 200) {
                          FileModerationResponseBody body = response.getBody();
                          System.out.println(JSON.toJSONString(body));
                          System.out.println("requestId = " + body.getRequestId());
                          System.out.println("code = " + body.getCode());
                          System.out.println("msg = " + body.getMessage());
                          Integer code = body.getCode();
                          if (200 == code) {
                              FileModerationResponseBody.FileModerationResponseBodyData data = body.getData();
                              System.out.println("taskId = [" + data.getTaskId() + "]");
                          } else {
                              // ファイルモデレーションが失敗しました。code:
                              System.out.println("File moderation failed. code: " + code);
                          }
                      } else {
                          // リクエストが失敗しました。status:
                          System.out.println("Request failed. status: " + response.getStatusCode());
                      }
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      
    • ファイルモデレーション結果を取得するサンプルコード

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeFileModerationResultRequest;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponse;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class DescribeFileModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する完全な権限が付与されています。セキュリティを強化するため、API 呼び出しや日常的なメンテナンスには RAM ユーザーの使用を推奨します。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザーの AccessKey ID を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザーの AccessKey ID を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // 実際のデプロイメントに基づいてリージョンとエンドポイントを変更します。
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 読み取りタイムアウト(ミリ秒単位)。
              config.setReadTimeout(6000);
              // 接続タイムアウト(ミリ秒単位)。
              config.setConnectTimeout(3000);
            
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // 送信時に返されたタスクの ID。
              serviceParameters.put("taskId", "fi_f_O5z5i*********-1xxp0V");
      
      
              DescribeFileModerationResultRequest describeFileModerationResultRequest = new DescribeFileModerationResultRequest();
              
              describeFileModerationResultRequest.setService("document_detection_global");
              describeFileModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  DescribeFileModerationResultResponse response = client.describeFileModerationResult(describeFileModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      DescribeFileModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          DescribeFileModerationResultResponseBody.DescribeFileModerationResultResponseBodyData data = result.getData();
                          System.out.println("pageResult = " + JSON.toJSONString(data.getPageResult()));
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("url = " + data.getUrl());
                      } else {
                          // ファイルモデレーション結果の取得に失敗しました。code:
                          System.out.println("Failed to retrieve file moderation result. code: " + result.getCode());
                      }
                  } else {
                      // リクエストが失敗しました。status:
                      System.out.println("Request failed. status: " + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

OSS 内のドキュメントのモデレーション

利用シーン

OSS に保存されているドキュメントをモデレーションするには、Content Moderation へのアクセスを許可するサービスロールを作成します。ファイルモデレーション V2.0 サービスは、このロールを使用してドキュメントを取得し、モデレーションを実行します。サービスロールを作成するには、クラウドリソースアクセス認可ページにアクセスしてください。

  1. 以下の dependencies を追加します。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>3.3.3</version>
    </dependency>

    OSS SDK をインストールします。

    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.16.3</version>
    </dependency>
  2. Java SDK を統合します。

    • ファイルモデレーションタスクを送信するサンプルコード

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.FileModerationRequest; 
      import com.aliyun.green20220302.models.FileModerationResponse; 
      import com.aliyun.green20220302.models.FileModerationResponseBody; 
      import com.aliyun.teaopenapi.models.Config;
      
      public class FileModerationDemo {
          public static void main(String[] args) throws Exception {
              Config config = new Config();
               /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する権限があります。API オペレーションの呼び出しや日常的な O&M には RAM ユーザーの使用を推奨します。
               * 環境変数を取得する方法:
               * 方法 1:
               *     RAM ユーザーの AccessKey ID を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザーの AccessKey ID を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // デプロイメントに基づいてリージョンとエンドポイントを変更します。
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 読み取りタイムアウト期間。単位:ミリ秒 (ms)。
              config.setReadTimeout(6000);
              // 接続タイムアウト期間。単位:ミリ秒 (ms)。
              config.setConnectTimeout(3000);
      
              Client client = new Client(config);
              JSONObject serviceParameters = new JSONObject();
              serviceParameters.put("ossBucketName", "your-bucket-name");
              serviceParameters.put("ossObjectName", "path/to/your/document.pdf");
              serviceParameters.put("ossRegionId", "ap-southeast-1"); 
      
              FileModerationRequest fileModerationRequest = new FileModerationRequest(); 
              // モデレーションサービス。一般ドキュメント検出の場合は document_detection_global に設定します。
              fileModerationRequest.setService("document_detection_global");
              fileModerationRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  FileModerationResponse response = client.fileModeration(fileModerationRequest); 
                  if (response.getStatusCode() == 200) {
                      FileModerationResponseBody result = response.getBody(); 
                      System.out.println(JSON.toJSONString(result));
                      System.out.println("requestId = " + result.getRequestId());
                      System.out.println("code = " + result.getCode());
                      System.out.println("msg = " + result.getMessage());
                      Integer code = result.getCode();
                      if (200 == code) {
                          FileModerationResponseBody.FileModerationResponseBodyData data = result.getData();
                          System.out.println("taskId = [" + data.getTaskId() + "]");
                      } else {
                          System.out.println("File moderation failed. code:" + code);
                      }
                  } else {
                      System.out.println("The response was unsuccessful. status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      
    • ファイルモデレーションタスクの結果を取得するサンプルコード

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeFileModerationResultRequest;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponse;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class DescribeFileModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する権限があります。API オペレーションの呼び出しや日常的な O&M には RAM ユーザーの使用を推奨します。
               * 環境変数を取得する方法:
               * 方法 1:
               *     RAM ユーザーの AccessKey ID を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザーの AccessKey ID を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザーの AccessKey Secret を取得:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("YOUR_ACCESS_KEY_ID");
              config.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET");
              // デプロイメントに基づいてリージョンとエンドポイントを変更します。
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 読み取りタイムアウト期間。単位:ミリ秒 (ms)。
              config.setReadTimeout(6000);
              // 接続タイムアウト期間。単位:ミリ秒 (ms)。
              config.setConnectTimeout(3000);
            
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // 送信リクエストによって返されたタスク ID。
              serviceParameters.put("taskId", "fi_f_O5z5i*********-1xxp0V");
      
      
              DescribeFileModerationResultRequest describeFileModerationResultRequest = new DescribeFileModerationResultRequest();
              
              describeFileModerationResultRequest.setService("document_detection_global");
              describeFileModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  DescribeFileModerationResultResponse response = client.describeFileModerationResult(describeFileModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      DescribeFileModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          DescribeFileModerationResultResponseBody.DescribeFileModerationResultResponseBodyData data = result.getData();
                          System.out.println("pageResult = " + JSON.toJSONString(data.getPageResult()));
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("url = " + data.getUrl());
                      } else {
                          System.out.println("Failed to retrieve the file moderation result. code:" + result.getCode());
                      }
                  } else {
                      System.out.println("The response was unsuccessful. status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

Python SDK

Python 3.6 以降をサポートしています。

ソースコードについては、「Python SDK ソースコード」をご参照ください。

この SDK は、以下の 3 種類のドキュメント検出をサポートしています。

パブリックにアクセス可能なドキュメント

利用シーン

モデレーション対象のドキュメントがパブリック URL でアクセス可能な場合、ファイルモデレーション 2.0 サービスは、そのファイルをフェッチしてモデレーションを実行できます。

  1. 次のコマンドを実行して SDK をインストールします。

    pip install alibabacloud_green20220302==3.2.4
  2. Python SDK を統合します。

    • ドキュメント検出タスクを送信します

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      import os
      
      config = Config(
          # 認証には AccessKey ペアが必要です。
          # セキュリティを確保するため、API オペレーションの呼び出しには RAM ユーザーを使用し、AccessKey ペアを環境変数に保存することを推奨します。
          # AccessKey ID または AccessKey Secret をコード内にハードコードしないでください。そうしないと、AccessKey ペアが漏洩する可能性があります。
          # コードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # 接続タイムアウト。単位:ミリ秒。
          connect_timeout=10000, 
          # 読み取りタイムアウト。単位:ミリ秒。
          read_timeout=3000,  
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      serviceParameters = {
          'url': 'https://detect-obj.oss-cn-hangzhou.aliyuncs.com/sample/xxxx.pdf',
      }
      fileModerationRequest = models.FileModerationRequest(
          # 検出サービスのタイプ。
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.file_moderation(fileModerationRequest)
          if response.status_code == 200:
              # API 呼び出しが成功しました。
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
    • ドキュメント検出結果を取得します

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      import os
      
      config = Config(
          # 認証には AccessKey ペアが必要です。
          # セキュリティを確保するため、API オペレーションの呼び出しには RAM ユーザーを使用し、AccessKey ペアを環境変数に保存することを推奨します。
          # AccessKey ID または AccessKey Secret をコード内にハードコードしないでください。そうしないと、AccessKey ペアが漏洩する可能性があります。
          # コードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # 接続タイムアウト。単位:ミリ秒。
          connect_timeout=10000, 
          # 読み取りタイムアウト。単位:ミリ秒。
          read_timeout=3000,  
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # タスク送信時に返された、クエリ対象のタスク ID。
      serviceParameters = {
          "taskId": 'fi_f_11w5THcb*******a-1xx7hH'
      }
      describeFileModerationResultRequest = models.DescribeFileModerationResultRequest(
          # 検出サービスのタイプ。
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.describe_file_moderation_result(describeFileModerationResultRequest)
          if response.status_code == 200:
              # API 呼び出しが成功しました。
              # モデレーション結果を取得します。
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

ローカルドキュメント

利用シーン

モデレーション対象のドキュメントがローカルマシンに保存されており、パブリック URL がない場合、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。ファイルモデレーション 2.0 サービスは、このバケットにアクセスしてドキュメントをモデレーションします。

  1. 次のコマンドを実行して SDK をインストールします。

    pip install alibabacloud_green20220302==3.2.4

    OSS SDK をインストールします。

    pip install oss2
  2. Python SDK を統合します。

    • ドキュメント検出タスクを送信します

      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      from alibabacloud_tea_util.client import Client as UtilClient
      from alibabacloud_tea_util import models as util_models
      import json
      import uuid
      import os
      import oss2
      import time
      
      configs = Config(
          # 認証には AccessKey ペアが必要です。
          # セキュリティを確保するため、API オペレーションの呼び出しには RAM ユーザーを使用し、AccessKey ペアを環境変数に保存することを推奨します。
          # AccessKey ID または AccessKey Secret をコード内にハードコードしないでください。そうしないと、AccessKey ペアが漏洩する可能性があります。
          # コードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # 接続タイムアウト。単位:ミリ秒。
          connect_timeout=10000,
          # 読み取りタイムアウト。単位:ミリ秒。
          read_timeout=10000,
          # ビジネス要件に基づいてリージョンとエンドポイントを変更します。
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      # 注:パフォーマンスを向上させるため、クライアントインスタンスを再利用して、繰り返し接続を回避してください。
      client = Client(configs)
      
      bucket = None
      upload_token = None
      
      
      def get_oss_client(is_vpc):
          global upload_token
          global bucket
          if (upload_token == None) or int(upload_token.expiration) <= int(time.time()):
              response = client.describe_upload_token()
      
              upload_token = response.body.data
              auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token)
      
              end_point = upload_token.oss_internet_end_point
              if (is_vpc):
                  end_point = upload_token.oss_internal_end_point
              bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name)
      
      
      def upload_file(file_name, is_vpc):
          get_oss_client(is_vpc)
          object_name = upload_token.file_name_prefix + str(uuid.uuid4()) + '.' + file_name.split('.')[-1]
          bucket.put_object_from_file(object_name, file_name)
          return object_name
      
      
      def file_moderation_by_local_file(file_path, is_vpc):
          # 1. ファイルをアップロードします。
          object_name = upload_file(file_path, is_vpc)
      
          # 2. 検出パラメーターを設定します。
          service_parameters = {
              'dataId': str(uuid.uuid4()),
              'ossBucketName': upload_token.bucket_name,
              'ossObjectName': object_name
          }
      
          file_moderation_request = models.FileModerationRequest(
              # 検出サービスのタイプ。
              service='document_detection_global',
              service_parameters=json.dumps(service_parameters)
          )
      
          # RuntimeOptions インスタンスを作成し、ランタイムパラメーターを設定します。
          runtime = util_models.RuntimeOptions()
          runtime.read_timeout = 10000
          runtime.connect_timeout = 10000
          try:
              global client
              response = client.file_moderation_with_options(file_moderation_request, runtime)
      
              if response.status_code == 200:
                  # API 呼び出しが成功しました。
                  # モデレーション結果を取得します。
                  result = response.body
                  print('response success. result:{}'.format(result))
                  if result.code == 200:
                      result_data = result.data
                      print('result: {}'.format(result_data))
              else:
                  print('response not success. status:{} ,result:{}'.format(response.status_code, response))
          except Exception as err:
              print(err)
      
      
      if __name__ == '__main__':
          # ローカルファイルのパス。
          file_path = '/Users/test/MS.pdf'
          # サービスが VPC にデプロイされているかどうかを指定します。
          is_vpc = False  # True
          file_moderation_by_local_file(file_path, is_vpc)
           
    • ドキュメント検出結果を取得します

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      import os
      
      config = Config(
          # 認証には AccessKey ペアが必要です。
          # セキュリティを確保するため、API オペレーションの呼び出しには RAM ユーザーを使用し、AccessKey ペアを環境変数に保存することを推奨します。
          # AccessKey ID または AccessKey Secret をコード内にハードコードしないでください。そうしないと、AccessKey ペアが漏洩する可能性があります。
          # コードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # 接続タイムアウト。単位:ミリ秒。
          connect_timeout=10000, 
          # 読み取りタイムアウト。単位:ミリ秒。
          read_timeout=3000,  
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # タスク送信時に返された、クエリ対象のタスク ID。
      serviceParameters = {
          "taskId": 'fi_f_11w5THcb*******a-1xx7hH'
      }
      describeFileModerationResultRequest = models.DescribeFileModerationResultRequest(
          # 検出サービスのタイプ。
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.describe_file_moderation_result(describeFileModerationResultRequest)
          if response.status_code == 200:
              # API 呼び出しが成功しました。
              # モデレーション結果を取得します。
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

OSS ドキュメント

利用シーン

ご利用のドキュメントがすでに Object Storage Service (OSS) にある場合、Content Moderation へのアクセスを許可するためにサービスロールを作成できます。このロールにより、ファイルモデレーション 2.0 サービスは、モデレーションのためにご利用の OSS ファイルを読み取ることができます。クラウドリソースアクセス認可ページにアクセスして、サービスロールを作成してください。

  1. 次のコマンドを実行して SDK をインストールします。

    pip install alibabacloud_green20220302==3.2.4
  2. Python SDK を統合します。

    • ドキュメント検出タスクを送信します

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      import os
      
      config = Config(
          # 認証には AccessKey ペアが必要です。
          # セキュリティを確保するため、API オペレーションの呼び出しには RAM ユーザーを使用し、AccessKey ペアを環境変数に保存することを推奨します。
          # AccessKey ID または AccessKey Secret をコード内にハードコードしないでください。そうしないと、AccessKey ペアが漏洩する可能性があります。
          # コードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # 接続タイムアウト。単位:ミリ秒。
          connect_timeout=10000,
          # 読み取りタイムアウト。単位:ミリ秒。
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      serviceParameters = {
          'ossRegionId': 'cn-hangzhou',
          'ossBucketName': 'detect-obj',
          'ossObjectName': 'sample/xxxx.pdf'
      }
      fileModerationRequest = models.FileModerationRequest(
          # 検出サービスのタイプ。
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.file_moderation(fileModerationRequest)
          if response.status_code == 200:
              # API 呼び出しが成功しました。
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
          
    • ドキュメント検出結果を取得します

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      import os
      
      config = Config(
          # 認証には AccessKey ペアが必要です。
          # セキュリティを確保するため、API オペレーションの呼び出しには RAM ユーザーを使用し、AccessKey ペアを環境変数に保存することを推奨します。
          # AccessKey ID または AccessKey Secret をコード内にハードコードしないでください。そうしないと、AccessKey ペアが漏洩する可能性があります。
          # コードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
          access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          # 接続タイムアウト。単位:ミリ秒。
          connect_timeout=10000, 
          # 読み取りタイムアウト。単位:ミリ秒。
          read_timeout=3000,  
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # タスク送信時に返された、クエリ対象のタスク ID。
      serviceParameters = {
          "taskId": 'fi_f_11w5THcb*******a-1xx7hH'
      }
      describeFileModerationResultRequest = models.DescribeFileModerationResultRequest(
          # 検出サービスのタイプ。
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.describe_file_moderation_result(describeFileModerationResultRequest)
          if response.status_code == 200:
              # API 呼び出しが成功しました。
              # モデレーション結果を取得します。
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)

PHP SDK

PHP 5.6 以降をサポートしています。

ソースコードについては、「PHP SDK ソースコード」をご参照ください。

以下の 3 種類のドキュメント検出がサポートされています。

パブリックにアクセス可能なドキュメント

ユースケース

モデレーション対象のドキュメントがパブリック URL でアクセス可能な場合、ファイルモデレーション 2.0 サービスはファイルをフェッチしてモデレーションを実行できます。

  1. 次のコマンドを実行して依存関係をインストールします。

    composer require alibabacloud/green-20220302 3.2.4
  2. PHP SDK を統合します。

    • ドキュメント検出タスクを送信します

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\FileModerationRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する権限があります。API オペレーションの呼び出しや日常的な O&M には RAM ユーザーの使用を推奨します。
           * セキュリティを強化するため、コード内に AccessKey ID および AccessKey Secret をハードコードしないでください。
           * このような操作により認証情報が漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。代わりに、環境変数から認証情報を取得してください。
           * RAM ユーザーの AccessKey ID を取得:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * RAM ユーザーの AccessKey Secret を取得:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
          "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // 注:パフォーマンスを向上させるため、クライアントインスタンスを再利用して繰り返し接続を回避することを推奨します。
      $client = new Green($config);
      
      $request = new FileModerationRequest();
      $request->service = "document_detection_global";
      $serviceParameters = array("url" => "https://xxx.oss.aliyuncs.com/xxx.pdf");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->fileModerationWithOptions($request, $runtime);
          print_r($response->body);
          if (200 != $response->statusCode) {
              print_r("Response not successful. Code: " . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (200 != $body->code) {
              print_r("File moderation not successful. Code: " . $body->code);
          }
          $data = $body->data;
          print_r("taskId = " . $data->taskId);
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • ドキュメント検出タスクの結果を取得します

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\DescribeFileModerationResultRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する権限があります。API オペレーションの呼び出しや日常的な O&M には RAM ユーザーの使用を推奨します。
           * セキュリティを強化するため、コード内に AccessKey ID および AccessKey Secret をハードコードしないでください。
           * このような操作により認証情報が漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。代わりに、環境変数から認証情報を取得してください。
           * RAM ユーザーの AccessKey ID を取得:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * RAM ユーザーの AccessKey Secret を取得:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
          "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // 注:パフォーマンスを向上させるため、クライアントインスタンスを再利用して繰り返し接続を回避することを推奨します。
      $client = new Green($config);
      
      $request = new DescribeFileModerationResultRequest();
      $request->service = "document_detection_global";
      $serviceParameters = array("taskId" => "fi_f_O5z5iaIis*****NYj7qa-1x****");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->describeFileModerationResultWithOptions($request, $runtime);
          if (200 != $response->statusCode) {
              print_r("Response not successful. Code: " . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (280 == $body->code) {
              print_r("Processing file moderation. Code: " . $body->code);
              return;
          }
          if (200 != $body->code) {
              print_r("File moderation result not successful. Code: " . $body->code);
              return;
          }
          $data = $body->data;
            print_r("data = " . json_encode($data) . "\n");
          print_r("pageResult = " . json_encode($data->pageResult) . "\n");
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }

ローカルドキュメント

ユースケース

パブリックにアクセスできないローカルドキュメントをモデレーションするには、Content Moderation が提供する OSS バケットにアップロードします。ファイルモデレーション 2.0 サービスは、このバケットからファイルにアクセスしてモデレーションを実行します。

  1. 次のコマンドを実行して依存関係をインストールします。

    composer require alibabacloud/green-20220302 3.2.4

    OSS SDK をインストールします。

    composer require aliyuncs/oss-sdk-php
  2. PHP SDK を統合します。

    • ドキュメント検出タスクを送信します

    • ドキュメント検出タスクの結果を取得します

OSS ドキュメント

ユースケース

モデレーション対象のドキュメントがすでに OSS に保存されている場合、Content Moderation が直接アクセスできるようにサービスロールを作成できます。このサービスロールにより、Content Moderation サービスにご利用の OSS ファイルへの読み取りアクセス権限が付与されます。ファイルモデレーション 2.0 サービスは、このロールを使用してドキュメントをフェッチしてモデレーションを実行します。サービスロールを作成するには、クラウドリソースアクセス認可ページにアクセスしてください。

  1. 次のコマンドを実行して依存関係をインストールします。

    composer require alibabacloud/green-20220302 3.2.4
  2. PHP SDK を統合します。

    • ドキュメント検出タスクを送信します

    • ドキュメント検出タスクの結果を取得します

Go SDK

Go SDK は、以下の 3 種類のドキュメント検出をサポートしています。

パブリックにアクセス可能なドキュメント

ユースケース

ご利用のドキュメントがパブリック URL でアクセス可能な場合、ドキュメント検出 version 2.0 サービスはファイルをフェッチしてモデレーションを実行できます。

Go SDK

  1. 次のコマンドを実行して依存関係をインストールします。

    go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4
  2. Go SDK を統合します。

    • ドキュメント検出タスクを送信するサンプルコード

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
          // プロジェクトコードが漏洩すると、AccessKey ペアが公開され、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。このサンプルコードは参照用です。より安全な STS のような方法の使用を推奨します。
          config := &openapi.Config{
              /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションを呼び出す権限があります。API アクセスや日常的な O&M には RAM ユーザーの使用を推奨します。
               * プロジェクトコード内に AccessKey ID および AccessKey Secret をハードコードしないことを強く推奨します。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。
               * 環境変数は以下の方法で取得できます:
               * RAM ユーザーの AccessKey ID を取得:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * RAM ユーザーの AccessKey Secret を取得:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId: tea.String("RAM ユーザーの AccessKey ID を指定します。環境変数から AccessKey ID を取得することを推奨します。"),
              AccessKeySecret: tea.String("RAM ユーザーの AccessKey Secret を指定します。環境変数から AccessKey Secret を取得することを推奨します。"),
              RegionId: tea.String("ap-southeast-1"),
              Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              /**
               * タイムアウト期間を設定します。サーバー側のエンドツーエンド処理タイムアウト期間は 10 秒です。この値に基づいてタイムアウト期間を設定することを推奨します。
               * 設定した ReadTimeout 期間がサーバー側の処理時間より短い場合、ReadTimeout エラーが返されます。
               */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          client, _err := green20220302.NewClient(config)
          if _err != nil {
              panic(_err)
          }
      
          // RuntimeObject インスタンスを作成し、ランタイムオプションを設定します。
          runtime := &util.RuntimeOptions{}
          runtime.ReadTimeout = tea.Int(10000)
          runtime.ConnectTimeout = tea.Int(10000)
      
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  "url": "https://xxx.oss.aliyuncs.com/xxx.pdf",
              },
          )
          request := green20220302.FileModerationRequest{
              Service:           tea.String("document_detection_global"),
              ServiceParameters: tea.String(string(serviceParameters)),
          }
      
          result, _err := client.FileModerationWithOptions(&request, runtime)
          if _err != nil {
              panic(_err)
          }
      
          if *result.StatusCode != http.StatusOK {
              fmt.Printf("response not success. status:%d\n", *result.StatusCode)
              return
          }
          body := result.Body
          fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
          if *body.Code != http.StatusOK {
              fmt.Printf("document detection not success. code:%d\n", *body.Code)
              return
          }
          
          data := body.Data
          fmt.Printf("document detection taskId:%s\n", *data.TaskId)
      }
    • ドキュメント検出タスクの結果を取得します

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v3/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
          // プロジェクトコードが漏洩すると、AccessKey ペアが公開され、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。このサンプルコードは参照用です。より安全な STS のような方法の使用を推奨します。
          config := &openapi.Config{
              /**
               * Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションを呼び出す権限があります。API アクセスや日常的な O&M には RAM ユーザーの使用を推奨します。
               * プロジェクトコード内に AccessKey ID および AccessKey Secret をハードコードしないことを強く推奨します。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。
               * 環境変数は以下の方法で取得できます:
               * RAM ユーザーの AccessKey ID を取得:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * RAM ユーザーの AccessKey Secret を取得:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId: tea.String("RAM ユーザーの AccessKey ID を指定します。環境変数から AccessKey ID を取得することを推奨します。"),
              AccessKeySecret: tea.String("RAM ユーザーの AccessKey Secret を指定します。環境変数から AccessKey Secret を取得することを推奨します。"),
              RegionId: tea.String("ap-southeast-1"),
              Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              /**
               * タイムアウト期間を設定します。サーバー側のエンドツーエンド処理タイムアウト期間は 10 秒です。この値に基づいてタイムアウト期間を設定することを推奨します。
               * 設定した ReadTimeout 期間がサーバー側の処理時間より短い場合、ReadTimeout エラーが返されます。
               */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          client, _err := green20220302.NewClient(config)
          if _err != nil {
          panic(_err)
          }
      
          // RuntimeObject インスタンスを作成し、ランタイムオプションを設定します。
          runtime := &util.RuntimeOptions{}
          runtime.ReadTimeout = tea.Int(10000)
          runtime.ConnectTimeout = tea.Int(10000)
      
          serviceParameters, _ := json.Marshal(
          map[string]interface{}{
          "taskId": "fi_f_O5z5iaIi******-1x****",
          },
          )
          request := green20220302.DescribeFileModerationResultRequest{
          Service:           tea.String("document_detection_global"),
          ServiceParameters: tea.String(string(serviceParameters)),
          }
      
          result, _err := client.DescribeFileModerationResultWithOptions(&request, runtime)
          if _err != nil {
          panic(_err)
          }
      
          if *result.StatusCode != http.StatusOK {
          fmt.Printf("response not success. status:%d\n", *result.StatusCode)
          return
          }
          body := result.Body
          fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
          if *body.Code == 280 {
          fmt.Printf("processing document detection. code:%d\n", *body.Code)
          return
          }
          if *body.Code != http.StatusOK {
          fmt.Printf("document detection result not success. code:%d\n", *body.Code)
          return
          }
      
          data := body.Data
          fmt.Printf("document detection result:%s\n", data)
          fmt.Printf("document detection result pageResult:%s\n", data.PageResult)
          fmt.Printf("document detection result dataId:%s\n", data.DataId)
      }

ローカルドキュメント

ユースケース

パブリックにアクセスできないローカルドキュメントをモデレーションするには、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードします。ドキュメント検出 version 2.0 サービスは、この OSS バケットからドキュメントにアクセスしてモデレーションを実行できます。

  1. 次のコマンドを実行して必要な依存関係をインストールします。

    go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4

    OSS SDK をインストールします。

    go get github.com/aliyun/aliyun-oss-go-sdk/oss
  2. Go SDK を統合します。

    • ドキュメント検出タスクを送信するサンプルコード

    • ドキュメント検出タスクの結果を取得します

OSS ドキュメント

ユースケース

Object Storage Service (OSS) に保存されているドキュメントをモデレーションするには、まずサービスロールを作成して Content Moderation にご利用の OSS リソースへのアクセスを許可する必要があります。ドキュメント検出 version 2.0 サービスは、このロールを使用してドキュメントをフェッチしてモデレーションを実行します。サービスロールを作成するには、クラウドリソースアクセス認可ページにアクセスしてください。

  1. 次のコマンドを実行して依存関係をインストールします。

    go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4
  2. Go SDK を統合します。

    • ドキュメント検出タスクを送信するサンプルコード

    • ドキュメント検出タスクの結果を取得します

Node.js SDK

Node.js SDK ソースコードを参照してください。

以下の 3 種類のドキュメントモデレーションがサポートされています。

パブリック URL ドキュメント

利用シーン

ドキュメントがパブリック URL でアクセス可能な場合、ドキュメントモデレーション 2.0 サービスは URL からファイルをフェッチしてモデレーションを実行できます。

  1. 次のコマンドを実行して必要な依存関係をインストールします。

    npm install @alicloud/green20220302@3.2.4
  2. Node.js SDK を統合します。

    • ドキュメントモデレーションタスクを送信するサンプルコード

      ドキュメントモデレーションタスクの結果を取得するサンプルコード

ローカルファイル

利用シーン

ドキュメントがローカルに保存されており、パブリック URL がない場合、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。ドキュメントモデレーション 2.0 サービスは、OSS からファイルを取得してモデレーションを実行します。

  1. 次のコマンドを実行して必要な依存関係をインストールします。

    npm install @alicloud/green20220302@3.2.4

    OSS SDK をインストールします。

    npm install ali-oss --save
  2. Node.js SDK を統合します。

    • ドキュメントモデレーションタスクを送信するサンプルコード

      ドキュメントモデレーションタスクの結果を取得するサンプルコード

OSS ドキュメント

利用シーン

モデレーション対象のドキュメントがすでに Object Storage Service (OSS) にある場合、Content Moderation がご利用の OSS リソースにアクセスできるようにサービスロールを作成する必要があります。ドキュメントモデレーション 2.0 サービスは、このロールを使用してファイルをフェッチしてモデレーションを実行します。サービスロールはクラウドリソースアクセス認可ページで作成できます。

  1. 次のコマンドを実行して必要な依存関係をインストールします。

    npm install @alicloud/green20220302@3.2.4
  2. Node.js SDK を統合します。

    • ドキュメントモデレーションタスクを送信するサンプルコード

      ドキュメントモデレーションタスクの結果を取得するサンプルコード

C# SDK

ソースコードについては、「C# SDK ソースコード」をご参照ください。

このサービスは、3 種類のドキュメント検出をサポートしています。

パブリック URL からのドキュメント検出

ユースケース

モデレーション対象のドキュメントがパブリック URL でアクセス可能な場合、ドキュメント検出 2.0 サービスは URL からファイルをフェッチしてモデレーションを実行できます。

  1. 次のコマンドを実行して必要な依存関係をインストールします。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4
  2. C# SDK を統合します。

    • ドキュメント検出タスクを送信するサンプルコード

    • ドキュメント検出タスクの結果を取得するサンプルコード

ローカルドキュメントの検出

ユースケース

パブリック URL でアクセスできないローカルに保存されているドキュメントをモデレーションする必要がある場合、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。ドキュメントモデレーションサービスは、OSS からファイルに直接アクセスしてモデレーションを実行できます。

  1. 次のコマンドを実行して依存関係を追加します。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4

    OSS SDK をインストールします。

    NuGet 経由でインストール 
    1. Visual Studio に NuGet がインストールされていない場合は、まずインストールしてください。
    2. Visual Studio でプロジェクトを作成または開きます。[ツール] > [NuGet パッケージマネージャー] > [ソリューションの NuGet パッケージの管理] を選択します。
    3. aliyun.oss.sdk を検索します。結果から Aliyun.OSS.SDK (.NET Framework 向け) または Aliyun.OSS.SDK.NetCore (.NET Core 向け) を見つけ、最新バージョンを選択して [インストール] をクリックします。
  2. C# SDK を統合します。

    • ドキュメント検出タスクを送信します

    • ドキュメント検出タスクの結果を取得します

OSS 内のドキュメントのモデレーション

利用シーン

モデレーション対象のドキュメントファイルがすでに Alibaba Cloud Object Storage Service (OSS) に保存されている場合、Content Moderation サービスが OSS にアクセスできるようにサービスロールの作成と認証付与を行うことができます。Document Moderation version 2.0 サービスは、このサービスロールを使用して OSS からファイルを取得し、モデレーションを実行します。クラウドリソースアクセス認可ページにアクセスして、サービスロールを作成してください。

  1. 次のコマンドを実行して必要な依存関係を追加します。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4
  2. C# SDK を統合します。

    • ドキュメントモデレーションタスクを送信するサンプルコード

    • ドキュメントモデレーション結果を取得するサンプルコード

ネイティブ HTTPS 呼び出し

  • Invocation Method

    エンドポイント: https://green-cip.{region}.aliyuncs.com

    プロトコル: HTTPS

    メソッド: POST

  • 共通リクエストパラメーター

    Document Moderation (Enhanced) API へのリクエストには、共通リクエストパラメーターと API 固有のパラメーターが含まれます。すべての API 呼び出しには共通リクエストパラメーターを含める必要があります。以下の表は、共通リクエストパラメーターについて説明しています。

    パラメーター

    タイプ

    必須

    説明

    Actions

    String

    はい

    レスポンスのフォーマット。有効な値:

    • JSON (デフォルト)

    • XML

    Version

    String

    はい

    API バージョン。形式は YYYY-MM-DD です。このリリースでは、2022-03-02 を使用します。

    AccessKeyId

    String

    はい

    サービスアクセス用の AccessKey ID。

    Signature

    String

    はい

    署名文字列。計算の詳細については、以下の「署名方法」セクションをご参照ください。

    SignatureMethod

    String

    はい

    署名方法。HMAC-SHA1 がサポートされています。

    Timestamp

    String

    はい

    リクエストのタイムスタンプ。タイムスタンプは UTC で、ISO 8601 標準に従ってフォーマットする必要があります。

    形式:yyyy-MM-ddTHH:mm:ssZ

    例:2022-12-12T01:13:14Z は、2022 年 12 月 12 日 09:13:14 (UTC + 08:00) を表します。

    SignatureVersion

    String

    はい

    署名アルゴリズムのバージョン。1.0 に設定します。

    SignatureNonce

    String

    はい

    リプレイ攻撃を防止するための nonce。各リクエストに対して異なる値を使用する必要があります。

    action

    String

    はい

    有効な値:

    • FileModeration

    • DescribeFileModerationResult

  • 共通レスポンスパラメーター

    システムは、成功・失敗を問わず、すべての API リクエストに対して一意の RequestId を返します。その他のレスポンスパラメーターは、API オペレーションによって異なります。

    {
        "Msg": "OK",
        "Code": 200,
        "Data":
        {
            "TaskId": "AAAAA-BBBBB-CCCCCCCC"
        },
        "RequestId": "ABCD1234-1234-1234-1234-123****"
    }
  • 以下のサンプルレスポンスは読みやすさのためにフォーマットされています。実際のレスポンスはインデントや改行がありません。

    • モデレーションタスクの例

      サンプルリクエスト

      サンプル成功レスポンス

      {
          "Msg": "OK",
          "Code": 200,
          "Data":
          {
              "TaskId": "AAAAA-BBBBB-CCCCCCCC"
          },
          "RequestId": "ABCD1234-1234-1234-1234-123****"
      }
    • タスククエリの例

      サンプルリクエスト

      サンプル成功レスポンス

      {
          "Code": 200,
          "Data": {
              "DataId": "fileId*****",
              "PageResult": [
                  {
                      "ImageResult": [
                          {
                              "Description": "ドキュメントページの画像コンテンツのモデレーション",
                              "LabelResult": [
                                  {
                                      "label": "nonLabel"
                                  }
                              ],
                              "Service": "baselineCheck"
                          }
                      ],
                      "ImageUrl": "http://oss.aliyundoc.com/a.png",
                      "PageNum": 1,
                      "TextResult": [
                          {
                              "Description": "ドキュメントページのテキストコンテンツのモデレーション",
                              "Labels": "",
                              "RiskTips": "",
                              "RiskWords": "",
                              "Service": "pgc_detection",
                              "Text": "Content Moderation プロダクトテストケース A"
                          }
                      ]
                  },
                  ...
                  {
                      "ImageResult": [
                          {
                              "Description": "ドキュメントページの画像コンテンツのモデレーション",
                              "LabelResult": [
                                  {
                                      "Confidence": 89.01,
                                      "Label": "pornographic_adultContent_tii"
                                  }
                              ],
                              "Service": "baselineCheck"
                          }
                      ],
                      "ImageUrl": "http://oss.aliyundoc.com/b.png",
                      "PageNum": 10,
                      "TextResult": [
                          {
                              "Description": "ドキュメントページのテキストコンテンツのモデレーション",
                              "Labels": "contraband,sexual_content",
                              "RiskTips": "contraband_prohibited-items,sexual-content_film-tv,sexual-content_vulgar",
                              "RiskWords": "Risk Word A,Risk Word B",
                              "Service": "ad_compliance_detection",
                              "Text": "Content Moderation プロダクトテストケース B"
                          }
                      ]
                  }
              ],
              "Url": "http://www.aliyundoc.com/a.docx"
          },
          "Message": "SUCCESS",
          "RequestId": "1D0854A7-AAAAA-BBBBBBB-CC8292AE5"
      }
  • 署名方法

    Document Moderation (Enhanced) サービスは、すべてのリクエストを認証します。送信者の身元を確認するために、各リクエストに署名を含める必要があります。このサービスは、AccessKeyIdAccessKey Secret を使用した対称暗号化により送信者を認証します。

    AccessKeyIdAccessKey Secret は Alibaba Cloud によって発行されます。Alibaba Cloud Web サイトでこれらを作成および管理できます。AccessKeyId はユーザーを識別し、AccessKey Secret は署名文字列を計算するための秘密鍵です。AccessKey Secret は厳重に保管する必要があります。

    リクエストに署名するには、以下の手順に従います。

    1. 正規化されたクエリ文字列 を作成します。

      1. すべてのリクエストパラメーター(共通リクエストパラメーターおよび指定された API のカスタムパラメーターを含むが、[Signature] パラメーター自体は除く)を、パラメーター名のアルファベット順に並べ替えます。

      2. UTF-8 文字セットを使用して、各パラメーターの名前と値を URL エンコードします。

        説明

        java.net.URLEncoder (Java) などのほとんどの URL エンコーディングライブラリは、application/x-www-form-urlencoded MIME タイプのルールに従っています。これらのライブラリを使用する場合、プラス記号 (+) を %20 に、アスタリスク (*) を %2A に、%7E をチルダ (~) に置き換える必要があります。

        URL エンコーディング のルールは以下のとおりです。

        • 大文字 (A-Z)、小文字 (a-z)、数字 (0-9)、ハイフン (-)、アンダースコア (_)、ドット (.)、チルダ (~) はエンコードしません。

        • その他のすべての文字は %XY 形式でエンコードします。ここで、XY は文字の ASCII コードの 2 桁の 16 進数表現です。たとえば、二重引用符 (") は %22 としてエンコードされます。

        • 拡張 UTF-8 文字は %XY%ZA… 形式でエンコードします。

        • スペースは %20 としてエンコードする必要があります。プラス記号 (+) ではありません。

      3. エンコードされたパラメーター名とそのエンコードされた値を等号 (=) で接続します。

      4. 名前と値のペアをアンパサンド (&) で連結して、正規化されたクエリ文字列を形成します。

    2. 正規化されたクエリ文字列 を使用して、署名対象文字列を作成します。

      StringToSign=
      HTTPMethod + "&" +
      percentEncode("/") + "&" +
      percentEncode(CanonicalizedQueryString)
      説明

      HTTPMethod はリクエストに使用される HTTP メソッド (例: POST) です。percentEncode(/) は、a.ii 項で説明されている URL エンコーディングルールに基づいてスラッシュ文字 (/) を URL エンコードした値であり、%2F です。percentEncode(CanonicalQueryString) は、a.i 項で作成した正規化クエリ文字列を a.ii 項の URL エンコーディングルールに基づいて URL エンコードした文字列です。

    3. RFC 2104 で定義されている HMAC 値を署名対象文字列に対して計算します。

      説明

      署名計算のキーは、ご利用の AccessKey Secret の後に & 文字 (ASCII: 38) を付けたものであり、ハッシュ化アルゴリズムは SHA1 です。

    4. HMAC 値を Base64 エンコードして署名文字列を取得します。この値は Signature パラメーターとして使用されます。

    5. 署名文字列を Signature パラメーターとしてリクエストに追加します。

      説明

      署名文字列を最終的なリクエストに追加する前に、RFC 3986 に従って URL エンコードする必要があります。