W jaki sposób chodzę za automatyzacją wdrażania bramy AWS API przez skrypt Pythona za pomocą Boto3? Na przykład, gdybym stworzył scenę o nazwie "V1" w konsoli AWS dla bramy API, w jaki sposób piszę skrypt, aby wdrożyć ten etap ("V1")?

Obecny proces obejmuje ręczne wdrażanie sceny z konsoli AWS i nie jest pisma pismowe. Dla celów automatyzacji chciałbym mieć skrypt do tego samego.

Doradztwo w dokumentacji Boto3, widzę, że istnieje sposób tworzenia sceny (http://boto3.readthedocs.io/en/latest/reference/services/apigation.html#apigation.client.create_stage), ale żaden do wdrożenia jednego.

2
Michael G. Morey 2 czerwiec 2018, 02:35

3 odpowiedzi

Najlepsza odpowiedź

Jeśli chcesz trzymać się wdrażania poprzez konkretne Boto3 Apirs , a następnie chcesz przestrzegać tej szorstkiej sekwencji połączeń API BOTO3:

  • Użyj get_rest_apis odzyskać identyfikator API.
  • Prawdopodobnie sprawdź, czy jest już wdrażany za pomocą {{x0 }}.
  • Użyj create_deployment Aby utworzyć wdrażanie. Użyj parametru stageName, aby określić etap, aby utworzyć.
  • Rozważmy za pomocą create_base_path_mapping w razie potrzeby.
  • Rozważ także za pomocą {X0}} Jeśli chcesz włączyć coś takiego jak rejestrowanie.
3
dmulter 4 czerwiec 2018, 19:31

Aby wdrożyć typową (API Gateway / Lambda), polecam AWS SAM, zamiast pisać własny kod.

Wspiera nawet swagger i możesz zdefiniować etapy w plikach definicji SAM.

Na przykład

  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

Wdrożenie jest łatwo integrowane z rurociągami CD przy użyciu AWS CLI

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

Zobacz także: Wdrażanie aplikacji opartych na Lambda

2
H6. 2 czerwiec 2018, 12:01

Tak, twój obecny sposób tworzenia i wdrażania API ręcznie przez konsolę przeglądarki AWS nie jest bardzo skrypta, ale prawie wszystko, co możesz kliknąć w konsolę, można zrobić za pomocą aws cli. Brzmi dla mnie jak chcesz zautomatyzowany rurociąg CI / CD. Gdy dowiesz się, jakie polecenia biegniesz z AWS CLI, po prostu dodaj je do rurociągu CI i powinieneś być dobry.

Ale w rzeczywistości jest jeszcze łatwiej. Idź do AWS Codestar. Kliknij "Utwórz nowy projekt" i sprawdź "Usługa Web", "Python" i "Aws Lambda". Na dzień dzisiejszy jest tylko jeden szablon Codestar, który pasuje do wszystkich trzech, więc wybierz ten. Spowoduje to rusztowanie pełnej rurociągu CI / CD (Codepipeline AWS) z jednym środowiskiem dev, podłączony do projektu GIT. Myślę, że byłby dla ciebie dobrym sposobem, dzięki czemu możesz wykorzystać dev-Opsy zautomatyzowane rzeczy bez konieczności martwi o konfigurowanie i utrzymanie tego na głównym projekcie.

1
Jim 2 czerwiec 2018, 04:15