Amazon Simple Email Service (Amazon SES) を使用して E メールを送信しようとしたところ、"Unauthorized" というエラーが表示されました。
解決策
IAM アクセス許可を確認する
AWS Identity and Access Management (IAM) の ID に、E メールを送信するための正しいアクセス許可があることを確認するには、次の手順を実行します。
-
IAM コンソールを開きます。
-
E メールの送信に使用する IAM ユーザーまたはロールを選択します。
-
E メールの送信に使用する IAM ID 名を選択します。
-
IAM ID の [アクセス許可] タブで各ポリシーを展開し、その JSON ポリシードキュメントを表示します。
-
Amazon SES へのアクセスに関連するポリシーを検索します。次に、ses:SendEmail または ses:SendRawEmail アクションのアクセス許可があることを確認します。<br id=hardline_break/>
次の IAM ポリシーの例では、IAM ID に E メールの送信を許可しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
注: IAM ポリシーが存在しない場合は、IAM ポリシーを作成して、前述のポリシーの例を使用して E メールを送信するアクセス許可を付与します。
アクセスをブロックする拒否ステートメントがないか確認する
IAM ポリシーで、E メール送信へのアクセスを拒否する可能性のある拒否ステートメントがないか確認してください。
拒否ステートメントがある場合は、アクセスを制限する以下の条件を削除または変更します。
- ses:Recipients
- ses:FromAddress
- ses:FromDisplayName
- ses:FeedbackAddress
- aws:CurrentTime
- aws:EpochTime
- aws:SecureTransport
- aws:SourceIp
- aws:UserAgent
IAM アクセス許可の境界が Amazon SES へのアクセスを許可していることを確認する
Amazon SES にアクセスしようとした IAM ID に設定されている IAM アクセス許可の境界を確認します。IAM アクセス許可の境界が Amazon SES へのアクセスを許可していることを確認します。詳細については、「アクセス許可の境界を使用した他のユーザーへの責任の委任」を参照してください。
AWS Organizations の SCP が Amazon SES へのアクセスを拒否していないことを確認する
AWS Organizations を使用している場合は、ses:SendEmail および ses:SendRawEmail アクションを明示的に拒否するステートメントがないか、サービスコントロールポリシー (SCP) を確認してください。組織のセキュリティポリシーに従って Amazon SES アクションを明示的に拒否する SCP を削除します。
次のポリシーの例では、すべての Amazon SES アクションへのアクセスを拒否します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "ses:*",
"Resource": "*"
}
]
}
Amazon SES の送信者認可ポリシーが委任送信者にアクセス許可を付与していることを確認する
所有している ID から他のユーザーへの E メール送信を許可する場合は、認可ポリシーに正しいアクセス許可があることを確認してください。送信者が、本人確認に使用した AWS リージョンと同じ Amazon SES エンドポイントを使用していることを確認します。認証されていないアドレスに E メールを送信する前に、代理送信者の AWS アカウントをサンドボックスから削除する必要があります。ポリシーを表示、編集、削除するには、「Managing your identity authorization policies in Amazon SES」を参照してください。