AWS SAM Deploy, how to find URL of API Gateway?
11,707
Solution 1
I just had time to answer properly. Having API Gateway definition:
Resources:
...
ServerlessRestApi:
Type: AWS::Serverless::Api
DeletionPolicy: "Retain"
Properties:
StageName: Prod
...
you can output
Outputs:
ProdDataEndpoint:
Description: "API Prod stage endpoint"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
Solution 2
I have separate AWS::ApiGateway::RestApi
and AWS::ApiGateway::Stage
resources, so my Output looked a bit different, since I didn't/couldn't hard code the stage name:
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"
Author by
user3888307
Updated on June 16, 2022Comments
-
user3888307 almost 2 years
How do I find the URL address of the API Gateway after deployment from Command line ?
I use a script similar to below to deploy my API Gateway and Authorizer, and it deploys fine.
https://github.com/floodfx/aws-lambda-proxy-using-sam-local/blob/master/deploy.sh
I'm trying to figure out how to get the address of the API Gateway after Deployment from the command line
The API Gateway gets created, I can see the stack:
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" }
There must be a simple command I'm missing to get this.
-
user3888307 almost 6 yearsI put some example on my github, if anyone is still struggling with this: github.com/pmcdowell-okta/my-notes/tree/master/awsSam
-
exception almost 4 yearsHow can I get the value of that output at runtime?
-
rainabba about 3 yearsOp specified SAM Deploy (not explicitly creating resources).