当前位置: 首页 > 知识库问答 >
问题:

AWS API网关从专用子网中的EC2访问时出现403错误

贺兴平
2023-03-14

我有EC2实例在私有子网中运行,想要访问API网关。

我做的步骤:-

  1. 在API网关中创建和部署阶段
  2. 从测试URL和邮递员测试-工作良好
  3. 创建了具有execute-api接口的VPCendpoint
  4. 更新了API-Gateway资源策略,如下所示并已保存
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:eu-west-1:{{MY_ACCOUNT}}:{{MYAPI}}/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpc": "vpce-{{ID}}"
                }
            }
        }
    ]
}
[ec2-user@ip-xx-xx-xx-xx ~]$ wget https://{{MYAPI}}.execute-api.eu-west-1.amazonaws.com/DEV/CustomerInfo/?customerId={{CUST_ID}}
--2020-06-29 14:43:29--  https://{{MYAPI}}.execute-api.eu-west-1.amazonaws.com/DEV/CustomerInfo/?customerId={{CUST_ID}}
Resolving {{MYAPI}}.execute-api.eu-west-1.amazonaws.com ({{MYAPI}}.execute-api.eu-west-1.amazonaws.com)... xx.xx.xx.xx, xx.xx.xx.xxx
Connecting to {{MYAPI}}.execute-api.eu-west-1.amazonaws.com ({{MYAPI}}.execute-api.eu-west-1.amazonaws.com)|xx.xx.xx.xx|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2020-06-29 14:43:29 ERROR 403: Forbidden.

共有1个答案

宁锐
2023-03-14

您的状况:

"Condition": {
                "StringNotEquals": {
                    "aws:sourceVpc": "vpce-{{ID}}"
                }
            }

似乎不对。StringNoteQuals表示只要aws:sourceVPC“vpce-{{ID}}不同,您就允许execute-api:invoke

我相信应该是stringequals

 类似资料:
  • 我的VPC中有Public和Pvt子网。我在Pvt子网上有一些运行在EC2上的服务,需要通过外部/移动资源访问。我如何做到这一点-是VPCLink和NLB的方式来做到这一点,还是任何其他方式,创建一些访问点在公共子网(??)。Lambda似乎是答案(现在AWS中几乎所有的东西)--甚至不确定那种访问对于Pvt子网中的资源是如何工作的。 同样,同一个Pvt子网可以访问外部资源(在AWS之外)-我如何

  • 我正在开发一个无服务器应用程序,该应用程序与RDS中的数据库一起工作。出于安全原因,应用程序(Lambda)和数据库都位于专有网络中的一个专用子网中。我还想从应用程序访问AWS服务——例如,我想访问secret manager以获取数据库凭据,在EventBridge中设置规则并使用STS服务。我知道我可以使用VPCendpoint,并在我的VPC中为每个感兴趣的服务部署接口endpoint。 我

  • 我们正在尝试从C#Windows服务调用AWS API网关来执行后台作业。哪个应该触发API网关定期初始化请求? 我们使用RestSharp调用APIendpoint,该类称为AwsAuthenticator,它继承自RestSharp.Authenticators.IAAuthenticator。但当我们调用API Gateway时,收到的错误是“我们计算的请求签名与您提供的签名不匹配。请检查您

  • 我正在使用Amazon EC2,我想把一个面向互联网的ELB(负载平衡器)放到一个私有子网上的两个实例中。我正在将VPC用于公共和私有子网。 如果我只是将私有子网添加到ELB,它将不会获得任何连接。 如果我将两个子网都附加到ELB,那么它可以访问实例,但它通常会超时。(请参阅屏幕截图1) 如果我只附加到公共子网,那么我附加到ELB的实例会获得OutOfService,因为我在公共子网中没有任何实例

  • 我在一个私有子网中有一个lambda函数,我想通过创建一个API网关来调用这个lambda函数,并且这个API只能由公共子网中的特定EC2实例调用(私有子网和公共子网在同一个VPC中),而不能由其他任何人调用。 有人能指导/建议我如何处理这个问题吗。

  • 问题: 能够使用AWS CLI和Boto3成功下载文件。但是,在使用Hadoop/Spark的S3A连接器时,收到以下错误: 配置:在本地计算机上运行此配置 > Spark版本2.4.4 Hadoop版本2.7 贾尔斯补充道: > Hadoop-aws-2.7.3.jar aws-java-sdk-1.7.4.jar Hadoop配置: 读取文件的代码: