AWS SAM Deploy, как найти URL шлюза API?

Как найти URL-адрес шлюза API после развертывания из командной строки?

Я использую скрипт, аналогичный приведенному ниже, для развертывания моего шлюза API и авторизатора, и он развертывается нормально.

https://github.com/floodfx/aws-lambda-proxy-using-sam-local/blob/master/deploy.sh

Я пытаюсь выяснить, как получить адрес шлюза API после развертывания из командной строки

Шлюз API создан, я вижу стек:

aws cloudformation describe-stacks

"Stacks": [ { "StackId": "arn:aws:cloudformation:us-east-1:761861444952:stack/mygateway912/72100720-6e67-11e8-93e9-500c28604c4a", "Description": "An example serverless \"Hello World2 \" application with a custom authorizer.", "Tags": [], "CreationTime": "2018-06-12T17:38:40.946Z", "Capabilities": [ "CAPABILITY_IAM" ], "StackName": "mygateway912", "NotificationARNs": [], "StackStatus": "CREATE_COMPLETE", "DisableRollback": false, "ChangeSetId": "arn:aws:cloudformation:us-east-1:76161444952:changeSet/awscli-cloudformation-package-deploy-1528825120/352f7c7a-2870-44ea-9e7f-40d16c0015df", "LastUpdatedTime": "2018-06-12T17:38:46.411Z" }

Должна быть простая команда, которую мне не хватает, чтобы получить это.

3 ответа

Решение

Я просто успел ответить правильно. Наличие определения API Gateway:

Resources:
  ...
  ServerlessRestApi:
    Type: AWS::Serverless::Api
    DeletionPolicy: "Retain"
    Properties:
      StageName: Prod
  ...

вы можете вывести

Outputs:
  ProdDataEndpoint:
    Description: "API Prod stage endpoint"
    Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"

У меня есть отдельный AWS::ApiGateway::RestApi а также AWS::ApiGateway::Stage ресурсы, так что мой вывод выглядел немного иначе, так как я не мог / не мог жестко кодировать сценическое имя:

Outputs:
  ProdEndpoint:
    Value: !Sub "https://${ApiGw}.execute-api.${AWS::Region}.amazonaws.com/${ApiGwStage}/"

Resources:
  ApiGw:
    Type: AWS::ApiGateway::RestApi
    Properties:
      Name: 'Serverless Ipsum #noServerNovember challenge'
      FailOnWarnings: true

  ApiGwDeployment:
    Type: AWS::ApiGateway::Deployment
    # Required -- see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html
    DependsOn: ApiGwMethod
    Properties:
      RestApiId: !Ref ApiGw

  ApiGwStage:
    Type: AWS::ApiGateway::Stage
    Properties:
      DeploymentId: !Ref ApiGwDeployment
      MethodSettings:
        - DataTraceEnabled: true
          HttpMethod: '*'
          LoggingLevel: INFO
          ResourcePath: '/*'
      RestApiId: !Ref ApiGw
      StageName: prod

  ApiGwResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      RestApiId: !Ref ApiGw
      ParentId: !GetAtt ["ApiGw", "RootResourceId"]
      PathPart: "{proxy+}"

  ApiGwMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RestApiId: !Ref ApiGw
      ResourceId: !Ref ApiGwResource
      HttpMethod: ANY
      AuthorizationType: NONE
      Integration:
        Type: AWS_PROXY
        IntegrationHttpMethod: POST
        Uri: !Sub "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ServerlessIpsumFunction.Arn}/invocations"

я использую параметр AppEnv

      ....

Parameters:
  ...

  AppEnv:
    Type: String
    Default: stage
    Description: Application environment

Resources:
  GateWayAPI:
    Type: AWS::Serverless::Api
    Properties:
      StageName: !Ref AppEnv
      ....
  UploadFileFunction:
    ....
      Events:
        UploadFile:
          ...
          Properties:
            Path: /upload-file
            Method: post
            RestApiId: !Ref GateWayAPI
....

Outputs:
 ....
  UploadFileApi:
    Description: "API Gateway endpoint URL for UploadFileFunction"
    Value: !Sub "https://${GateWayAPI}.execute-api.${AWS::Region}.amazonaws.com/${AppEnv}/upload-file/"
  ...

Полный файл конфигурации

Другие вопросы по тегам