%20ao%20chamar%20a%20opera%C3%A7%C3%A3o%20ListObjectsV2.png)
Eu tenho um mlflow
servidor hospedado em aws
, que usa s3
em segundo plano para armazenamento. Estou tentando executar lambda-function
um script python que acessa o mlflow
servidor, carrega um pytorch
modelo, faz previsões e finaliza. O código onde surgem meus problemas é:
with open('./data/api_keys.json', 'r') as f:
API_KEYS = json.load(f)
os.environ['AWS_DEFAULT_REGION'] = API_KEYS['AWS_DEFAULT_REGION']
os.environ["AWS_ACCESS_KEY_ID"] = API_KEYS['AWS_ACCESS_KEY_ID']
os.environ["AWS_SECRET_ACCESS_KEY"] = API_KEYS['AWS_SECRET_ACCESS_KEY']
mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)
model = mlflow.pytorch.load_model(MODEL_URI) # <---- error thrown here
O rastreamento de cloudwatch
é:
File "/app/production_script.py", line 26, in <module>
model = mlflow.pytorch.load_model(MODEL_URI)
File "/usr/local/lib/python3.9/site-packages/mlflow/pytorch/__init__.py", line 693, in load_model
local_model_path = _download_artifact_from_uri(artifact_uri=model_uri)
File "/usr/local/lib/python3.9/site-packages/mlflow/tracking/artifact_utils.py", line 95, in _download_artifact_from_uri
return get_artifact_repository(artifact_uri=root_uri).download_artifacts(
File "/usr/local/lib/python3.9/site-packages/mlflow/store/artifact/artifact_repo.py", line 179, in download_artifacts
if self._is_directory(artifact_path):
File "/usr/local/lib/python3.9/site-packages/mlflow/store/artifact/artifact_repo.py", line 61, in _is_directory
listing = self.list_artifacts(artifact_path)
File "/usr/local/lib/python3.9/site-packages/mlflow/store/artifact/s3_artifact_repo.py", line 121, in list_artifacts
for result in results:
File "/usr/local/lib/python3.9/site-packages/botocore/paginate.py", line 269, in __iter__
response = self._make_request(current_kwargs)
File "/usr/local/lib/python3.9/site-packages/botocore/paginate.py", line 357, in _make_request
return self._method(**current_kwargs)
File "/usr/local/lib/python3.9/site-packages/botocore/client.py", line 530, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/lib/python3.9/site-packages/botocore/client.py", line 960, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidToken) when calling the ListObjectsV2 operation: The provided token is malformed or otherwise invalid.
Conformedocumentos,ListObjectsV2
Retorna alguns ou todos (até 1.000) objetos em um bucket com cada solicitação.
Para usar esta operação, você deve ter acesso READ ao bucket.
Para usar essa ação em uma política do AWS Identity and Access Management (IAM), você deve ter permissões para executar a ação s3:ListBucket.
No policy
que defini para isso lambda-function
, tenho s3:ListBucket
permissão para o bucket que mlflow
está hospedado.
Qualquer idéia sobre como consertar isso é bem-vinda.