【问题标题】:AWS::Serverless::Api Resource Policy with Cloudformation SAM使用 Cloudformation SAM 的 AWS::Serverless::Api 资源策略
【发布时间】:2018-09-28 02:14:23
【问题描述】:

最近AWS宣布Amazon API Gateway Supports Resource Policies for APIs

是否可以将资源策略附加到通过 Cloudformation 和 SAM 创建的 AWS::Serverless::Api?

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-cloudformation


    【解决方案1】:

    我还没有机会尝试这个,但我认为您可以像使用 S3 存储桶策略一样使用它。对您来说最棘手的部分是获取api-id 以便能够在Resource ARN 中使用。

    因此,在您的模板中,您将有一个包含类似 YAML(或 JSON)的片段。 这将允许 <some user> 使用 API

    Statement:
    - Effect: Allow
      Principal:
        AWS:
        - arn:aws:iam::<account-id>:user/<some user>
        - account-id
      Action: execute-api:Invoke
      Resource:
      - execute-api:/*/*/*
    

    请注意,execute-api:/*/*/* 在部署期间会自动转换为类似于 arn:aws:execute-api:&lt;region&gt;:&lt;account-id&gt;:&lt;api-id&gt;/*/*/* 的内容

    这种方法应该像存储桶策略一样工作,这就是您将策略应用于存储桶的方式。

    祝你好运!

    【讨论】:

    • 显然应该将此策略添加为 RestApi 声明的一部分。参考docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…。您如何获得 ? (因为它需要引用自己)。尝试执行此操作时出现循环依赖错误。
    • 我认为您要问的是“我如何提交/部署此策略?”。有几种方法可以将策略附加到 API。您可以创建一个单独的模板并提交它。此模板将包含您的策略,并将引用 API。对于这种情况,第二种可能更简单的方法是将策略直接嵌入到您的 API 声明中;只需将策略与 API 模板中的“属性”放在一个名为“策略”的键下即可。在此处搜索“策略模板”:docs.aws.amazon.com/serverlessrepo/latest/devguide/…
    • 你可以使用 "Resource": "execute-api:*/*/*" 而无需提供
    • 是的,这就像一个魅力。我已经编辑了答案。 @niqui 这对你有用吗?
    • 我的问题是我定义了“AWS:Serverless:Api”而不是“AWS:ApiGateway:RestApi”类型,因为我需要复杂的 OpenAPI 招摇定义。 “AWS:Serverless:Api”不允许“Policy”属性。 :( 在这种情况下,我该如何附加资源政策?任何帮助或建议将不胜感激。谢谢!
    猜你喜欢
    • 2020-08-21
    • 2017-04-23
    • 2019-05-22
    • 1970-01-01
    • 2023-04-05
    • 2020-10-14
    • 2019-05-23
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多