首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValidationException:在继续之前,您必须启用服务关联角色以授予Amazon ES访问您的私有网络的权限

ValidationException:在继续之前,您必须启用服务关联角色以授予Amazon ES访问您的私有网络的权限
EN

Stack Overflow用户
提问于 2017-11-11 02:43:42
回答 5查看 15.5K关注 0票数 32

我正在尝试在AWS上创建VPC控制的弹性搜索服务。问题是,当我运行以下代码时,我一直收到错误消息:“ValidationException:在继续之前,您必须启用一个服务链接角色,以授予Amazon ES访问您的VPC的权限。”

代码语言:javascript
运行
复制
const AWS = require('aws-sdk');
AWS.config.update({region:'<aws-datacenter>'});
const accessPolicies = {
  Statement: [{
    Effect: "Allow",
    Principal: {
      AWS: "*"
    },
    Action: "es:*",
    Resource: "arn:aws:es:<dc>:<accountid>:domain/<domain-name/*"
  }]
};
const params = {
  DomainName: '<domain>',
  /* required */
  AccessPolicies: JSON.stringify(accessPolicies),
  AdvancedOptions: {
    EBSEnabled: "true",
    VolumeType: "io1",
    VolumeSize: "100",
    Iops: "1000"
  },
  EBSOptions: {
    EBSEnabled: true,
    Iops: 1000,
    VolumeSize: 100,
    VolumeType: "io1"
  },
  ElasticsearchClusterConfig: {
    DedicatedMasterCount: 3,
    DedicatedMasterEnabled: true,
    DedicatedMasterType: "m4.large.elasticsearch",
    InstanceCount: 2,
    InstanceType: 'm4.xlarge.elasticsearch',
    ZoneAwarenessEnabled: true
  },
  ElasticsearchVersion: '5.5',
  SnapshotOptions: {
    AutomatedSnapshotStartHour: 3
  },
  VPCOptions: {
    SubnetIds: [
      '<redacted>',
      '<redacted>'
    ],
    SecurityGroupIds: [
      '<redacted>'
    ]
  }
};

const es = new AWS.ES();
es.createElasticsearchDomain(params, function (err, data) {
  if (err) {
    console.log(err, err.stack); // an error occurred
  } else {
    console.log(JSON.stringify(data, null, 4)); // successful response
  }
});

问题是我收到这个错误: ValidationException:在继续之前,您必须启用一个服务链接角色,以授予Amazon ES访问您的VPC的权限。我似乎不知道如何为elastic search服务创建这个与服务相关的角色。在aws.amazon.com IAM控制台中,我无法为角色选择该服务。我相信它应该是自动创建的。

有没有人遇到过这个问题,或者知道修复的方法?

EN

回答 5

Stack Overflow用户

发布于 2018-04-13 11:09:10

可以使用AWS CLI创建与服务相关的角色。

代码语言:javascript
运行
复制
aws iam create-service-linked-role --aws-service-name es.amazonaws.com
票数 60
EN

Stack Overflow用户

发布于 2018-10-16 11:09:50

您现在可以在CloudFormation模板中创建一个与服务相关的角色,类似于由@htaccess提供的Terraform答案。有关详细信息,请参阅the documentation for the CloudFormation syntax for Service-Linked Roles

代码语言:javascript
运行
复制
YourRoleNameHere:
  Type: 'AWS::IAM::ServiceLinkedRole'
  Properties:
    AWSServiceName: es.amazonaws.com
    Description: 'Role for ES to access resources in my VPC'
票数 22
EN

Stack Overflow用户

发布于 2017-11-29 16:51:03

当前不支持使用VPCaws-sdk/cloudformation创建elasticsearch域。elasticsearch服务需要特殊的服务链接角色才能在指定的VPC中创建网络接口。这目前可以使用console / cli(@Oscar Barrett的答案如下)。

但是,有一种解决方法可以使其正常工作,如下所述:

  • 使用console.
  • This创建具有VPC访问权限的测试elasticsearch域将创建名为AWSServiceRoleForAmazonElasticsearchService的服务链接角色注意:您不能手动或通过console
  • Once创建具有指定名称的角色此角色已创建,请使用aws-sdkcloudformation通过VPC.
  • You创建elasticsearch域以后可以删除测试elasticsearch域<代码>H225<代码>F226

更新:更正确的创建服务角色的方法在@Oscar Barrett的回答中描述。我正在考虑删除我的答案;但关于实际问题的其他事实仍然更相关,因此我的答案保留在这里。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47229247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档