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

限制访问使用API网关作为代理的S3静态网站

单于浩邈
2023-03-14

我有一个充当静态网站的S3 bucket,我正在使用API网关向它分发流量。我知道CloudFront在这里是一个更好的选择,但请不要建议它。这不是一个选择,由于原因我不想说。

我正在通过配置{proxy+}资源来完成我的解决方案。下图:

我想只允许从API网关代理资源访问S3网站。是否有一种方法可以为代理资源提供一个执行角色,类似于如何为资源提供一个执行角色来运行lambda函数?Lambda执行角色示例如下:

代理资源的集成请求部分似乎没有执行角色:

或者有没有一种方法我可以为整个API网关分配一个角色,为它提供访问S3 bucket的权限?

我尝试过的其他事情:

>

  • 编辑桶策略以仅允许来自API网关服务的流量:

    {“版本”:“2012-10-17”,“ID”:“APIGatewayonly”,“语句”:[{“SID”:“APIGW”,“Effect”:“Allow”,“主体”:{“Service”:[“API-Gateway-Amazonaws.com”]},“Action”:“S3:GetObject”,“Resource”:“http://test-proxy-bucket-01.s3-website.us-east-2.amazonaws.com/*”}]}

    编辑bucket策略以仅允许来自API网关URL的流量:

    {“版本”:“2012-10-17”,“ID”:“HTTP引用策略示例”,“语句”:[{“SID”:“允许从www.example.com和example.com发出的get请求”,“Effect”:“允许”,“Principal”:“”,“Action”:“S3:GetObject”,“Resource”:“http://test-proxy-bucket-01.s3-website.us-east-2.amazonaws.com/”,“Condition”:{“StringLike”:{“AWS:referer”:[“

  • 共有1个答案

    端木野
    2023-03-14
    1. 创建专用S3存储桶
    2. 创建可以访问存储桶的IAM角色。将可承担此角色的受信任实体/主体设置为apigateway.amazonaws.com
    3. 使用AWS服务集成类型并选择S3。将执行角色设置为在2
    4. 中创建的角色

    详见单据。

     类似资料:
    • 也有类似的问题,但它们都有我尝试过的答案。我不确定我可能做错了什么,但任何帮助都将不胜感激。 方法执行测试产生的错误;提交请求: 我正在学习S3的API网关教程(http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html)以及尝试执行PUT请求。 API网

    • 我试图弄清楚如何从运行在VPC中的lambda访问Api网关服务Api(也称为“管理Amazon Api网关”)。不,我不是试图在私有API中调用资源方法(我知道如何创建VPC接口endpoint),只是调用AWS服务方法(,FWIW,使用Python boto3客户机)。希望这是有意义的,很难清楚地表达这与如此多的“API”重载在这里。当前的尝试以超时失败,所以我认为这是与VPC相关的,但我不确

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

    • 我们有一个位于S3上的静态web站点。 从页面中,我们执行一个jquery ajax post到AWS api Gateway/lambda函数。 我不确定选项是如何工作的,但当我们启用“Chrome allow cross origin插件”时,所有工作都很好(我们得到了JSON响应), 当插件被禁用时,我们得到错误“Request header field access-control-all

    • null 我倾向于认为它是第一个,但在这种情况下,nginx不会是应用程序的入口...(这是个问题吗?)

    • 我有一个aws lambda函数,它返回以下响应: 但是我在前端角度应用程序中得到以下误差。 CORS策略阻止从来源“HTTP://127.0.0.1:8080”访问位于“https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/price”的XMLHttpRequest:对飞行前请求的响应没有通过访问控制检查:它没有HTTP ok状态。