1
DynamoDBデータベースの操作を処理するクラスを作成しています。 1つのテーブルだけを持つシンプルなデータベースになります。raise NoRegionError() - リージョンを指定する必要があります
python dynamo.db
としてスクリプトを実行すると、NoRegionError()
が表示されます。しかし、私はちょうどjupyter notebook
またはqtconsole
環境でクラスを呼び出すか、Pythonシェルで別々にスクリプトの各コマンドを実行すると、私はそのようなエラーはありません。
ローカルの.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'フォルダに入れました。私は、なぜそのフォルダを参照していないのですか? – oxtay