アラート ポリシー全体で通知チャンネルを置き換える方法を示します。
もっと見る
このコードサンプルを含む詳細なドキュメントについては、以下をご覧ください。
コードサンプル
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
static void ReplaceChannels(string projectId, string alertPolicyId,
IEnumerable<string> channelIds)
{
var alertClient = AlertPolicyServiceClient.Create();
var policy = new AlertPolicy()
{
Name = new AlertPolicyName(projectId, alertPolicyId).ToString()
};
foreach (string channelId in channelIds)
{
policy.NotificationChannels.Add(
new NotificationChannelName(projectId, channelId)
.ToString());
}
var response = alertClient.UpdateAlertPolicy(
new FieldMask { Paths = { "notification_channels" } }, policy);
Console.WriteLine("Updated {0}.", response.Name);
}
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
// replaceChannels replaces the notification channels in the alert policy
// with channelIDs.
func replaceChannels(w io.Writer, projectID, alertPolicyID string, channelIDs []string) error {
ctx := context.Background()
client, err := monitoring.NewAlertPolicyClient(ctx)
if err != nil {
return err
}
defer client.Close()
policy := &monitoringpb.AlertPolicy{
Name: "projects/" + projectID + "/alertPolicies/" + alertPolicyID,
}
for _, c := range channelIDs {
c = "projects/" + projectID + "/notificationChannels/" + c
policy.NotificationChannels = append(policy.NotificationChannels, c)
}
req := &monitoringpb.UpdateAlertPolicyRequest{
AlertPolicy: policy,
UpdateMask: &fieldmask.FieldMask{
Paths: []string{"notification_channels"},
},
}
if _, err := client.UpdateAlertPolicy(ctx, req); err != nil {
return fmt.Errorf("UpdateAlertPolicy: %w", err)
}
fmt.Fprintf(w, "Successfully replaced channels.")
return nil
}
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
private static void replaceChannels(String projectId, String alertPolicyId, String[] channelIds)
throws IOException {
AlertPolicy.Builder policyBuilder =
AlertPolicy.newBuilder().setName(AlertPolicyName.of(projectId, alertPolicyId).toString());
for (String channelId : channelIds) {
policyBuilder.addNotificationChannels(
NotificationChannelName.of(projectId, channelId).toString());
}
try (AlertPolicyServiceClient client = AlertPolicyServiceClient.create()) {
AlertPolicy result =
client.updateAlertPolicy(
FieldMask.newBuilder().addPaths("notification_channels").build(),
policyBuilder.build());
System.out.println(String.format("Updated %s", result.getName()));
}
}
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');
// Creates clients
const alertClient = new monitoring.AlertPolicyServiceClient();
const notificationClient = new monitoring.NotificationChannelServiceClient();
async function replaceChannels() {
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'YOUR_PROJECT_ID';
// const alertPolicyId = '123456789012314';
// const channelIds = [
// 'channel-1',
// 'channel-2',
// 'channel-3',
// ];
const notificationChannels = channelIds.map(id =>
notificationClient.projectNotificationChannelPath(projectId, id)
);
for (const channel of notificationChannels) {
const updateChannelRequest = {
updateMask: {
paths: ['enabled'],
},
notificationChannel: {
name: channel,
enabled: {
value: true,
},
},
};
try {
await notificationClient.updateNotificationChannel(
updateChannelRequest
);
} catch (err) {
const createChannelRequest = {
notificationChannel: {
name: channel,
notificationChannel: {
type: 'email',
},
},
};
const newChannel =
await notificationClient.createNotificationChannel(
createChannelRequest
);
notificationChannels.push(newChannel);
}
}
const updateAlertPolicyRequest = {
updateMask: {
paths: ['notification_channels'],
},
alertPolicy: {
name: alertClient.projectAlertPolicyPath(projectId, alertPolicyId),
notificationChannels: notificationChannels,
},
};
const [alertPolicy] = await alertClient.updateAlertPolicy(
updateAlertPolicyRequest
);
console.log(`Updated ${alertPolicy.name}.`);
}
replaceChannels();
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
use Google\Cloud\Monitoring\V3\AlertPolicy;
use Google\Cloud\Monitoring\V3\Client\AlertPolicyServiceClient;
use Google\Cloud\Monitoring\V3\Client\NotificationChannelServiceClient;
use Google\Cloud\Monitoring\V3\UpdateAlertPolicyRequest;
use Google\Protobuf\FieldMask;
/**
* @param string $projectId Your project ID
* @param string $alertPolicyId Your alert policy id ID
* @param string[] $channelIds array of channel IDs
*/
function alert_replace_channels(string $projectId, string $alertPolicyId, array $channelIds): void
{
$alertClient = new AlertPolicyServiceClient([
'projectId' => $projectId,
]);
$channelClient = new NotificationChannelServiceClient([
'projectId' => $projectId,
]);
$policy = new AlertPolicy();
$policy->setName($alertClient->alertPolicyName($projectId, $alertPolicyId));
$newChannels = [];
foreach ($channelIds as $channelId) {
$newChannels[] = $channelClient->notificationChannelName($projectId, $channelId);
}
$policy->setNotificationChannels($newChannels);
$mask = new FieldMask();
$mask->setPaths(['notification_channels']);
$updateAlertPolicyRequest = (new UpdateAlertPolicyRequest())
->setAlertPolicy($policy)
->setUpdateMask($mask);
$updatedPolicy = $alertClient->updateAlertPolicy($updateAlertPolicyRequest);
printf('Updated %s' . PHP_EOL, $updatedPolicy->getName());
}
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
def replace_notification_channels(project_name, alert_policy_id, channel_ids):
"""Replace notification channel of an alert.
Arguments:
project_name (str): The Google Cloud Project to use. The project name
must be in the format - 'projects/<PROJECT_NAME>'.
alert_policy_id (str): The ID of the alert policy whose notification
channels are to be replaced.
channel_ids (str): ID of notification channel to be added as channel
for the given alert policy.
"""
_, project_id = project_name.split("/")
alert_client = monitoring_v3.AlertPolicyServiceClient()
channel_client = monitoring_v3.NotificationChannelServiceClient()
policy = monitoring_v3.AlertPolicy()
policy.name = alert_client.alert_policy_path(project_id, alert_policy_id)
for channel_id in channel_ids:
policy.notification_channels.append(
channel_client.notification_channel_path(project_id, channel_id)
)
mask = field_mask.FieldMask()
mask.paths.append("notification_channels")
updated_policy = alert_client.update_alert_policy(
alert_policy=policy, update_mask=mask
)
print("Updated", updated_policy.name)
次のステップ
他の Google Cloud プロダクトに関連するコードサンプルの検索およびフィルタ検索を行うには、Google Cloud のサンプルをご覧ください。