

# REST API コンソールの使用を開始する
<a name="getting-started-rest-new-console"></a>

この入門演習では、API Gateway REST API コンソールを使用してサーバーレス REST API を作成します。サーバーレス API を使用すると、サーバーのプロビジョニングや管理に時間をとられる事なく、アプリケーションに集中することができます。このエクササイズの所要時間は 20 分未満で、[AWS の無料利用枠内](https://aws.amazon.com/free/)で実行できます。

まずはじめに、Lambda コンソールを使用して Lambda 関数を作成します。次に、API Gateway REST API コンソールを使用してREST API を作成します。次に、API メソッドを作成し、Lambda プロキシ統合を使用して Lambda 関数と統合します。最後に、API をデプロイして呼び出します。

REST API を呼び出すと、API Gateway はリクエストを Lambda 関数にルーティングします。Lambda は関数を実行し、API Gateway に応答を返します。それから API Gateway はレスポンスを返します。

![\[このチュートリアルで作成する REST API の概要。\]](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/getting-started-overview-rest.png)


この演習を完了するには、AWS アカウント アカウントと、コンソールへのアクセス権がある AWS Identity and Access Management (IAM) ユーザーが必要です。詳細については、「[API Gateway を使用するようにセットアップする](setting-up.md)」を参照してください。

**Topics**
+ [ステップ 1: Lambda 関数を作成する](#getting-started-rest-new-console-create-function)
+ [ステップ 2: REST API を作成する](#getting-started-rest-new-console-create-api)
+ [ステップ 3: Lambda プロキシ統合を作成する](#getting-started-rest-new-console-create-integration)
+ [ステップ 4: API をデプロイする](#getting-started-rest-new-console-deploy)
+ [ステップ 5: API を呼び出す](#getting-started-rest-new-console-invoke-api)
+ [(オプション) ステップ 6: クリーンアップする](#getting-started-cleanup-rest)

## ステップ 1: Lambda 関数を作成する
<a name="getting-started-rest-new-console-create-function"></a>

API のバックエンドには Lambda 関数を使用します。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。

この演習では、Lambda コンソールで既定の Node.js 関数を使用します。

**Lambda 関数を作成するには**

1. Lambda コンソール ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda)) にサインインします。

1. [**Create function**] を選択します。

1. [**基本的な情報**] の [**関数名**] に「**my-function**」と入力します。

1. 他のすべてのオプションについては、デフォルトの設定を使用します。

1. [**関数の作成**] を選択してください。

デフォルトの Lambda 関数コードは、次のようになります。

```
export const handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('The API Gateway REST API console is great!'),
    };
    return response;
};
```

この演習の関数の応答が [API Gateway が必要とする形式](set-up-lambda-proxy-integrations.md#api-gateway-simple-proxy-for-lambda-output-format)と一致している限り、Lambda 関数を変更できます。

デフォルトのレスポンスの本文 (`Hello from Lambda!`) を `The API Gateway REST API console is great!` に置き換えます。サンプル関数を呼び出すと、更新されたレスポンスとともにクライアントに `200` レスポンスが返されます。

## ステップ 2: REST API を作成する
<a name="getting-started-rest-new-console-create-api"></a>

次に、ルートリソース (`/`) を使用して REST API を作成します。

**REST API を作成するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. 次のいずれかを行います。
   + 最初の API を作成するには、**[REST API]** で **[ビルド]** を選択します。
   + 以前に API を作成した場合は、**[API の作成]** を選択し、**REST API]** の **[ビルド]** を選択します。

1.  [**API 名**] に「**my-rest-api**」と入力します。

1. (オプション) **[説明]** に説明を入力します。

1. **[API エンドポイントタイプ]** を **[リージョン別]** に設定したままにします。

1. **[IP アドレスの種類]** には **[IPv4]** を選択します。

1. **[API の作成]** を選択します。

## ステップ 3: Lambda プロキシ統合を作成する
<a name="getting-started-rest-new-console-create-integration"></a>

次に、ルートリソース (`/`) に REST API の API メソッドを作成し、プロキシ統合を使用して Lambda 関数とそのメソッドと統合します。Lambda プロキシ統合では、API Gateway はクライアントからの受信リクエストを直接Lambda関数に渡します。

**Lambda プロキシ統合を作成するには**

1. `/` リソースを選択し、**[メソッドの作成]** を選択します。

1. **[メソッドタイプ]** では、`ANY` を選択します。

1. **[統合タイプ]** で、**[Lambda 関数]** を選択します。

1. **[Lambda プロキシ統合]**を有効にします。

1. **[Lambda 関数]**に「**my-function**」と入力し、Lambda 関数を選択します。

1. **[メソッドの作成]** を選択します。

## ステップ 4: API をデプロイする
<a name="getting-started-rest-new-console-deploy"></a>

次に、API デプロイを作成し、それをステージに関連付けます。

**API をデプロイするには**

1. [**API のデプロイ**] を選択します。

1. **[ステージ]** で **[新規ステージ]** を選択します。

1. [**Stage name (ステージ名)**] に **Prod** と入力します。

1. (オプション) **[説明]** に説明を入力します。

1. **[デプロイ]** をクリックします。

これで、クライアントは API を呼び出すことができます。API をデプロイする前に API をテストするには、オプションで **ANY** メソッドを選択し、**[テスト]** タブに移動して **[テスト]** を選択することもできます。

## ステップ 5: API を呼び出す
<a name="getting-started-rest-new-console-invoke-api"></a>

**API を呼び出すには**

1. メインのナビゲーションペインで、**[ステージ]** を選択します。

1. **[ステージの詳細]** で、コピーアイコンを選択して API の呼び出し URL をコピーします。  
![\[REST API を作成すると、コンソールに API の呼び出し URL が表示されます。\]](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/getting-started-rest-invoke-url.png)

1. ウェブブラウザに呼び出し URL を入力します。

   URL は次のようになります。`https://abcd123.execute-api.us-east-2.amazonaws.com/Prod`

   ブラウザが API に`GET`リクエストを送信します。

1. API の応答を確認します。ブラウザにテキスト`"The API Gateway REST API console is great!"`が表示されるはずです。

## (オプション) ステップ 6: クリーンアップする
<a name="getting-started-cleanup-rest"></a>

AWS アカウント にかかる不要なコストを回避するには、この演習で作成したリソースを削除します。次の手順では、REST API、Lambda 関数、および関連リソースを削除します。

**REST API を削除するには**

1. **[リソース]** ペインで、**[API アクション]**、**[API の削除**] を選択します。

1. **[API の削除]** ダイアログボックスに「**確認**」と入力し、**[削除]** を選択します。

**Lambda 関数を削除するには**

1. Lambda コンソール ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda)) にサインインします。

1. **[関数]** ページで、関数を選択します。**[アクション]**、**[削除]** の順に選択します。

1. **[1 関数の削除]** ダイアログボックスに「**delete**」と入力し、**[削除]** を選択します。

**Lambda 関数のロググループを削除するには**

1. Amazon CloudWatch コンソールで、[[Log groups (ロググループ)] ページ](https://console.aws.amazon.com/cloudwatch/home#logs:)を開きます。

1. **[ロググループ]** ページで、関数のロググループ (`/aws/lambda/my-function`) を選択します。**[アクション]** で、**[ロググループの削除]** を選択します。

1. **[ロググループの削除]** ダイアログボックスで、**[削除]** をクリックします。

**Lambda 関数の実行ロールを削除するには**

1. IAM コンソールの [[ロール]](https://console.aws.amazon.com/iam/home?#/roles) ページを開きます。

1. (オプション) **[ロール]** ページの検索ボックスに、「**my-function**」と入力します。

1. 関数のロール (例:`my-function-31exxmpl`) を選択し、**[削除]** を選択します。

1. **[`my-function-31exxmpl` を削除しますか?]** ダイアログボックスにロール名を入力し、**[削除]** を選択します。

**ヒント**  
AWS CloudFormation または AWS Serverless Application Model (AWS SAM) を使用して、AWS リソースの作成とクリーンアップを自動化できます。いくつかのサンプル CloudFormationテンプレートについては、**awsdocs** GitHub リポジトリにある [API Gateway のサンプルテンプレート](https://github.com/awsdocs/amazon-api-gateway-developer-guide/tree/main/cloudformation-templates)を参照してください。