[Für Anfänger] Sie können es von Grund auf neu machen! Erstellen von APIs mit AWS SAM und Ausgeben von Open API-Dokumenten in Python

Einführung

Zuvor habe ich den Ablauf der OpenAPI-Dokumenterstellung und der automatischen API-Generierung mit dem Swagger-Tool eingeführt. [Für Super-Anfänger] Sie können es in 5 Minuten versuchen! Automatische Generierung der OpenAPI (Swagger3.0) -Dokumenterstellungs-API

Diesmal mit AWS SAM (Serverless Application Model), API Gateway + AWS Lambda Erstellen Sie eine serverlose Web-API von / jp / api-gateway /) und geben Sie das OpenAPI-Dokument aus. Ich benutze AWS SAM zum ersten Mal. Ich werde es schreiben, damit ich es von Grund auf neu machen kann.

Was ist AWS SAM?

AWS Serverless Application Model (SAM) ist ein Open Source-Framework zum Erstellen von Anwendungen ohne Server. Sie können Funktionen, APIs, Datenbanken und Ereignisquellenzuordnungen in einer Syntax ausdrücken, die schnell geschrieben werden kann. Mit nur wenigen Zeilen pro Ressource können Sie jede Anwendung definieren und mit YAML modellieren. Während der Bereitstellung kann SAM die Erstellung von Anwendungen ohne Server beschleunigen, indem die SAM-Syntax in die AWS CloudFormation-Syntax konvertiert und erweitert wird.

Verwenden Sie die AWS SAM CLI, um SAM-basierte Anwendungen zu erstellen. Die SAM-CLI bietet eine Lambda-ähnliche Ausführungsumgebung, mit der Sie in SAM-Vorlagen lokal definierte Anwendungen erstellen, testen und debuggen können. Sie können Ihre Anwendung auch über die SAM-CLI in AWS bereitstellen.

https://aws.amazon.com/jp/serverless/sam/

Es scheint ein Framework zu sein, das die Verwendung von CloudFormation in serverlosen Anwendungen vereinfacht. API Gateway, AWS Lambda, [DynamoDB]( Sie können https://aws.amazon.com/jp/dynamodb/) auf einmal verwalten.

Annahme

OS:Mac AWS-Konto erstellt

Dinge die zu tun sind

  1. Umweltbau (pyenv, pipenv)
  2. Stellen Sie die AWS CLI zur Verfügung
  3. Aktivieren Sie die AWS SAM CLI
  4. Probieren Sie Hello World mit AWS SAM aus
  5. OpenAPI-Dokumentation ausgeben

Umweltbau (pyenv, pipenv)

1. Installieren Sie pyenv

$ brew install pyenv

Wenn Sie den Brew-Befehl nicht verwenden können, installieren Sie Homebrew wie folgt https://brew.sh/index_ja.html

2. Überprüfen Sie die Version von pyenv

$ pyenv --version
pyenv 1.2.15

3. Installieren Sie Python 3.7.0 mit pyenv

$ pyenv install 3.7.0

4. Wechseln Sie zu der mit pyenv installierten Version

Wenn es lokal ist, wird es im aktuellen Verzeichnis wiedergegeben, und wenn es global ist, wird es im Ganzen wiedergegeben.

$ pyenv global 3.7.0
$ pyenv local 3.7.0

5. Überprüfen Sie, ob es reflektiert wird

$ pyenv versions
  system
* 3.7.0 (set by /Users/yusaku/.pyenv/version)

6. Installation von pipenv

$ brew install pipenv

7. Rufen Sie die virtuelle Umgebung von pipenv auf

$ pipenv shell

Stellen Sie die AWS CLI zur Verfügung

1. Installieren Sie aws cli

$ pipenv install awscli

2. Überprüfen Sie die Version von aws cli

$ aws --version
aws-cli/1.16.294 Python/3.7.5 Darwin/19.0.0 botocore/1.13.30

3. Bestätigung der Zugangsschlüssel-ID und des geheimen Zugangsschlüssels

https://console.aws.amazon.com/iam/home?#/security_credentials Erstellen Sie einen Zugriffsschlüssel aus "Neuen Zugriffsschlüssel erstellen" in "Zugriffsschlüssel (Zugriffsschlüssel-ID und geheimer Zugriffsschlüssel)" und überprüfen Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel.

4. awscli Einstellungen

Stellen Sie mit den in 3 bestätigten Informationen ein. https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-welcome.html

$ aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json

Aktivieren Sie die AWS SAM CLI

1. Installieren Sie AWS SAM CLI

$ pipenv install aws-sam-cli

2. Überprüfen Sie die Version von AWS SAM CLI

sam --version
SAM CLI, version 0.34.0

Probieren Sie Hello World mit AWS SAM aus

Dieses Mal werde ich python3.7 verwenden, das in der pipenv-Umgebung installiert ist.

1. Anwendungsinitialisierung

$ sam init

	SAM CLI now collects telemetry to better understand customer needs.

	You can OPT OUT and disable telemetry collection by setting the
	environment variable SAM_CLI_TELEMETRY=0 in your shell.
	Thanks for your help!

	Learn More: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-telemetry.html

Which template source would you like to use?
	1 - AWS Quick Start Templates
	2 - Custom Template Location
Choice: 1

Which runtime would you like to use?
	1 - nodejs12.x
	2 - python3.8
	3 - ruby2.5
	4 - go1.x
	5 - java11
	6 - dotnetcore2.1
	7 - nodejs10.x
	8 - nodejs8.10
	9 - nodejs6.10
	10 - python3.7
	11 - python3.6
	12 - python2.7
	13 - java8
	14 - dotnetcore2.0
	15 - dotnetcore1.0
Runtime: 10

Project name [sam-app]: AWSsam_test    

Allow SAM CLI to download AWS-provided quick start templates from Github [Y/n]: y

-----------------------
Generating application:
-----------------------
Name: AWSsam_test
Runtime: python3.7
Dependency Manager: pip
Application Template: hello-world
Output Directory: .

Next steps can be found in the README file at ./AWSsam_test/README.md

2. Erstellen Sie die Anwendung

$ cd AWSsam_test/
$ sam build

3. Stellen Sie die Anwendung bereit

$ sam deploy --guided

Ab dem zweiten Mal ist "Sam Deploy" in Ordnung.

4. Funktionsprüfung

Versuchen Sie, in 3 auf die Endpunktausgabe zuzugreifen.

$ curl https://hoge.hoge-api.ap-northeast-1.amazonaws.com/Prod/hello/
{"message": "hello world"}

Hallo Welt ist zurück! Als ich mich bei der AWS-Konsole anmeldete und mir Lambda ansah, wurden API Gateway und Lambda wie unten gezeigt gestartet. スクリーンショット 2019-12-05 15.48.19.png

5. Versuchen Sie, die Lambda-Funktion mit einer geringfügigen Änderung auszuführen

Lassen Sie uns hello_world / app.py wie folgt ändern.

hello_world/app.py


import json

# import requests


def lambda_handler(event, context):
    return {
        "statusCode": 200,
        "body": json.dumps({
            "message": "hello Qiita",
            # "location": ip.text.replace("\n", "")
        }),
    }

Erstellen und bereitstellen.

$ sam build
$ sam deploy

Versuchen Sie, auf den Endpunkt zuzugreifen.

$ curl https://hoge.hoge-api.ap-northeast-1.amazonaws.com/Prod/hello/
{"message": "hello Qiita"}

Ich konnte bestätigen, dass die Änderungen reflektiert wurden.

OpenAPI-Dokumentation ausgeben

Wählen Sie in der AWS-Konsole Amazon API Gateway aus und wählen Sie die von Ihnen bereitgestellte API aus. Der folgende Bildschirm wird angezeigt. Klicken Sie auf die Bühne und wählen Sie Exportieren, um das Dokument Swagger-Spezifikation oder OpenAPI-Spezifikation im JSON-Format oder Yaml-Format auszugeben. スクリーンショット 2019-12-06 9.24.16.png

abschließend

Dieses Mal habe ich eine REST-API mit AWS SAM erstellt und das OpenAPI-Spezifikationsdokument exportiert. Im Gegenteil, ich möchte die OpenAPI-Spezifikation importieren und eine API mit AWS SAM erstellen. Es wird im folgenden Artikel vorgestellt, aber es scheint nicht so einfach zu sein. .. https://dev.classmethod.jp/cloud/aws/serverless-swagger-apigateway/

Referenz

Tutorial: Deploying a Hello World Application https://dev.classmethod.jp/cloud/aws/aws-sam-simplifies-deployment/

Recommended Posts

[Für Anfänger] Sie können es von Grund auf neu machen! Erstellen von APIs mit AWS SAM und Ausgeben von Open API-Dokumenten in Python
Überlegen Sie, wann Sie mit Python3 und Scala3 in 10 Jahren gute Arbeit leisten können.
Bis Sie Blender installieren und vorerst mit Python ausführen können
Wenn Sie TinderBot in Python schreiben, kann sie das tun
Überlegen Sie im Qiita-Artikel, was Sie mit Python tun können
Python | Was Sie mit Python machen können
Sie können es mit Python tun! Strukturanalyse zweidimensionaler kolloidaler Kristalle
Kann in 5 Minuten erledigt werden! Erstellen Sie eine Gesichtserkennungs-API mit Fast API und OpenCV und veröffentlichen Sie sie auf Heroku
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Wenn ihr in der Scope-Küche das mit einem Rand machen könnt ~ ♪
Kausales Denken und kausale Suche von Python (für Anfänger)
~ Tipps für Python-Anfänger mit Liebe von Pythonista ① ~
~ Tipps für Python-Anfänger mit Liebe von Pythonista ② ~
[Einführung für Anfänger] Umgang mit MySQL mit Python
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
Janken Poi in Python für Anfänger (Antworten und Erklärungen)
% Und str.format () in Python. Welches benutzt du?
Erhalten Sie E-Mails von Google Mail und beschriften Sie sie mit Python3
Was Sie mit Tensorflow 2.x tun können und was nicht
Lern-Roadmap, mit der Sie Services mit Python von Grund auf neu entwickeln und veröffentlichen können
Vorsichtsmaßnahmen bei der Eingabe von CSV mit Python und der Ausgabe an json, um exe zu erstellen
Setzen Sie Ubuntu in Raspi ein, setzen Sie Docker darauf und steuern Sie GPIO mit Python aus dem Container
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Was können Sie mit den Standardstatistiken der Python-Bibliothek tun?
Installieren Sie CaboCha in der Ubuntu-Umgebung und rufen Sie es mit Python auf.
[Für Anfänger] Baseball-Statistiken, die in 33 Minuten und 4 Sekunden gespeichert werden können, und PyData ~ mit Yojima Steel