Auparavant, j'ai introduit le flux de création de documents OpenAPI et de génération automatique d'API à l'aide de l'outil Swagger. [Pour les super débutants] Vous pouvez l'essayer en 5 minutes! Création automatique de documents OpenAPI (Swagger3.0) - génération automatique d'API
Cette fois, en utilisant AWS SAM (Serverless Application Model), API Gateway + AWS Lambda Créez une API Web sans serveur de / jp / api-gateway /) et sortez le document OpenAPI. C'est la première fois que j'utilise AWS SAM. Je vais l'écrire pour pouvoir le faire à partir de zéro.
AWS Serverless Application Model (SAM) est une infrastructure open source pour la création d'applications sans serveur. Vous pouvez représenter des fonctions, des API, des bases de données et des mappages de sources d'événements dans une syntaxe à description rapide. Avec seulement quelques lignes par ressource, vous pouvez définir n'importe quelle application et la modéliser à l'aide de YAML. Pendant le déploiement, SAM peut accélérer la construction d'applications sans serveur en convertissant et en étendant la syntaxe SAM à la syntaxe AWS CloudFormation.
Utilisez l'AWS SAM CLI pour commencer à créer des applications SAM. L'interface de ligne de commande SAM fournit un environnement d'exécution de type Lambda qui vous permet de créer, de tester et de déboguer localement des applications définies dans des modèles SAM. Vous pouvez également utiliser la CLI SAM pour déployer votre application sur AWS.
https://aws.amazon.com/jp/serverless/sam/
Cela semble être un cadre qui rend CloudFormation plus facile à utiliser dans les applications sans serveur. API Gateway, AWS Lambda, [DynamoDB]( Vous pouvez gérer https://aws.amazon.com/jp/dynamodb/) en une seule fois.
OS:Mac Compte AWS créé
$ brew install pyenv
Si vous ne pouvez pas utiliser la commande brew, installez Homebrew à partir de https://brew.sh/index_ja.html
$ pyenv --version
pyenv 1.2.15
$ pyenv install 3.7.0
S'il est local, il sera reflété dans le répertoire courant, et s'il est global, il sera reflété dans l'ensemble.
$ 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 Créez une clé d'accès depuis «Créer une nouvelle clé d'accès» dans «Clé d'accès (ID de clé d'accès et clé d'accès secrète)» et vérifiez l'ID de la clé d'accès et la clé d'accès secrète.
Réglez avec les informations confirmées en 3. 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
Cette fois, j'utiliserai python3.7 installé dans l'environnement pipenv.
$ 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
À partir de la deuxième fois, sam deploy
est OK.
Essayez d'accéder à la sortie du point de terminaison dans 3.
$ curl https://hoge.hoge-api.ap-northeast-1.amazonaws.com/Prod/hello/
{"message": "hello world"}
bonjour le monde est de retour! Lorsque je me suis connecté à la console AWS et que j'ai regardé Lambda, API Gateway et Lambda ont été démarrés comme indiqué ci-dessous.
Changeons hello_world / app.py
comme suit.
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", "")
}),
}
Construisez et déployez.
$ sam build
$ sam deploy
Essayez d'accéder au point de terminaison.
$ curl https://hoge.hoge-api.ap-northeast-1.amazonaws.com/Prod/hello/
{"message": "hello Qiita"}
J'ai pu confirmer que les changements étaient reflétés.
Sélectionnez Amazon API Gateway dans la console AWS et sélectionnez l'API que vous avez déployée. L'écran suivant s'affiche: Cliquez sur l'étape et sélectionnez Exporter pour sortir la spécification Swagger ou le document de spécification OpenAPI au format json ou yaml.
Cette fois, j'ai créé une API REST avec AWS SAM et exporté le document de spécification OpenAPI. Au contraire, je souhaite importer la spécification OpenAPI et créer une API à l'aide d'AWS SAM. Il est présenté dans l'article suivant, mais cela ne semble pas si simple. .. 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