概要
nifcloud が botocore にパッチを当てているため使うたびに reload で切り替える必要がある
環境
- Python 3.10.2
- nifcloud 1.0.3
- botocore 1.21.43
サンプルコード
nifcloud が import されている状態で nifcloud を再度 reload しようとすると無限ループになるので botocore のときに nifcloud に戻すように条件分岐する必要がある
import importlib
import botocore
import nifcloud
# nifcloud モードへ
if botocore.session.Session().user_agent_name != 'nifcloud':
importlib.reload(nifcloud.session)
importlib.reload(nifcloud.loaders)
from nifcloud import session
client = session.get_session().create_client(
"computing",
region_name="jp-east-1",
nifcloud_access_key_id="xxx",
nifcloud_secret_access_key="xxx")
client.describe_instances()
# botocore モードへ
importlib.reload(botocore.session)
importlib.reload(botocore.loaders)
from botocore import session
client = session.get_session().create_client(
's3',
aws_access_key_id='xxx',
aws_secret_access_key='xxx',
)
client.list_buckets()
# 再度 nifcloud モードへ
if botocore.session.Session().user_agent_name != 'nifcloud':
importlib.reload(nifcloud.session)
importlib.reload(nifcloud.loaders)
from nifcloud import session
client = session.get_session().create_client(
"computing",
region_name="jp-east-1",
nifcloud_access_key_id="xxx",
nifcloud_secret_access_key="xxx")
client.describe_instances()
同一プロセスないで両方使う場合は上記のようにしないとダメなようです
面倒な場合は別プロセスにしても OK です
0 件のコメント:
コメントを投稿