[AWS Labs探訪] API Developer PortalをAWSで構築する
AWSのサービスを利用して、APIの開発者ポータルを構築するプロジェクトを実行してみます。 AWS Labs探訪とは GitHubには、[awslabs]というAWSが公開しているOrganizationsがあります。こ […]
目次
AWSのサービスを利用して、APIの開発者ポータルを構築するプロジェクトを実行してみます。
AWS Labs探訪とは
GitHubには、[awslabs]というAWSが公開しているOrganizationsがあります。ここにはAWSサービスを利用したサンプルコードや新しいSDK、オフィシャルイベントで開催されたワークショップのサンプルコードといった様々なコードが公開されています。有名所では、SAMなどもこのOrganizationsにホストされています。
ここにはそのまま使えるものからprodで使うなと書かれたものまで玉石混交です。AWS Labs探訪は、ここにDiveしてみて仕事に使えそうなものがないか探してみようという企画です。
今回紹介するプロジェクト
AWS API Gateway Developer Portal
SAMを用いて、APIの開発者ポータルを作ることができるプロジェクトです。
プロジェクトをセットアップする
まずはGitからダウンロードします。
$ git clone [email protected]:awslabs/aws-api-gateway-developer-portal.git
$ cd aws-api-gateway-developer-portal
$ npm install
SAMでプロジェクトをAWSへデプロイ
SAMでリソースが管理されていますので、sam package
-> sam deploy
でAWSへデプロイします。parameter-overrides
やs3-bucket
など、書換が必要な箇所がいくつかありますので注意してください。
$ sam package --template-file ./cloudformation/template.yaml \
--output-template-file ./cloudformation/packaged.yaml \
--s3-bucket YOUR_S3_BUCKET_NAME
$ sam deploy --template-file ./cloudformation/packaged.yaml \
--stack-name YOUR_STACK_NAME \
--s3-bucket YOUR_S3_BUCKET_NAME \
--capabilities CAPABILITY_NAMED_IAM \
--parameter-overrides DevPortalSiteS3BucketName="custom-prefix-dev-portal-static-assets" ArtifactsS3BucketName="custom-prefix-dev-portal-artifacts" CognitoDomainNameOrPrefix="custom-prefix"
--parameter-overrides
で指定するS3BucketName
が2つありますが、作成済みのバケット名を指定すると、エラーになりますのでこちらも要注意です。
sam deploy
はCloudFrontを作成する関係でかなり時間がかかります。ちょっと休憩するくらいがよいでしょう。
Successfully created/updated stack - STACK_NAME
が表示されたら完了です。
開発者ポータルへアクセスする
ドキュメントにウェブサイトのURLを取得する方法が記載されているので、試してみましょう。
$ aws cloudformation describe-stacks --query "Stacks[?StackName=='YOUR_STACK_NAME'][Outputs[?OutputKey=='WebsiteURL']][][].OutputValue"
[
"https://xxxxxx.cloudfront.net"
]
この状態ではまだAPIはなにも登録されていません。
Registerでアカウントを作ることができますが、Cognito User Pools管理画面から、Groupに追加しないとAPI管理ができません。
Admin Panel
が表示されると、デプロイされているAPIからデプロイするかしないかなどを設定できます。
APIの表示はSwagger UIに近いです。
使いどころなど
Developer Portal(開発者ポータル)の名前の通り、APIのポータルサイトが作れます。API Keyを発行して、使用量プランの設定などもできるみたいですので、そのあたりもこれから触っていこうと思います。
カスタマイズ領域としては、APIキーを有料化するところなどでしょうか。
StripeやWeb Payなどのフォームを追加して、契約状況に応じたAPIの表示などをカスタマイズできるとよいかなと思います。