dlp/src/inspect_send_data_to_hybrid_job_trigger.php (88 lines of code) (raw):
<?php
/**
* Copyright 2023 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* For instructions on how to run the samples:
*
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/dlp/README.md
*/
namespace Google\Cloud\Samples\Dlp;
# [START dlp_inspect_send_data_to_hybrid_job_trigger]
use Google\ApiCore\ApiException;
use Google\Cloud\Dlp\V2\Container;
use Google\Cloud\Dlp\V2\DlpServiceClient;
use Google\Cloud\Dlp\V2\ContentItem;
use Google\Cloud\Dlp\V2\DlpJob\JobState;
use Google\Cloud\Dlp\V2\HybridContentItem;
use Google\Cloud\Dlp\V2\HybridFindingDetails;
/**
* Inspect data hybrid job trigger.
* Send data to the hybrid job or hybrid job trigger.
*
* @param string $callingProjectId The Google Cloud project id to use as a parent resource.
* @param string $string The string to inspect (will be treated as text).
*/
function inspect_send_data_to_hybrid_job_trigger(
// TODO(developer): Replace sample parameters before running the code.
string $callingProjectId,
string $jobTriggerId,
string $string
): void {
// Instantiate a client.
$dlp = new DlpServiceClient();
$content = (new ContentItem())
->setValue($string);
$container = (new Container())
->setFullPath('10.0.0.2:logs1:app1')
->setRelativePath('app1')
->setRootPath('10.0.0.2:logs1')
->setType('logging_sys')
->setVersion('1.2');
$findingDetails = (new HybridFindingDetails())
->setContainerDetails($container)
->setLabels([
'env' => 'prod',
'appointment-bookings-comments' => ''
]);
$hybridItem = (new HybridContentItem())
->setItem($content)
->setFindingDetails($findingDetails);
$parent = "projects/$callingProjectId/locations/global";
$name = "projects/$callingProjectId/locations/global/jobTriggers/" . $jobTriggerId;
$triggerJob = null;
try {
$triggerJob = $dlp->activateJobTrigger($name);
} catch (ApiException $e) {
$result = $dlp->listDlpJobs($parent, ['filter' => 'trigger_name=' . $name]);
foreach ($result as $job) {
$triggerJob = $job;
}
}
$dlp->hybridInspectJobTrigger($name, [
'hybridItem' => $hybridItem,
]);
$numOfAttempts = 10;
do {
printf('Waiting for job to complete' . PHP_EOL);
sleep(10);
$job = $dlp->getDlpJob($triggerJob->getName());
if ($job->getState() != JobState::RUNNING) {
break;
}
$numOfAttempts--;
} while ($numOfAttempts > 0);
// Print finding counts.
printf('Job %s status: %s' . PHP_EOL, $job->getName(), JobState::name($job->getState()));
switch ($job->getState()) {
case JobState::DONE:
$infoTypeStats = $job->getInspectDetails()->getResult()->getInfoTypeStats();
if (count($infoTypeStats) === 0) {
printf('No findings.' . PHP_EOL);
} else {
foreach ($infoTypeStats as $infoTypeStat) {
printf(
' Found %s instance(s) of infoType %s' . PHP_EOL,
$infoTypeStat->getCount(),
$infoTypeStat->getInfoType()->getName()
);
}
}
break;
case JobState::FAILED:
printf('Job %s had errors:' . PHP_EOL, $job->getName());
$errors = $job->getErrors();
foreach ($errors as $error) {
var_dump($error->getDetails());
}
break;
case JobState::PENDING:
printf('Job has not completed. Consider a longer timeout or an asynchronous execution model' . PHP_EOL);
break;
default:
printf('Unexpected job state. Most likely, the job is either running or has not yet started.');
}
}
# [END dlp_inspect_send_data_to_hybrid_job_trigger]
// The following 2 lines are only needed to run the samples.
require_once __DIR__ . '/../../testing/sample_helpers.php';
\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);