我有一个充当静态网站的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”:[“
apigateway.amazonaws.com
详见单据。