💡
amazon-s3-datalake-handson躓いた箇所
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"
]
}
}
}
]
}
Discussion