Resources and methods in AWS - Time & Space Complexity
When working with AWS resources and methods, it's important to understand how the time to complete tasks grows as you add more resources or methods.
We want to know how the number of API calls or operations changes when we increase resources or methods.
Analyze the time complexity of creating multiple resources and attaching methods to them.
for resource_name in resource_list:
resource = api_gateway.create_resource(restApiId=api_id, parentId=parent_id, pathPart=resource_name)
api_gateway.put_method(restApiId=api_id, resourceId=resource['id'], httpMethod='GET', authorizationType='NONE')
This sequence creates a resource for each name and adds a GET method to it.
- Primary operation: Creating a resource and adding a method for each item.
- How many times: Once per resource in the list.
Each new resource requires one create call and one method call.
| Input Size (n) | Approx. Api Calls/Operations |
|---|---|
| 10 | 20 (10 creates + 10 methods) |
| 100 | 200 (100 creates + 100 methods) |
| 1000 | 2000 (1000 creates + 1000 methods) |
Pattern observation: The number of API calls grows directly with the number of resources.
Time Complexity: O(n)
This means the time to complete grows in a straight line as you add more resources.
[X] Wrong: "Adding more methods to the same resource does not increase the number of API calls significantly."
[OK] Correct: Each method requires its own API call, so adding methods increases calls linearly with the number of methods.
Understanding how operations scale with resources helps you design efficient cloud setups and shows you can think about costs and delays realistically.
"What if we batch create resources instead of one by one? How would the time complexity change?"
Practice
resource represent in AWS API Gateway?Solution
Step 1: Understand the role of resources in API Gateway
Resources define the URL paths that clients use to reach your API endpoints.Step 2: Differentiate resources from other components
Resources are not backend connections, security policies, or deployment methods; they are URL paths.Final Answer:
A URL path that clients can access -> Option AQuick Check:
Resource = URL path [OK]
- Confusing resources with backend services
- Thinking resources are security settings
- Mixing resources with deployment steps
Solution
Step 1: Identify the HTTP method for data retrieval
GET is the standard HTTP method used to retrieve or read data from a resource.Step 2: Confirm other methods' purposes
POST creates data, DELETE removes data, and PUT updates data, so they are not for retrieval.Final Answer:
GET -> Option AQuick Check:
GET = retrieve data [OK]
- Using POST instead of GET to fetch data
- Confusing DELETE with data retrieval
- Mixing PUT with GET for reading data
/items with a POST method integrated to a Lambda function. What happens when a client sends a POST request to /items?Solution
Step 1: Understand the integration of POST method with Lambda
The POST method on the /items resource is connected to a Lambda function, so requests trigger that function.Step 2: Analyze the client request effect
When a client sends a POST request to /items, API Gateway forwards it to Lambda for processing.Final Answer:
The Lambda function is triggered to process the request -> Option CQuick Check:
POST + Lambda integration = Lambda triggered [OK]
- Assuming POST is not allowed without checking method setup
- Thinking API Gateway returns 404 if resource exists
- Confusing mock responses with Lambda integration
/users and added a GET method, but clients get a 403 Forbidden error when calling it. What is the most likely cause?Solution
Step 1: Check method integration setup
A 403 Forbidden often means the method exists but lacks proper integration or permissions.Step 2: Rule out other causes
If the resource path was misspelled, the error would be 404. If API Gateway was not deployed, the error would differ. Using POST instead of GET would cause a 405 Method Not Allowed.Final Answer:
The method does not have an integration configured -> Option DQuick Check:
403 Forbidden = missing integration or permissions [OK]
- Confusing 403 with 404 or 405 errors
- Ignoring deployment status
- Assuming client method is always correct
/orders that supports both GET and POST methods. The GET method returns a mock response, and the POST method triggers a Lambda function. Which configuration correctly sets this up?Solution
Step 1: Match method to integration type
The GET method should use MOCK integration to return a static response without backend calls.Step 2: Configure POST method to trigger Lambda
The POST method must be integrated with Lambda to process incoming data.Step 3: Verify the correct combination
Create /orders resource; add GET method with MOCK integration; add POST method with Lambda integration correctly assigns MOCK to GET and Lambda to POST on the /orders resource.Final Answer:
Create /orders resource; add GET method with MOCK integration; add POST method with Lambda integration -> Option BQuick Check:
GET=MOCK, POST=Lambda [OK]
- Swapping MOCK and Lambda integrations between methods
- Using same integration for both methods incorrectly
- Forgetting to create the resource before methods
Ready to prove it?
Pass the test and this pattern moves unknown
