terraform構築手順〜API Gateway 編〜 - 株式会社CoLabMix

terraform構築手順〜API Gateway 編〜

開発部の「エイジ」です。

今回はterraformを使ってAPI Gatewayを構築する手順を書きたいと思います。

 

関連記事

 

terraformとは

公式

HashiCorpが手がける、インフラ構築や設定をコード(テンプレートファイル)を使って自動化するためのツールであり、 Infrastructure as Code を実現するOSSです。

 

APIとは

Application Programming Interfaceの略でありアプリケーションの連携をするのに用いられます

 

terraformを使用することのメリット

AWS等のGUIで設定せずコードで一気に作成ができ、また消去も再利用もすることができ大変便利です。
まずはTerraformのインストールから行います。

 

Terraformインストール

 

Homebrew でインストールします。

Terraformのバージョン確認


 

AWSの環境構築

今回はAWS CLIを利用するにあたりiamユーザーを作ります。

IAM ユーザーを作る

AWS CLIを使うのでプログラムによるアクセスにも☑️してください。

管理権限をAdministratorAccessにしてください。

無事作成できたら次にAWS CLIをインストールします。

 

AWS CLI

AWS CLIの設定

先ほど制作したiamユーザーの情報を登録します。


一つづづ先ほど作成したiamユーザーから設定していきます。

 

Terraformを作成する。

 

これからAPI Gateway作成までを書いていきます。

まずはTerraformのコマンドを記します。

まずはTerraformを書き込むファイルを作成します。

※Terraformは拡張子が.tfのファイルを自動的にテンプレートとして認識してくれます。

 

API Gateway の宣言

aws_api_gateway_rest_apiを宣言します。

コマンドを実行します。


実際にAWS上で確かめると作成されています。

次にリソースの設定をしていきます。

aws_api_gateway_resourceの宣言

リソースとはAPIのパスです。リソースを指定することで任意のパスを作ることができます。

実行するとルートの直下へ/mydemoresourceが作成されます。

 

aws_api_gateway_methodの宣言

ここでは受け付けることができるクエリパラメータや必須のパラメータ, 認可の有無, API Keyの有無... などと実際に受け付けるリクエストを絞り込む, いわばリクエストの受付のような役割を担います.

Amazon API Gateway は何をしてるのか

リソースで指定した物にメソッドを付与します。今回はGETを指定いたします。

aws_api_gateway_integrationの宣言

統合リクエストではバックエンドへどのように繋ぐのか決めます。

ntegration Requestはどのバックエンドにどのようにデータを渡すかを決定します. バックエンドとは例えばLambda関数やAWSサービスなどといった実際にリクエストを処理するコンポーネントのことです.

Amazon API Gateway は何をしてるのか

統合ポイントのtypeを指定します。今回はMOCKを指定しました。

 

 

aws_api_gateway_integration_responseの宣言

バックエンドから返ってきたレスポンスに関する設定を行います. 例えばHTTPステータスコードをマッピングしたり, レスポンスの内容の変換を行ったりします.

Amazon API Gateway は何をしてるのか

 

aws_api_gateway_method_responseの宣言

クライアントから受け取ったリクエストに対するAPI Gatewayの最終的なレスポンスをここで定義します. ステータスコードやHTTPヘッダなどといった部分です.

Amazon API Gateway は何をしてるのか

レスポンスのステータスコードを設定します。

最後にデプロイをします。

aws_api_gateway_deploymentの宣言

そして実行すると作成されます。

 

 

以上になります。お読みいただきありがとうございました。

 

 

このブログは株式会社CoLabMixによる技術ブログです。

GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。

Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。

開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。

お問い合わせやご依頼・ご相談など

    関連記事

    1. AWS Lambda でS3にファイルがアップロードされたら、加工して…

    2. Rails5.2.0(Beta)のインストール

    3. scrapy-redisを使って、redisを使ったクローリングを試…

    4. AkismetのスパムフィルタをpythonとDjangoで実装

    5. autditbeatをcentos7にインストールして監査ログをとって…

    6. CentOS7 に Hadoop と Mahout を入れて機械学習を…