💡

amazon-s3-datalake-handson躓いた箇所

2023/09/03に公開

JP-Contents HubのAnalyticsハンズオンの1つである、amazon-s3-datalake-handsonをやってみて躓いた箇所と対処内容を共有する。

Lab3:アプリケーションログのリアルタイム可視化とアラーム

エラーメッセージ

"errorMessage": "{\"statusCode\":403,\"responseBody\":{\"Message\":\"User: arn:aws:sts::365298517117:assumed-role/handson-minilake-role/LogsToElasticsearch_handson-minilake2 is not authorized to perform: es:ESHttpPost with an explicit deny in a resource-based policy\"}}"

原因と対処内容

リソースベースのポリシーで暗黙的な拒否をされているということ[1]なので、OpenSearch側のアクセス制御機構を疑ってみる。
このハンズオンの手順ではOpenSearch DashboardsのBackend rolesにLambdaの実行ロールを設定することは明示されていたが、
Amazon OpenSearch Dash Board上で編集できるアクセスポリシーのPrincipalにもIAM Roleを追加してあげる必要があるのではないかと仮説を立てて、以下の通りアクセスポリシーを修正したところ、OpenSearchへの連携に成功した。("arn:aws:iam::XXXXXXXXXXXX:role/handson-minilake-role",が追加箇所)

{
 "Version": "2012-10-17",
 "Statement": [
   {
     "Effect": "Allow",
     "Principal": {
       "AWS": [
         "arn:aws:iam::XXXXXXXXXXXX:role/handson-minilake-role",
         "arn:aws:iam::XXXXXXXXXXXX:root"
       ]
     },
     "Action": "es:*",
     "Resource": "arn:aws:es:ap-northeast-1:XXXXXXXXXXXX:domain/handson-minilake2/*"
   },
   {
     "Effect": "Allow",
     "Principal": {
       "AWS": "*"
     },
     "Action": "es:*",
     "Resource": "arn:aws:es:ap-northeast-1:XXXXXXXXXXXX:domain/handson-minilake2/*",
     "Condition": {
       "IpAddress": {
         "aws:SourceIp": [
           "X.X.X.X",
           "X.X.X.X"
         ]
       }
     }
   }
 ]
}
脚注
  1. https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/troubleshoot_access-denied.html ↩︎

Discussion