You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置IP访问策略实现AWS Elastic Beanstalk访问OpenSearch的Elasticsearch

访问策略不生效的原因

你当前配置的全IP放开规则未生效,通常是两个原因导致:

  • 若你的OpenSearch域为VPC内部部署模式,aws:SourceIp条件仅匹配公网IP,VPC内网IP访问不会触发该规则,即使配置*也无法放行
  • 当Principal设为AWS:*同时搭配aws:SourceIp: *时,OpenSearch会隐式拒绝未携带AWS签名的请求,并非真正允许匿名访问

配置Elastic Beanstalk访问OpenSearch的方案

方案1:基于IAM角色授权(生产环境首选,无需管理IP)

这是AWS官方推荐的安全访问方案,不受IP变动影响:

  • 进入IAM控制台,找到你的Elastic Beanstalk环境对应的EC2实例角色(默认命名为aws-elasticbeanstalk-ec2-role,也可在Beanstalk环境配置的「安全」分类下查看角色名)
  • 为该角色添加OpenSearch访问权限,示例策略如下:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "es:*",
      "Resource": "arn:aws:es:ap-southeast-2:*****:domain/mydomain/*"
    }
  ]
}
  • 修改OpenSearch访问策略,替换原有Statement为以下内容,无需配置IP条件:
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "<替换为你的Beanstalk EC2实例角色的ARN>"
  },
  "Action": "es:*",
  "Resource": "arn:aws:es:ap-southeast-2:*****:domain/mydomain/*"
}
  • 注意应用调用OpenSearch接口时,需要使用AWS签名版本4对请求签名,各语言官方AWS SDK均内置该能力

方案2:固定公网出口IP(适合IP白名单场景)

如果必须使用IP白名单方式访问,不要直接绑定EC2实例动态IP(实例重建、扩容时IP会变更):

  • 将Elastic Beanstalk环境部署到私有子网,配置NAT网关并绑定固定弹性公网IP(EIP),所有Beanstalk实例的公网请求都会通过该NAT网关出口,源IP固定为绑定的EIP
  • 将该EIP添加到OpenSearch访问策略的aws:SourceIp列表中即可

方案3:临时获取实例公网IP(仅测试使用)

如果仅临时测试验证,可以直接获取当前运行的Beanstalk实例IP:

  • 进入EC2控制台,通过标签elasticbeanstalk:environment-name = <你的Beanstalk环境名>筛选出对应的EC2实例
  • 复制实例的公网IP,添加到OpenSearch的IP白名单即可,该方式仅适用于临时测试,生产环境不可用

内容的提问来源于stack exchange,提问作者jsindos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:54:05