提问者:小点点

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


我有一个充当静态网站的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个答案

    匿名用户

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

    详见单据。