aws cli で API Gateway の API を作成する

次のページの手順をなぞってみました。
[AWS CLI コマンドを使用して API を作成する](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/create-api-using-awscli.html)

異なるのは、リージョンと、テストに curl を使う点です。

次のリソースにアクセスするAPI を作成します。
>http://petstore-demo-endpoint.execute-api.com/petstore/pets

1) RestApi を作成。出力にrest-api-id　が表示される

```bash:create_api.sh
aws apigateway create-rest-api --name 'Sample AAA' \
	--region ap-northeast-1 > out01.txt
```

2) RestApi のルートリソース ID を取得

```bash:get_resources.sh
#
TMP_ID=$(jq .id out01.txt)
echo $TMP_ID
REST_API_ID=${TMP_ID//\"/}
echo $REST_API_ID
#
aws apigateway get-resources --rest-api-id $REST_API_ID \
	--region ap-northeast-1 > out02.txt
#
```

3) GET / の Method リクエストを作成

```bash:put_method.sh
#
#	put_method.sh
#
TMP_ID=$(jq .id out01.txt)
echo $TMP_ID
REST_API_ID=${TMP_ID//\"/}
echo $REST_API_ID
#
TMP_ID=$(jq .items[0].id out02.txt)
echo $TMP_ID
RESOURCE_ID=${TMP_ID//\"/}
echo $RESOURCE_ID
#
aws apigateway put-method \
	--rest-api-id $REST_API_ID \
	--resource-id $RESOURCE_ID \
	--http-method GET \
	--authorization-type "NONE" \
	--region ap-northeast-1
#
```

4) GET / メソッドの MethodResponse を作成

```bash:put_method_response.sh
#
#	put_method_response.sh
#
TMP_ID=$(jq .id out01.txt)
echo $TMP_ID
REST_API_ID=${TMP_ID//\"/}
echo $REST_API_ID
#
TMP_ID=$(jq .items[0].id out02.txt)
echo $TMP_ID
RESOURCE_ID=${TMP_ID//\"/}
echo $RESOURCE_ID
#
aws apigateway put-method-response \
	--rest-api-id $REST_API_ID \
	--resource-id $RESOURCE_ID \
	--http-method GET \
	--status-code 200 \
	--region ap-northeast-1
#
#
```

5) Integration を作成

```bash:put_integration.sh
#
#	put_integration.sh
#
TMP_ID=$(jq .id out01.txt)
echo $TMP_ID
REST_API_ID=${TMP_ID//\"/}
echo $REST_API_ID
#
TMP_ID=$(jq .items[0].id out02.txt)
echo $TMP_ID
RESOURCE_ID=${TMP_ID//\"/}
echo $RESOURCE_ID
#
aws apigateway put-integration \
	--rest-api-id $REST_API_ID \
	--resource-id $RESOURCE_ID \
	--http-method GET \
	--type HTTP --integration-http-method GET \
	--uri 'http://petstore-demo-endpoint.execute-api.com/petstore/pets' \
	--region ap-northeast-1
#
```

ここの　http://petstore-demo-endpoint.execute-api.com/petstore/pets
を変更すれば、出力が変わります。

6) IntegrationResponse を作成

```bash:put_integration_response.sh
#
#	put_integration_response.sh
#
TMP_ID=$(jq .id out01.txt)
echo $TMP_ID
REST_API_ID=${TMP_ID//\"/}
echo $REST_API_ID
#
TMP_ID=$(jq .items[0].id out02.txt)
echo $TMP_ID
RESOURCE_ID=${TMP_ID//\"/}
echo $RESOURCE_ID
#
aws apigateway put-integration-response \
	--rest-api-id $REST_API_ID \
	--resource-id $RESOURCE_ID \
	--http-method GET \
	--status-code 200 --selection-pattern "" \
	--region ap-northeast-1
#
```

7) デプロイ

```bash:create_deploy.sh
#
#	cretate_deploy.sh
#
TMP_ID=$(jq .id out01.txt)
echo $TMP_ID
REST_API_ID=${TMP_ID//\"/}
echo $REST_API_ID
#
#
aws apigateway create-deployment \
	--rest-api-id $REST_API_ID \
	--stage-name test \
	--stage-description 'Test stage' \
	--description 'First deployment'
#
```

8) テスト

```bash
curl https://1awvlqh2bb.execute-api.ap-northeast-1.amazonaws.com/test
```

テスト結果

```json
[
  {
    "id": 1,
    "type": "dog",
    "price": 249.99
  },
  {
    "id": 2,
    "type": "cat",
    "price": 124.99
  },
  {
    "id": 3,
    "type": "fish",
    "price": 0.99
  }
]
```

>これは、次で得られる結果と同じです。

>```bash
curl http://petstore-demo-endpoint.execute-api.com/petstore/pets
```


9) 作成された API の一覧

```bash
aws apigateway get-rest-apis
```

10) 作成した API の削除

```bash:delete_api.sh
TMP_ID=$(jq .id out01.txt)
echo $TMP_ID
REST_API_ID=${TMP_ID//\"/}
echo $REST_API_ID
#
aws apigateway delete-rest-api --rest-api-id $REST_API_ID
```

次のバージョンで確認しました。

```text
$ aws --version
aws-cli/2.2.41 Python/3.8.8 Linux/5.14.7-arch1-1 exe/x86_64.arch prompt/off
```