botocore.exceptions.ClientError: Ocurrió un error (InvalidToken) al llamar a la operación ListObjectsV2

botocore.exceptions.ClientError: Ocurrió un error (InvalidToken) al llamar a la operación ListObjectsV2

Tengo un mlflowservidor alojado en aws, que utiliza s3en segundo plano para almacenamiento. Estoy intentando ejecutar un lambda-functionprograma que ejecuta un script de Python que accede al mlflowservidor, carga un pytorchmodelo, hace predicciones y finaliza. El código donde surgen mis problemas es:

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

El rastreo de cloudwatches:

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.

Según eldocumentos,ListObjectsV2

Devuelve algunos o todos (hasta 1000) los objetos de un depósito con cada solicitud.

Para utilizar esta operación, debe tener acceso de LECTURA al depósito.

Para utilizar esta acción en una política de AWS Identity and Access Management (IAM), debe tener permisos para realizar la acción s3:ListBucket.

En policylo que he definido para esto lambda-function, tengo s3:ListBucketpermiso para el depósito que mlflowestá alojado.

Cualquier idea sobre cómo solucionar este problema es bienvenida.

información relacionada