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.
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.
OS:Mac AWS-Konto erstellt
$ brew install pyenv
Wenn Sie den Brew-Befehl nicht verwenden können, installieren Sie Homebrew wie folgt https://brew.sh/index_ja.html
$ pyenv --version
pyenv 1.2.15
$ pyenv install 3.7.0
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
$ pyenv versions
system
* 3.7.0 (set by /Users/yusaku/.pyenv/version)
$ brew install pipenv
$ pipenv shell
$ pipenv install awscli
$ aws --version
aws-cli/1.16.294 Python/3.7.5 Darwin/19.0.0 botocore/1.13.30
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.
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
$ pipenv install aws-sam-cli
sam --version
SAM CLI, version 0.34.0
Dieses Mal werde ich python3.7 verwenden, das in der pipenv-Umgebung installiert ist.
$ 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
$ cd AWSsam_test/
$ sam build
$ sam deploy --guided
Ab dem zweiten Mal ist "Sam Deploy" in Ordnung.
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.
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.
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.
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/
Tutorial: Deploying a Hello World Application https://dev.classmethod.jp/cloud/aws/aws-sam-simplifies-deployment/
Recommended Posts