Otomasyon runbook’undan e-posta gönderme
PowerShell kullanarak SendGrid ile runbook'tan e-posta gönderebilirsiniz.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
SendGrid gönderen doğrulaması. Etki Alanı veya Tek Gönderen
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ülleri:
Az.Accounts
veAz.KeyVault
Otomasyon hesabına aktarıldı. Daha fazla bilgi için bkz. Az modüllerini içe aktarma.Makinenizde yüklü Olan Azure Az PowerShell modülü. Yüklemek veya yükseltmek için bkz . Azure Az PowerShell modülünü yükleme.
Azure Key Vault oluşturma
Kimlik bilgilerinin belirtilen anahtar kasasında anahtar kasası gizli dizilerini almasına ve ayarlamasına olanak tanıyan bir Azure Key Vault ve Key Vault erişim ilkesi oluşturun.
Connect-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ür.
$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, Get
Azure Key Vault oluşturmanın ve gizli dizi depolamanın diğer yolları için bkz . Key Vault hızlı başlangıçları.
Yönetilen kimliklere izinler atama
uygun yönetilen kimliğe izinler 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 sağlanır. Aşağıdaki adımlarda PowerShell kullanılır. Portalı kullanmayı tercih ediyorsanız bkz . Azure portalını kullanarak Azure rolleri atama.
Sistem tarafından atanan yönetilen kimliğe rol atamak için New-AzRoleAssignment PowerShell cmdlet'ini kullanın.
New-AzRoleAssignment ` -ObjectId $SA_PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
Kullanıcı tarafından atanan yönetilen kimliğe rol atayın.
New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
Sistem tarafından atanan yönetilen kimlik için değeri daha sonra kullanmak üzere gösterin
ClientId
ve kaydedin.$UAMI.ClientId
E-posta göndermek için runbook oluşturma
Bir Key Vault oluşturup API anahtarınızı SendGrid
depoladıktan sonra, API anahtarını alan ve e-posta gönderen runbook'u oluşturmanın zamanı geldi. Azure Key Vault'tan gizli diziyi almak üzere Azure'da kimlik doğrulaması yapmak için sistem tarafından atanan yönetilen kimliği kullanan bir runbook kullanalım. Runbook Send-GridMailMessage'ı çağıracağız. Farklı senaryolar için kullanılan PowerShell betiğini değiştirebilirsiniz.
Azure portalında oturum açın ve Otomasyon hesabınıza gidin.
Açık Otomasyon hesabı sayfanızdaki İşlem Otomasyonu altında Runbook'lar'ı seçin
+ Runbook oluştur'u seçin.
- Runbook'u
Send-GridMailMessage
olarak adlandırın. - Runbook türü açılan listesinden PowerShell'i seçin.
- Oluştur'u belirleyin.
- Runbook'u
Runbook oluşturulur ve PowerShell Runbook'unu Düzenle sayfası açılır.
Aşağıdaki PowerShell örneğini Düzenle sayfasına kopyalayın. anahtarının
VaultName
Key Vault'unuz 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 $bodyJson
Runbook'un sistem tarafından atanan yönetilen kimlikle yürütülmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan bir yönetilen kimlik kullanmayı tercih ediyorsanız:
- 18. satırdan öğesini kaldırın
$AzureContext = (Connect-AzAccount -Identity).context
. - değerini ve ile
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
değiştirin - Daha önce edindiğiniz İstemci Kimliğini girin.
- 18. satırdan öğesini kaldırın
İstendiğinde Kaydet, Yayımla ve ardından Evet'i seçin.
Runbook'un başarıyla yürütüldüğünü doğrulamak için Runbook'u test etme veya Runbook başlatma altındaki adımları izleyebilirsiniz.
Başlangıçta test e-postanızı görmüyorsanız Gereksiz ve İstenmeyen Posta klasörlerinizi denetleyin.
Kaynakları temizleme
Runbook artık gerekli olmadığında runbook listesinden bunu seçin ve Sil'i seçin.
Remove-AzKeyVault cmdlet'ini kullanarak Key Vault'ı silin.
$VaultName = "<your KeyVault name>" $resourceGroup = "<your ResourceGroup name>" Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
Sonraki adımlar
- Runbook iş verilerini Log Analytics çalışma alanınıza göndermek için bkz. Azure Otomasyonu iş verilerini Azure İzleyici günlüklerine iletme.
- Temel düzey ölçümleri ve günlükleri izlemek için bkz. Azure Otomasyonu runbook'u tetikleyen bir uyarı kullanma.