使用 AWS Elasticsearch Kibana 与 Cognito 进行身份验证和授权时,如果发生“缺失角色”错误,可能是由于缺少必要的 IAM 角色或策略所致。以下是解决此问题的一些可能方法:
创建 Elasticsearch Domain 时使用正确的 IAM 角色:
为 Elasticsearch Domain 添加适当的策略:
配置 Cognito 用户池和身份池:
下面是一个示例,展示了如何在创建 Elasticsearch Domain 时指定 IAM 角色:
aws es create-elasticsearch-domain \
--domain-name example-domain \
--elasticsearch-version 7.10 \
--elasticsearch-cluster-config InstanceType=t2.small.elasticsearch,InstanceCount=1 \
--ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=10 \
--access-policies '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/CognitoRole"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:123456789012:domain/example-domain/*"
}
]
}'
在上面的示例中,CognitoRole
是一个具有允许访问 Elasticsearch 的权限的 IAM 角色。
请根据您的具体需求和环境进行适当的调整,并确保为 Elasticsearch Domain 和 Cognito 配置了正确的 IAM 角色和策略。