1
DynamoDB 데이터베이스에 대한 작업을 처리하는 클래스를 만들고 있습니다. 하나의 테이블 만 가진 단순한 데이터베이스가 될 것입니다.raise NoRegionError() - 영역을 지정해야합니다.
스크립트를 python dynamo.db
으로 실행할 때 NoRegionError()
이 표시됩니다. 그러나 방금 jupyter notebook
또는 qtconsole
환경에서 클래스를 호출하거나 스크립트의 각 명령을 파이썬 셸에서 별도로 실행하면 오류가 발생하지 않습니다.
내 자격 증명을 로컬 .aws
폴더에 추가 했으므로이 오류가 발생하는 이유와 디버깅 방법을 잘 모릅니다. 여기에 내가 일하고 있어요 클래스입니다 :
import boto3
class Dynamo(object):
def __init__(self, **kwargs):
self._db_api = 'dynamodb'
self._session = None
self._client = None
self._database = None
self._region_name = kwargs.get('region_name', 'us-west-2')
self._endpoint_url = kwargs.get('endpoint_url', 'http://localhost:8000')
self.cached_table = {}
self.table = None
def connect(self):
self._session = boto3.Session()
print(self._region_name)
print(self._db_api)
if self._session:
self._database = self._session.resource(self._db_api)
def main():
dynamo = Dynamo()
dynamo.connect()
return dynamo
if __name__ == '__main__':
dynodb = main()
는 그리고 이것은 내가지고있어 오류입니다 :
Traceback (most recent call last):
File "test.py", line 39, in <module>
dynodb = main()
File "test.py", line 34, in main
dynamo.connect()
File "test.py", line 28, in connect
self._database = self._session.resource(self._db_api)
File "python2.7/site-packages/boto3/session.py", line 389, in resource
aws_session_token=aws_session_token, config=config)
File "python2.7/site-packages/boto3/session.py", line 263, in client
aws_session_token=aws_session_token, config=config)
File "python2.7/site-packages/botocore/session.py", line 824, in create_client
client_config=config, api_version=api_version)
File "python2.7/site-packages/botocore/client.py", line 69, in create_client
verify, credentials, scoped_config, client_config, endpoint_bridge)
File "python2.7/site-packages/botocore/client.py", line 222, in _get_client_args
verify, credentials, scoped_config, client_config, endpoint_bridge)
File "python2.7/site-packages/botocore/args.py", line 44, in get_client_args
endpoint_url, is_secure, scoped_config)
File "python2.7/site-packages/botocore/args.py", line 101, in compute_client_args
service_name, region_name, endpoint_url, is_secure)
File "python2.7/site-packages/botocore/client.py", line 295, in resolve
service_name, region_name)
File "python2.7/site-packages/botocore/regions.py", line 122, in construct_endpoint
partition, service_name, region_name)
File "python2.7/site-packages/botocore/regions.py", line 135, in _endpoint_for_partition
raise NoRegionError()
botocore.exceptions.NoRegionError: You must specify a region.
사실 그렇지만, ipython 노트북을 통해 호출 할 때처럼 코드에서 찾지 못한 경우 boto3 로컬 설정을 확인해서는 안됩니까? 나는 이것을 다른 곳에서 설정할 수 있기를 원했고 그 질문에서 설명한 것처럼 지역과 자격 증명을'.aws' 폴더에 넣었습니다. 나는 그 질문을 왜 boto3가 그 폴더를 보지 않는지 짐작한다. – oxtay