Odeslání e-mailu z runbooku am Automation
E-mail můžete odeslat z runbooku pomocí SendGridu pomocí PowerShellu.
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Požadavky
Ověření odesílatele SendGridu Doména nebo jeden odesílatel
Účet Azure Automation s alespoň jednou spravovanou identitou přiřazenou uživatelem. Další informace najdete v tématu Povolení spravovaných identit.
Moduly Az:
Az.AccountsAz.KeyVaulta importované do účtu Automation. Další informace najdete v tématu Import modulů Az.Modul Azure Az PowerShell nainstalovaný na vašem počítači. Informace o instalaci nebo upgradu najdete v tématu Instalace modulu Azure Az PowerShell.
Vytvoření služby Azure Key Vault
Vytvořte zásadu Azure Key Vault a Key Vault přístupu, která umožní přihlašovacím údajům získat a nastavit tajné kódy trezoru klíčů v zadaném trezoru klíčů.
Přihlaste se k Azure interaktivně pomocí rutiny Připojení-AzAccount a postupujte podle pokynů.
# 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>Zadejte odpovídající hodnotu pro následující proměnné a pak spusťte skript.
$resourceGroup = "<Resource group>" $automationAccount = "<Automation account>" $region = "<Region>" $SendGridAPIKey = "<SendGrid API key>" $VaultName = "<A universally unique vault name>" $userAssignedManagedIdentity = "<User-assigned managed identity>"Vytvoření Key Vault a přiřazení oprávnění
# 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, GetDalší způsoby, jak vytvořit Azure Key Vault a uložit tajný kód, najdete v Key Vault rychlých startů.
Přiřazení oprávnění spravovaným identitám
Přiřaďte oprávnění příslušné spravované identitě. Runbook může používat spravovanou identitu přiřazenou systémem účtu Automation nebo spravovanou identitu přiřazenou uživatelem. K dispozici jsou kroky pro přiřazení oprávnění ke každé identitě. Následující postup používá PowerShell. Pokud dáváte přednost používání portálu, podívejte se na stránku Přiřazení rolí Azure pomocí Azure Portal.
Pomocí rutiny PowerShellu New-AzRoleAssignment přiřaďte spravované identitě přiřazené systémem roli.
New-AzRoleAssignment ` -ObjectId $SA_PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Přiřaďte roli spravované identitě přiřazené uživatelem.
New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Pro spravovanou identitu přiřazenou systémem zobrazte a
ClientIdzaznamenate hodnotu pro pozdější použití.$UAMI.ClientId
Vytvoření runbooku pro odeslání e-mailu
Po vytvoření sadě Key Vault a uložení klíče rozhraní API je čas vytvořit runbook, který načte klíč rozhraní API a odešle SendGrid e-mail. Pojďme použít runbook, který používá spravovanou identitu přiřazenou systémem k ověření pomocí Azure k načtení tajného klíče z Azure Key Vault. Budeme volat runbook Send-GridMailMessage. Skript PowerShellu použitý pro různé scénáře můžete upravit.
Přihlaste se k Azure Portal a přejděte ke svému účtu Automation.
Na otevřené stránce účtu Automation v části Automatizace procesů vyberte Runbooky.
Vyberte + Vytvořit runbook.
- Pojmete runbook
Send-GridMailMessage. - V rozevíracím seznamu Typ runbooku vyberte PowerShell.
- Vyberte Vytvořit.

- Pojmete runbook
Runbook se vytvoří a otevře se stránka Upravit powershellový runbook.

Zkopírujte následující příklad PowerShellu na stránku Upravit. Ujistěte
VaultNamese, že parametr určuje název, který jste zvolili pro Key Vault.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 $bodyJsonPokud chcete, aby se runbook spouštěl se spravovanou identitou přiřazenou systémem, ponechte kód tak, jak je. Pokud dáváte přednost použití spravované identity přiřazené uživatelem, pak:
- Na řádku 18 odeberte
$AzureContext = (Connect-AzAccount -Identity).context, - Nahraďte ho za
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, a - Zadejte ID klienta, které jste získali dříve.
- Na řádku 18 odeberte
Vyberte Uložit, Publikovat a po zobrazení výzvy ano.
Pokud chcete ověřit, že se runbook úspěšně spustí, můžete postupovat podle kroků v části Test runbooku nebo Spustit runbook.
Pokud testovací e-mail zpočátku nevidíte, zkontrolujte složky nevyžádané pošty a spamu.
Vyčištění prostředků
Pokud už runbook nepotřebujete, vyberte ho v seznamu runbooků a vyberte Odstranit.
Odstraňte Key Vault rutinou Remove-AzKeyVault.
$VaultName = "<your KeyVault name>" $resourceGroup = "<your ResourceGroup name>" Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
Další kroky
- Pokud chcete odesílat data úloh runbooku do pracovního prostoru služby Log Analytics, podívejte se Azure Automation předávat data úloh Azure Monitor protokolů.
- Pokud chcete monitorovat metriky a protokoly základní úrovně, najdete informace v tématu Použití upozornění k aktivaci Azure Automation Runbooku.