botocore.exceptions.ClientError: Ocorreu um erro (InvalidToken) ao chamar a operação ListObjectsV2

botocore.exceptions.ClientError: Ocorreu um erro (InvalidToken) ao chamar a operação ListObjectsV2

Eu tenho um mlflowservidor hospedado em aws, que usa s3em segundo plano para armazenamento. Estou tentando executar lambda-functionum script python que acessa o mlflowservidor, carrega um pytorchmodelo, 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 policyque defini para isso lambda-function, tenho s3:ListBucketpermissão para o bucket que mlflowestá hospedado.

Qualquer idéia sobre como consertar isso é bem-vinda.

informação relacionada