Leo Yeh's Blog

SAS Viya (113)

教學目標

初步了解 SAS Viya 平台中分送報表相關設定的基本概念。

重點概念

首先目前有許多企業客戶期望透過批次處理和 REST API 的方式來操作 SAS Visual Analytics 分析報表,同時用於自動化建立、多國語系、權限控管和報表分派,像是為不同部門自動化建立分析報表的任務,並且針對不同國家進行多國語系的呈現,以及針對不同部門的相關人員進行權限控管,更重要的是能夠每日重複安排時間自動分送分析報表至特定人員的電子郵件中,以及透過分送報告我們能夠在非高峰時段產生分析報表,所以我們能夠使用 SAS Visual Analytics 分送報告,其能夠自動完成向特定報表使用者提供最新的報表內容,並且能夠按照一次或每隔一段時間分送報告,像是每天,每週,每月或每年多次,至於要如何做到,請參考官方論文

接著我們也能夠手動和自動分送報表,僅需要開啟分析報表之後,在編輯模式下點選畫面左上方的「功能表」按鈕,按下「分送報表」選項,按下「新增」按鈕之後,就能夠設定「分送名稱」、「收件者」、「電子郵件主旨」、「電子郵件訊息」和「排程」等相關設定,並且當設定完成之後,按下「播放」就能夠立即分送報表,當然若是我們有進行排程設定,則就會在指定的特定時間自動收到分送報表的信件,請參考官方文件。但是在透過電子郵件分送報表之前,我們則需要先設定 SMTP 寄信伺服器,預設 SAS Viya 平台不會提供 SMTP 寄信伺服器,此時若是沒有 SMTP 寄信伺服器,則建議採用 Amazon SES 服務,僅需按照官方文件中的教學步驟就能夠簡單操作立即取得 SMTP 登入的使用者名稱和密碼,並且透過官方網站所提供各種程式設計語言的程式碼範例,以利測試使用透過 Amazon SES 服務中的 SMTP 伺服器來傳送電子郵件,個人建議使用 Python 進行測試,請參考官方文件。此外若出現以下錯誤訊息,則代表 Amazon SES 要求我們驗證電子郵件,以確認實際擁有,以防止未經授權的使用,請參考官方文件,大約一個工作天就會收到驗證的確認信,當確認完成之後,我們就能夠立即透過 Amazon SES 服務寄信。

1
Error:  (554, b'Message rejected: Email address is not verified. The following identities failed the check in region US-EAST-1: leoyeh.me@gmail.com, Sender Name <leoyeh.me@gmail.com>')

再來當我們完成確認能夠正常透過 Amazon SES 服務寄信之後,再來我們就需要設定 SAS Viya 平台中的電子郵件的服務,主要開啟 SAS Environment Manager 管理環境,點選「瀏覽列」中的「組態」,選取「所有的服務」,然後搜尋「Mail Service」之後,在「sas.mail」的區塊按下「編輯」鈕之後,進行以下設定,請注意以下設定僅供參考,實際需要根據不同區域的 Amazon SES 服務和寄信者進行設定,請注意 port 需要改為 587,而非 25,以及 username 和 password 不是 AWS 的使用者帳號和密碼,而是建立在 IAM 中的使用者認證憑證所提供的使用者帳號和密碼,當確認無誤之後,請按下「儲存」按鈕,並且登入至伺服器執行「sudo /etc/init.d/sas-viya-mail-default restart」指令重新啟動 Mail Service 的微服務,當重新啟動完成之後設定值才會生效。

設定名稱 設定值
fromAddress leoyeh.me@gmail.com
host email-smtp.us-east-1.amazonaws.com
port 587
username AKIAXETHP6TBMCOMN3RV
password xxxxxxxxxxxxxxxxxxxxxxx

至於所謂電子郵件寄伺服器主要使用 TCP 587 連接埠將電子郵件傳送給郵件伺服器,而大多數電子郵件提供商仍允許在傳統 TCP 25 連接埠傳送電子郵件,事實上 SMTP 當時設計時主要是用於伺服器和伺服器之間的資料交換,並且由於 TCP 25 連接埠目前已經經常被作為惡意攻擊的目標,所以很多服務商皆禁止使用 TCP 25 連接埠,而 TCP 587 連接埠的設計主要就是用於使用者和伺服器互動,並且在發送電子郵件時,必須連接至身份驗證的郵件伺服器 (Message Submission Agent,MSA) 進行自動登入認証,所以由於安全的原因目前大部分的 SMTP 設定皆選擇 TCP 587 連接埠,而不是 TCP 25 連接埠,至於 TCP 465 連接埠則是在通訊之後自動啟動 TLS/SSL 加密連線的 SMTP,即 SMTPS,至於 TCP 587 連接埠則是透過 STARTTLS 啟動安全連線。

最後若還是無法正常發送分析報表,則請切換至「/var/log/sas/viya/mail/default/」目錄查看記錄檔,若是發現以下錯誤訊息,則代表「fyi@nowhere.com」電子郵件沒有被 Amazon SES 進行驗證,此時我們就必須開啟 SAS Environment Manager 管理環境,點選「瀏覽列」中的「組態」,選取「定義」,然後搜尋「sas.reportdistribution.mail」之後,並且編輯「defaultFromAddress」設定值為已經被 Amazon SES 所進行驗證的電子郵件,預設值為「fyi@nowhere.com」,當確認無誤之後,請按下「儲存」按鈕,並且登入至伺服器執行「sudo /etc/init.d/sas-viya-reportdistribution-default restart」指令重新啟動 Report Distribution Service 的微服務,當重新啟動完成之後設定值才會生效,此時 SAS Viya 平台就能夠透過 Amazon SES 分送分析報表,至於下一步則是更進一步能夠透過 SAS Viya 平台所提供的 REST API 整合自動化和批次處理執行所有相關視覺化分析報表的日常任務,其中包括報表建立、多國語系、權限控管和報表分派等機制。

1
2019-08-14 15:25:35.567 ERROR 12889 --- [o-auto-1-exec-2] com.sas.mail.MailController              : sas.reportDistribution [fc270aeb0eaa9edb] [controller.mail.failure.fmt.log] Mail Failure, Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 554 Message rejected: Email address is not verified. The following identities failed the check in region US-EAST-1: fyi@nowhere.com...

相關資源

⬅️ Go back