API gateway cannot invoke endpoint after setting resource policy

0

Hi, I have set a resource policy for my API that enables invoke access for only one user. The user credentials are set in my machine. However, when I do curl/ do the get request from browser, I get the following error message.

{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:eu-central-1:********2:e5460wg6i/Prod/GET/"}

What I want to do is, invoke the endpoint only from EC2s that have roles attached which are allowed via the API gateway resource policy.

2 Answers
1

When you run curl from your EC2 instance it doesn't automatically use the associated role credentials when making the HTTP request and this is why you see the request as "anonymous".

You need to make an HTTP request that is signed by using AWS Signature Version 4.

You can follow the guide here on how to craft an HTTP request that is SigV4 signed. Alternatively, you can use awscurl tool that will simplify this process for you. And, there are also browser extensions (for example this one for chrome) that can do it (though I haven't tried them personally, so use at your own risk).

AWS
answered 10 days ago
profile pictureAWS
EXPERT
reviewed 10 days ago
0

I found the Knowledge, hope it will help you.
Please check it out.

Resolve "User: anonymous is not authorized to perform: execute-api:Invoke on resource:" errors

How do I troubleshoot issues when connecting to an API Gateway private API endpoint?
https://repost.aws/knowledge-center/api-gateway-private-endpoint-connection

AWS
EXPERT
hyp
answered 11 days ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions