我有一个充当静态网站的S3存储桶,并且正在使用API网关向其分发流量。我了解CloudFront在这里是更好的选择,但请不要提出建议。由于我不愿讨论的原因,这不是一个选择。
我正在通过配置{proxy +}资源来完成我的解决方案。下图:
我只想允许从API网关代理资源访问S3网站。有没有一种方法可以为代理资源提供执行角色,就像您可以提供代理资源一样。资源的执行角色来运行lambda函数? Lambda执行角色示例如下:
代理资源的集成请求部分似乎没有执行角色:
或者有没有办法为整个API网关分配一个角色,以为其提供访问S3存储桶的权限?
我尝试过的其他事情:
编辑存储桶策略以仅允许来自API网关服务的流量:
{ “ Version”:“ 2012-10-17”, “ Id”:“ apiGatewayOnly”, “声明”:[ { “ Sid”:“ apiGW”, “效果”:“允许”, “校长”:{ “服务”:[“ api-gateway-amazonaws.com”] }, “ Action”:“ s3:GetObject”, “资源”:“ http://test-proxy-bucket-01.s3-website.us-east-2.amazonaws.com/ *” } ] }
编辑存储桶策略以仅允许来自API网关URL的流量:
{ “ Version”:“ 2012-10-17”, “ Id”:“ http推荐人策略示例”, “声明”:[ { “ Sid”:“允许获取来自www.example.com和example.com的请求。”, “效果”:“允许”, “ Principal”:“ ”, “ Action”:“ s3:GetObject”, “资源”:“ http://test-proxy-bucket-01.s3-website.us-east-2.amazonaws.com/ ”, “条件”:{ “ StringLike”:{ “ aws:Referer”:[ “ https://xxxxxxx.execute-api.us-east-2.amazonaws.com/prod/ ”, “ http://xxxxxxxx.execute-api.us-east-2.amazonaws.com/prod ” ] } } } ] }
答案 0 :(得分:1)
apigateway.amazonaws.com
有关更多详细信息,请参见docs。