簡體   English   中英

自動部署AWS API Gateway Stage

[英]Automating Deployment of AWS API Gateway Stage

如何使用Boto3通過Python腳本自動執行AWS API Gateway的部署? 例如,如果我已經在API網關的AWS控制台中創建了一個名為“ V1”的階段,那么我將如何編寫腳本來部署該階段(“ V1”)?

當前過程涉及從AWS控制台手動部署階段,並且無法編寫腳本。 為了實現自動化,我希望有一個腳本可以執行相同的操作。

查閱Boto3文檔,我發現有一種創建階段的方法( http://boto3.readthedocs.io/en/latest/reference/services/apigateway.html#APIGateway.Client.create_stage ),但是沒有一種方法可以用於部署階段。

要部署典型的(API網關/ Lambda),我建議使用AWS SAM,而不是編寫自己的代碼。

它甚至支持Swagger,您可以在SAM定義文件中定義階段。

例如

  ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: v1
      CacheClusterEnabled: true
      CacheClusterSize: "0.5"
      DefinitionUri: "swagger.yaml"
      Variables:
        [...]
  [...]
  MyFunction:
    Type: AWS::Serverless::Function
       Properties:
           Handler: ratings.handler
                Runtime: python3.6
                Events:
                  Api:
                    Type: Api
                    Properties:
                      Path: /here
                      Method: get
                      RestApiId: !Ref ApiGatewayApi

使用AWS CLI可以輕松將部署集成到CD管道中

aws cloudformation package \
   --template-file path/example.yaml \
   --output-template-file serverless-output.yaml \
   --s3-bucket s3-bucket-name

aws cloudformation deploy \
   --template-file serverless-output.yaml \
   --stack-name new-stack-name \
   --capabilities CAPABILITY_IAM

另請參閱: 部署基於Lambda的應用程序

如果您要堅持通過特定的boto3 API調用進行部署,那么您需要遵循以下大致的boto3 API調用順序:

是的,您當前通過AWS瀏覽器控制台手動創建和部署api的方法不是很容易編寫腳本,但是您可以在控制台中單擊的幾乎所有內容都可以通過AWS cli完成 在我看來,您需要一個自動化的CI / CD管道。 一旦弄清楚了用aws cli可以運行什么命令,只需將它們添加到CI管道中就可以了。

但實際上,還有一種更簡單的方法。 轉到AWS Codestar 單擊“創建新項目”,然后選中“ Web Service”,“ Python”和“ AWS Lambda”。 截止到今天,只有一個Codestar模板適合所有這三個模板,因此請選擇一個模板。 這將使用一個開發環境搭建一個完整的CI / CD管道(AWS CodePipeline),並將其連接到git項目。 我認為這對您來說是個好方法,因此您可以利用dev-opsy自動化部署工具,而不必擔心在您的主項目上進行設置和維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM