當我從 Amazon Simple Email Service (Amazon SES) 中的 AWS 身分和存取管理 (IAM) 使用者傳送電子郵件時,我收到 554 "Access denied" (拒絕存取) 錯誤訊息。
簡短描述
您從 Amazon SES 中的 IAM 使用者傳送電子郵件,並且收到下列錯誤訊息:
554 Access denied: User arn:aws:iam::123456789012:user/iam-user-name' is not authorized to perform
ses:SendRawEmail' on resource `arn:aws:ses:eu-west-1:123456789012:identity/example.com'
若要疑難排解 Amazon SES 發生的 554 "Access denied" (拒絕存取) 錯誤,請檢查下列各項:
- 使用者擁有正確的政策和傳送電子郵件的存取權限。
- 傳送授權政策並未附加至電子郵件地址或網域。
- IAM 政策中的 Resource (資源) 元素設定為電子郵件地址身分的 ARN。
- AWS Organizations 服務控制政策 (SCP) 並未附加至使用者。
解決方案
1. 開啟 IAM 主控台。
2. 在 Policy summary (政策摘要)下,檢查下列項目:
IAM 使用者擁有傳送電子郵件的正確許可。例如,為了允許使用者執行電子郵件傳送 API,您必須包括相關動作 (ses:SendEmail、ses:SendRawEmail、ses:SendTemplatedEmail、ses:SendBulkTemplatedEmail)。
IAM 使用者有權從此身分傳送電子郵件。如果您將 IAM 使用者政策的 Resource (資源) 元素設定為 *,則使用者有權從所有身分傳送電子郵件。如果 Resource (資源) 元素受到限制,請檢查使用者是否有兩個政策,或是政策中有兩個陳述式。第一個政策或陳述式的 Action element (動作元素) 必須設定為一或多個非電子郵件傳送 API。Resource (資源) 元素必須設定為 *。第二個政策或陳述式的 Action (動作) 元素必須設定為一或多個電子郵件傳送 API。Resource (資源) 元素必須設定為該身分的 ARN。
以下是包含兩個陳述式的 IAM 政策範例。此政策允許使用者執行 GetSendStatistics (取得傳送統計資料) 和 GetSendQuota (取得傳送配額) 非電子郵件傳送 API,並限制 SendEmail (傳送電子郵件) 和 SendRawEmail (傳送原始電子郵件) 電子郵件傳送 API 只能從網域傳送。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:GetSendStatistics",
"ses:GetSendQuota"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "arn:aws:ses:eu-west-1:123456789012:identity/example.com"
}
]
}
3. 檢查電子郵件地址或網域是否附加了傳送授權政策,以阻止使用者傳送電子郵件。
4. 如果您將電子郵件地址身分與網域身分分開驗證,則必須將 Resource (資源) 元素設定為電子郵件地址身分的 ARN。如需詳細資訊,請參閱在 Amazon SES 中建立和驗證身分。
5. 檢查是否有使用者繼承的組織 SCP 政策。SCP 可以防止使用者傳送電子郵件。例如,使用者繼承 Deny (拒絕) 陳述式以使用 Amazon SES,或者使用者只能存取某些 AWS 或 Amazon SES 區域。
注意:Amazon SES 簡易郵件傳輸通訊協定 (SMTP) 憑證對於每個 AWS 帳戶而言都是唯一的,並且專屬於一個區域。
相關資訊
Amazon SES 中的身分和存取管理
Amazon SES API 參考