在无服务器上为AWS API Gateway添加其他资源

时间:2019-04-26 05:31:00

标签: amazon-web-services aws-api-gateway serverless-framework

我有一个带有http事件的无服务器应用程序。我需要为由无服务器创建的端点创建子资源。

如何在无服务器的情况下完成此任务?

到目前为止,模板看起来像这样:

provider:
  name: aws
  runtime: nodejs8.10
  region: <REGION>
functions:
  myFunc:
    timeout: 30
    handler: "index.handler" 
    name: "myFunc"
  events:
  - http:
    path: /myFunc
    method: post
    cors: true

resources:
  Resources:
    saysResource:
      Type: "AWS::ApiGateway::Resource"
      Properties:
        RestApiId:
          Ref: ApiGatewayRestApi 
        ParentId:
          Ref: <NEED_/myFunc_RESOURCE_ID_HERE>
        PathPart: "{says}"

  GetMethod:
    Type: "AWS::ApiGateway::Method"
        Properties:
          HttpMethod: GET
          RequestParameters:
            'method.request.path.says': true
          RestApiId:
            Ref: ApiGatewayRestApi
          ResourceId:
            Ref: saysResource
          Integration:
            Type: aws
            Credentials:
              Ref: S3ReadAccessRole
            IntegrationHttpMethod: GET
            PassthroughBehavior: WHEN_NO_MATCH
            RequestParameters:
              'integration.request.path.key': 'method.request.path.says'
            Uri:  'arn:aws:s3:::my-bucket/users/{key}'

为了使其正常工作,我对/myFunc的资源进行了重新声明(希望CFN不会创建已经创建的资源):

myFuncResource:
  Type: "AWS::ApiGateway::Resource"
  Properties:
    RestApiId:
      Ref: ApiGatewayRestApi
    ParentId:
      Fn::GetAtt:
        - ApiGatewayRestApi
        - RootResourceId
    PathPart: "/myFunc"

此操作失败,并显示以下错误:

An error occurred: myFuncResource - Another resource with the same parent 
already has this name: my-func (Service: AmazonApiGateway; Status Code: 
409; Error Code: ConflictException; Request ID: <Request_Id>).

0 个答案:

没有答案