содержимое файла swagger не обновляется в aws apigateway - PullRequest
0 голосов
/ 16 мая 2018

Я работаю над файлом swagger, чтобы создать авторизатор в aws apigateway. Но в этот раз я упомяну некоторые функции и API в файле swagger. Но он не работает в Apigateway. Как только я удалил стек, the APIgateway. Если какие-либо изменения были внесены, чтобы не повлиять на APIgateway. Ниже я упомянул файл template.yml и файл swagger. Пожалуйста, кто-нибудь поможет решить эту проблему.

файл template.yml

AWSTemplateFormatVersion: '2010-09-09'

Преобразование: AWS :: Serverless-2016-10-31

Описание: TestApi

Ресурсы:

ApiGateway:

Type: AWS::Serverless::Api
Properties:
  StageName: Prod
  DefinitionUri: s3://devdeliforcemumbailambda/swagger-json-testapi.json

DriverDeleteF:

Type: AWS::Serverless::Function
Properties:
  FunctionName: driver_delete_fun
  Handler: index.handler
  Runtime: nodejs8.10
  CodeUri: build/authorizer.zip
  Events:
    GetApi:
      Type: Api
      Properties:
        Path: /driver
        Method: delete

содержание файла swagger

{

"swagger": "2.0",

"информация": {

"title": "demo"

}, "host": "rl0cg75uff.execute-api.ap-south-1.amazonaws.com",

"basePath": "/ Prod",

«схемы»: [

"https"

]

"пути": {

"/driver": {

  "delete": {
    "produces": [
      "application/json"
    ],
    "responses": {
      "200": {
        "description": "200 response",
        "schema": {
          "$ref": "#/definitions/Empty"
        }
      }
    },
    "security": [
      {
        "CognitoAuth": []
       }
    ],
    "x-amazon-apigateway-integration": {
      "uri": "arn:aws:apigateway:ap-south-1:lambda:path/2015-03-31/functions/arn:aws:lambda:ap-south-1:539977196287:function:driver_delete_fun/invocations",
      "responses": {
        "default": {
          "statusCode": "200"
        }
      },
      "passthroughBehavio r": "when_no_match",
      "httpMethod": "POST",
      "contentHandling": "CONVERT_TO_TEXT",
      "type": "aws"
    }
  }
 },

}, "securityDefinitions": {

"CognitoAuth": {
  "type": "apiKey",
  "name": "Authorization",
  "in": "header",
  "x-amazon-apigateway-authtype": "cognito_user_pools",
  "x-amazon-apigateway-authorizer": {
    "providerARNs": [
      "arn:aws:cognito-idp:ap-south-1:539977196287:userpool/ap-south-1_6j7axGXVm"
    ],
    "type": "cognito_user_pools"
  }
},
"lambdaAuth":{
  "type": "apiKey",
  "name": "Authorization",
  "in": "header",
  "x-amazon-apigateway-authtype": "custom",
  "x-amazon-apigateway-authorizer": { 
     "authorizerUri":  "arn:aws:apigateway:ap-south-1:lambda:path/2015-03-31/functions/arn:aws:lambda:ap-south-1:539977196287:function:my-service-dev-hello/invocations",
     "authorizerResultTtlInSeconds":1,
      "identitySource": "method.request.header.Authorization",
      "type": "request"
   }
}

}, "определения": {

"Empty": {

  "type": "object",

  "title": "Empty Schema"
}

} }

1 Ответ

0 голосов
/ 17 мая 2018

Cloudformation не сравнивает содержимое вашего объекта s3, когда вы указываете S3 uri в DefinitionUri. Вместо этого вы можете указать относительный локальный путь и получить от него информацию об облачности, как это обычно делается с кодом функции. Затем Cloudformation будет использовать ваш хэш файла в ключе объекта s3, поэтому каждый раз, когда они содержат изменения, они будут иметь разные DefinitionUri и CodeUri.

Поэтому вместо того, чтобы иметь:

DefinitionUri: s3://devdeliforcemumbailambda/swagger-json-testapi.json
CodeUri: build/authorizer.zip

сделать это:

DefinitionUri: ./swagger-json-testapi.json
CodeUri: ./authorizer-code-directory

То, что я написал, применимо к следующему: ( последние документы здесь )

Свойство BodyS3Location для ресурса AWS :: ApiGateway :: RestApi

Свойство кода для ресурса AWS :: Lambda :: Function

Свойство CodeUri для ресурса AWS :: Serverless :: Function

Свойство DefinitionUri для ресурса AWS :: Serverless :: Api

Свойство SourceBundle для ресурса AWS :: ElasticBeanstalk :: ApplicationVersion

Свойство TemplateURL для ресурса AWS :: CloudFormation :: Stack

Разверните свой стек следующим образом:

aws cloudformation package --template-file template.yaml --s3-bucket devdeliforcemumbailambda --output-template-file packaged-template.yaml

aws cloudformation deploy --capabilities CAPABILITY_NAMED_IAM --stack-name test-swagger --template-file packaged-template.yaml
...