Skip to content

Commit

Permalink
[Integration][AWS] | Fix an issue where the integration enters an end…
Browse files Browse the repository at this point in the history
…less loop on region permission error (#1169)

# Description

**What:**

Fixed an issue where the integration would enter an endless loop upon
encountering a permission error when querying resources in a particular
region. The code now raises the permission error instead of skipping it,
allowing downstream code to handle it appropriately.

**Why:**

Previously, when a permission error occurred, the integration skipped
the error without proper handling, causing it to get stuck in an
infinite loop. By raising the error, we ensure that the integration does
not loop endlessly and that the error can be managed correctly by
downstream processes.

**How:**

- Updated the error handling logic to raise the permission error instead
of skipping it.
- Verified that downstream code is capable of handling the raised
exception without adverse effects.
- Tested the integration to confirm that it no longer enters an endless
loop on permission errors.

## Type of change

Please leave one option from the following and delete the rest:

- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] New Integration (non-breaking change which adds a new integration)
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] Non-breaking change (fix of existing functionality that will not
change current behavior)
- [ ] Documentation (added/updated documentation)

<h4> All tests should be run against the port production
environment(using a testing org). </h4>

### Core testing checklist

- [ ] Integration able to create all default resources from scratch
- [ ] Resync finishes successfully
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Scheduled resync able to abort existing resync and start a new one
- [ ] Tested with at least 2 integrations from scratch
- [ ] Tested with Kafka and Polling event listeners
- [ ] Tested deletion of entities that don't pass the selector


### Integration testing checklist

- [ ] Integration able to create all default resources from scratch
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Resync finishes successfully
- [ ] If new resource kind is added or updated in the integration, add
example raw data, mapping and expected result to the `examples` folder
in the integration directory.
- [ ] If resource kind is updated, run the integration with the example
data and check if the expected result is achieved
- [ ] If new resource kind is added or updated, validate that
live-events for that resource are working as expected
- [ ] Docs PR link [here](#)

### Preflight checklist

- [ ] Handled rate limiting
- [ ] Handled pagination
- [ ] Implemented the code in async
- [ ] Support Multi account

## Screenshots

Include screenshots from your environment showing how the resources of
the integration will look.

## API Documentation

Provide links to the API documentation used for this integration.
  • Loading branch information
mk-armah authored Nov 21, 2024
1 parent b1a67b4 commit 7d6cbb4
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
8 changes: 8 additions & 0 deletions integrations/aws/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

<!-- towncrier release notes start -->

## 0.2.60 (2024-11-21)


### Bug Fixes

- Fix an issue where the integration enters an endless loop on permission error when querying resources in a region without permission


## 0.2.59 (2024-11-21)


Expand Down
2 changes: 1 addition & 1 deletion integrations/aws/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "aws"
version = "0.2.59"
version = "0.2.60"
description = "This integration will map all your resources in all the available accounts to your Port entities"
authors = ["Shalev Avhar <[email protected]>", "Erik Zaadi <[email protected]>"]

Expand Down
9 changes: 2 additions & 7 deletions integrations/aws/utils/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,10 +255,5 @@ async def resync_cloudcontrol(
if not next_token:
break
except Exception as e:
if is_access_denied_exception(e):
logger.warning(
f"Skipping resyncing {kind} in region {region} in account {account_id} due to missing access permissions"
)
else:
logger.error(f"Error resyncing {kind} in region {region}, {e}")
raise e
logger.error(f"Error resyncing {kind} in region {region}, {e}")
raise e

0 comments on commit 7d6cbb4

Please sign in to comment.