Um Otomasyonu runbook 'tan e-posta gönder
PowerShell kullanarak, SendGrid ile runbook 'tan bir e-posta gönderebilirsiniz.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
SendGrid gönderici doğrulaması. Ya etki alanı ya da tek gönderici
En az bir kullanıcı tarafından atanan yönetilen kimliğe sahip bir Azure Otomasyonu hesabı. Daha fazla bilgi için bkz. yönetilen kimlikleri etkinleştirme.
Az modüller:
Az.AccountsveAz.KeyVaultOtomasyon hesabına içeri aktarılır. Daha fazla bilgi için bkz. Import az modules.Makinenizde yüklü Azure az PowerShell modülü . Yüklemek veya yükseltmek için bkz. Azure az PowerShell modülünü yüklemek.
Azure Key Vault oluşturma
Kimlik bilgisinin belirtilen anahtar kasasında Anahtar Kasası gizli dizilerini almasına ve ayarlamasına izin veren bir Azure Key Vault ve Key Vault erişim ilkesi oluşturun.
Bağlan-azaccount cmdlet 'ini kullanarak Azure 'da etkileşimli olarak oturum açın ve yönergeleri izleyin.
# Sign in to your Azure subscription $sub = Get-AzSubscription -ErrorAction SilentlyContinue if(-not($sub)) { Connect-AzAccount } # If you have multiple subscriptions, set the one to use # Select-AzSubscription -SubscriptionId <SUBSCRIPTIONID>Aşağıdaki değişkenler için uygun bir değer sağlayın ve betiği yürütün.
$resourceGroup = "<Resource group>" $automationAccount = "<Automation account>" $region = "<Region>" $SendGridAPIKey = "<SendGrid API key>" $VaultName = "<A universally unique vault name>" $userAssignedManagedIdentity = "<User-assigned managed identity>"Key Vault oluşturma ve izinleri atama
# Create the new key vault $newKeyVault = New-AzKeyVault ` -VaultName $VaultName ` -ResourceGroupName $resourceGroup ` -Location $region $resourceId = $newKeyVault.ResourceId # Convert the SendGrid API key into a SecureString $Secret = ConvertTo-SecureString -String $SendGridAPIKey ` -AsPlainText -Force Set-AzKeyVaultSecret -VaultName $VaultName ` -Name 'SendGridAPIKey' ` -SecretValue $Secret # Grant Key Vault access to the Automation account's system-assigned managed identity. $SA_PrincipalId = (Get-AzAutomationAccount ` -ResourceGroupName $resourceGroup ` -Name $automationAccount).Identity.PrincipalId Set-AzKeyVaultAccessPolicy ` -VaultName $vaultName ` -ObjectId $SA_PrincipalId ` -PermissionsToSecrets Set, Get # Grant Key Vault access to the user-assigned managed identity. $UAMI = Get-AzUserAssignedIdentity ` -ResourceGroupName $resourceGroup ` -Name $userAssignedManagedIdentity Set-AzKeyVaultAccessPolicy ` -VaultName $vaultName ` -ObjectId $UAMI.PrincipalId ` -PermissionsToSecrets Set, GetAzure Key Vault oluşturup gizli dizi depolamanın diğer yolları için bkz. Key Vault hızlıbaşlangıçlar.
Yönetilen kimliklere izin atama
Uygun yönetilen kimliğeizinler atayın. Runbook, Otomasyon hesabı sistem tarafından atanan yönetilen kimliği veya Kullanıcı tarafından atanan yönetilen kimliği kullanabilir. Her kimliğe izin atamak için adımlar verilmiştir. Aşağıdaki adımlar PowerShell kullanır. Portalın kullanımını tercih ediyorsanız, bkz. Azure Portal kullanarak Azure rolleri atama.
Sistem tarafından atanan yönetilen kimliğe bir rol atamak için New-Azroleatama PowerShell cmdlet 'ini kullanın.
New-AzRoleAssignment ` -ObjectId $SA_PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Kullanıcı tarafından atanan yönetilen kimliğe bir rol atayın.
New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Sistem tarafından atanan yönetilen kimlik için,
ClientIddaha sonra kullanmak üzere değeri gösterin ve kaydedin.$UAMI.ClientId
E-posta göndermek için Runbook 'u oluşturma
Bir Key Vault oluşturup API anahtarınızı depoladıktan sonra SendGrid API anahtarını alan ve bir e-posta gönderen runbook 'u oluşturmak zaman alır. Azure Key Vault 'ten parolayı almak için Azure ile kimlik doğrulaması yapmak üzere sistem tarafından atanan yönetilen kimliği kullanan bir runbook kullanalım. Runbook Send-GridMailMessage iletisini çağıracağız. Farklı senaryolar için kullanılan PowerShell betiğini değiştirebilirsiniz.
Azure Portal oturum açın ve otomasyon hesabınıza gidin.
Açık Otomasyon hesabı sayfasından, Işlem Otomasyonu altında runbook 'lar ' ı seçin.
+ Runbook oluştur' u seçin.
- Runbook 'u adlandırın
Send-GridMailMessage. - Runbook türü aşağı açılan listesinden PowerShell' i seçin.
- Oluştur’u seçin.

- Runbook 'u adlandırın
Runbook oluşturulur ve PowerShell Runbook'unu Düzenle sayfası açılır.

Aşağıdaki PowerShell örneğini düzenleme sayfasına kopyalayın.
VaultNameKey Vault için seçtiğiniz adı belirttiğinden emin olun.Param( [Parameter(Mandatory=$True)] [String] $destEmailAddress, [Parameter(Mandatory=$True)] [String] $fromEmailAddress, [Parameter(Mandatory=$True)] [String] $subject, [Parameter(Mandatory=$True)] [String] $content, [Parameter(Mandatory=$True)] [String] $ResourceGroupName ) # Ensures you do not inherit an AzContext in your runbook Disable-AzContextAutosave -Scope Process # Connect to Azure with system-assigned managed identity $AzureContext = (Connect-AzAccount -Identity).context # set and store context $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext $VaultName = "<Enter your vault name>" $SENDGRID_API_KEY = Get-AzKeyVaultSecret ` -VaultName $VaultName ` -Name "SendGridAPIKey" ` -AsPlainText -DefaultProfile $AzureContext $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", "Bearer " + $SENDGRID_API_KEY) $headers.Add("Content-Type", "application/json") $body = @{ personalizations = @( @{ to = @( @{ email = $destEmailAddress } ) } ) from = @{ email = $fromEmailAddress } subject = $subject content = @( @{ type = "text/plain" value = $content } ) } $bodyJson = $body | ConvertTo-Json -Depth 4 $response = Invoke-RestMethod -Uri https://api.sendgrid.com/v3/mail/send -Method Post -Headers $headers -Body $bodyJsonRunbook 'un sistem tarafından atanan yönetilen kimlikle yürütmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan yönetilen kimlik kullanmayı tercih ediyorsanız:
-
- satır
$AzureContext = (Connect-AzAccount -Identity).context, kaldır
- satır
- İle değiştirin
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).contextve - Daha önce edindiğiniz Istemci KIMLIĞINI girin.
-
İstendiğinde Kaydet, Yayımla ve Evet ' i seçin.
Runbook 'un başarıyla yürütüldüğünü doğrulamak için, runbook 'U test etme veya runbook 'u başlatmabölümündeki adımları izleyebilirsiniz.
Test e-postanızı başlangıçta görmüyorsanız, istenmeyen ve Istenmeyen posta klasörlerinizi denetleyin .
Kaynakları temizleme
Runbook artık gerekli olmadığında, runbook listesinden seçin ve Sil' i seçin.
Remove-Azkeykasası cmdlet 'ini kullanarak Key Vault silin.
$VaultName = "<your KeyVault name>" $resourceGroup = "<your ResourceGroup name>" Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
Sonraki adımlar
- Log Analytics çalışma alanınıza runbook iş verilerini göndermek için bkz. Azure Otomasyonu iş verilerini Azure izleyici günlüklerine iletme.
- Taban düzeyi ölçümlerini ve günlüklerini izlemek için bkz. Azure Otomasyonu runbook 'u tetiklemek için uyarı kullanma.