获取无服务器框架在我的 serverless.yml 文件中创建的 API 网关资源的 ARN

Ais*_*war 7 amazon-web-services aws-api-gateway serverless-framework

如何获取无服务器框架在我的 serverless.yml 文件中创建的 API 网关资源的 ARN?

我想获取 API 网关资源的 ARN,以便我可以在 IAM 策略中使用它在网关上执行基于 IAM 的授权。

Ais*_*war 6

一个API整个ARN是的形式arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path)。使用{ "Ref" : "ApiGatewayRestApi" }(链接在 serverless.yml 中 ) 为您提供 apiId。

您可以执行以下操作(请参阅资源部分)将其转换为整个 Arn 以引用 API:

PolicyName: InvokeAPI
PolicyDocument:
  Version: "2012-10-17"
  Statement:
    Effect: "Allow"
    Action: "execute-api:Invoke"
    Resource:
      - Fn::Join:
        - "/"
        - 
          - Fn::Join: [":", ["arn:aws:execute-api", {"Ref": "AWS::Region"}, {"Ref":"AWS::AccountId"}, {"Ref": "ApiGatewayRestApi"}]]
          - "*"
Run Code Online (Sandbox Code Playgroud)