我试图将对API网关端点的访问限制为来自VPC的请求。有示例API网关资源策略,甚至还包括RestApi资源上的Policy属性,但是当尚未创建API时,我无法弄清楚如何编写需要API ID的策略。 我有一个示例,可以根据AWS文档了解堆栈的外观:
MyRestApi:
Type: 'AWS::ApiGateway::RestApi'
Properties:
Name: My Great API
Policy:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal: '*'
Action: execute-api:Invoke
Resource:
Fn::Join:
- - ''
- 'arn:aws:execute-api:'
- Ref: region
- ':'
- Ref: accountId
- ':'
- Ref: MyRestApi
- Effect: Deny
Principal: '*'
Action: execute-api:Invoke
Resource:
Fn::Join:
- - ''
- 'arn:aws:execute-api:'
- Ref: Region
- ':'
- Ref: AccountId
- ':'
- Ref: MyRestApi
Condition:
StringNotEquals:
"aws:SourceVpc":
Ref: VpcId
问题在于,仍无法创建策略中的 MyRestApi 。我敢肯定我不是唯一想要这样做的人。我宁愿认为这是一个普遍的问题,所以很有可能我还没有找到答案。
感谢您的帮助,
Stefan
PS:我使用的文档是https://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-policy和https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-examples.html
答案 0 :(得分:1)
根据AWS documentation,由于此问题,该策略支持Resource
的特殊语法。
"Resource": [
"execute-api:/stage/method/path"
]
在评论中,他们称之为:
//这里支持简化格式,因为尚不知道apiId,并且可以在导入时导出分区/区域/帐户