tion_name)                                       ││    511                                                                                           │

│                                                                                                  │

│ /home/stefan/aspyre/src/zenml/.venv/lib/python3.8/site-packages/botocore/client.py:915 in        │

│ _make_api_call                                                                                   │

│                                                                                                  │

│    912 │   │   if http.status_code >= 300:                                                       │

│    913 │   │   │   error_code = parsed_response.get("Error", {}).get("Code")                     │

│    914 │   │   │   error_class = self.exceptions.from_code(error_code)                           │

│ ❱  915 │   │   │   raise error_class(parsed_response, operation_name)                            │

│    916 │   │   else:                                                                             │

│    917 │   │   │   return parsed_response                                                        │

│    918                                                                                           │

╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

ClientError: An error occurred (403) when calling the HeadBucket operation: Forbidden

Impersonating accounts and assuming roles

These types of authentication methods require more work to set up because multiple permission-bearing accounts and roles need to be provisioned in advance depending on the target audience. On the other hand, they also provide the most flexibility and control. Despite their operational cost, if you are a platform engineer and have the infrastructure know-how necessary to understand and set up the authentication resources, this is for you.