2016-03-15 73 views
1

我正在尝试设置CloudSearch。起初,我用他们的演示数据集(“IMDB”)试了一下,它的工作都很完美。AWS CloudSearch抛出EndpointConnectionError异常

然后我创建了一个新的域来将我们的数据导出到它。但是,连接到新域的所有尝试都会导致EndpointConnectionError异常。我尝试了使用和不使用索引,上传和获取文档,所有这些都有相同的例外。

一个简单的代码重现该问题:

import boto3 
cloudsearch = boto3.client('cloudsearch') # we store credentials in ~/.aws/ 
endpoint_url = cloudsearch.describe_domains(DomainNames=['DOMAINNAME',])['DomainStatusList'][0]['SearchService']['Endpoint'] 
cloudsearchdomain = boto3.client('cloudsearchdomain', endpoint_url='https://%s' % (endpoint_url,)) 

result = cloudsearchdomain.search(query='anything') 
print result 

此代码是伟大的工作,当DOMAINNAME是与IMDB演示数据集中的领域,但一旦我切换它到新的域名就开始抛出此异常:

botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://search-DOMAINNAME-bcoaescnsbrp2h5ojzyhljdc4u.us-west-2.cloudsearch.amazonaws.com/2013-01-01/documents/batch?format=sdk" 

回答

0

该问题是由缺少访问策略造成的。看起来AWS在您创建演示数据集时自动为域创建策略,而无需通知它。所以对于第一个域访问策略是由AWS创建的,我不知道这一点。