[AWS][API Gateway] デプロイの説明文を変更する
AWS API Gatewayの、作成済みデプロイの説明文ですが、2024年12月12日現在、マネジメントコンソールからは変更ができません。
デプロイの説明文を変更したい場合は、現状、AWS CLIもしくはAWS SDKを使う必要があります。
この記事では、AWS CLIを使った方法を説明します。
AWS CLIでデプロイの説明文を変更する
aws apigateway update-deployment
コマンドで、次のように修正します:
aws apigateway update-deployment \
--rest-api-id <APIのID> \
--deployment-id <デプロイID> \
--patch-operations op=replace,path=/description,value="<修正後のデプロイ説明文>"
デプロイの説明文が、やや長めになる場合や、[
などのややこしい文字を含む場合は、JSONファイルを使った方法がよいでしょう。
aws apigateway update-deployment
コマンドの各オプションを指定したJSONファイルを用意して、それをaws apigateway update-deployment
コマンドの--cli-input-json
オプションで指定して実行します:
-
まず、
aws apigateway update-deployment
コマンドを--generate-cli-skeleton
オプションつきで実行し、出力をリダイレクトして雛形JSONファイルを作成します:雛形JSONファイル作成例(ファイル名は自由です)aws apigateway update-deployment --generate-cli-skeleton \ > ./update_deployment_foobar_description.json
コマンド「aws apigateway update-deployment --generate-cli-skeleton」の出力
aws apigateway update-deployment --generate-cli-skeleton
出力{ "restApiId": "", "deploymentId": "", "patchOperations": [ { "op": "add", "path": "", "value": "", "from": "" } ] }
-
1で作成した雛形JSONファイルを編集します:
./update_deployment_foobar_description.json(ファイル名は自由です){ "restApiId": "<APIのID>", "deploymentId": "<デプロイID>", "patchOperations": [ { "op": "replace", "path": "/description", "value": "[v1.0] 〇〇機能を実装" } ] }
-
2で作成したJSONファイルを
--cli-input-json
オプションで指定し、aws apigateway update-deployment
コマンドを実行します:コマンド例(JSONファイル名は自由です)aws apigateway update-deployment \ --cli-input-json file://./update_deployment_foobar_description.json
【補足】デプロイ情報の確認方法
AWS CLIで確認する
特定のデプロイの情報を確認する場合は、aws apigateway get-deployment
コマンドを使います:
aws apigateway get-deployment \
--rest-api-id <APIのID> \
--deployment-id <デプロイID>
デプロイ情報の一覧を確認する場合は、aws apigateway get-deployments
コマンドを使います:
aws apigateway get-deployments \
--rest-api-id <APIのID>
マネジメントコンソールから確認する
-
API Gatewayのマネジメントコンソール左ペインの「API」からAPI一覧を開き、APIを選択します:
-
左ペインから「ステージ」を選択します:
-
ステージ画面の下部、「デプロイ履歴」タブをクリックすると、デプロイの一覧を見ることができます。
【補足】デプロイとステージの関係
マネジメントコンソールでAPI Gatewayに触れていると、デプロイの一覧を直接確認する画面が存在せず、ステージの画面から間接的にデプロイの一覧を見るしかないので、デプロイとステージの関係がややわかりづらいです(2024年12月12日現在)。ここで補足しておきます。
結論から言うと、「まず一本のデプロイのストリームが存在し、各ステージはその中のどこかの一つのデプロイを指す」というしくみで、デプロイとステージは一対多の関係にあります。
つまりステージよりもデプロイの方が大元の概念です。
実際、マネジメントコンソールコンソールでAPIのデプロイを作成するとき、「ステージなし」デプロイを作成できます。
個人的には、本来は「デプロイ履歴」の画面がある方が自然だと思いますが、前述のとおり、現時点では残念ながらマネジメントコンソールには存在せず、「ステージ」画面から間接的にデプロイ履歴の一覧を確認できるのみとなります。
(とあるスポーツリーグで、リーグのチーム一覧を、各選手のプロフィール画面の『所属チーム』の画面からしか見られない、というような状態。)
参考
aws apigateway update-deployment
コマンド
デプロイの説明文を変更する際に使用するコマンドです。
--patch-operations
で指定する属性と値について
aws apigateway update-deployment
では、op=replace,path=/description
の組み合わせのみ、指定できます:
(補足)API GatewayのAPI Reference
-
Amazon API Gateway > API Reference > Actions > UpdateDeployment
https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateDeployment.html
-
Amazon API Gateway > API Reference > Data Types > PatchOperation
https://docs.aws.amazon.com/apigateway/latest/api/API_PatchOperation.html
aws apigateway get-deployment
コマンド
特定のデプロイの情報を確認する際に使用するコマンドです。
aws apigateway get-deployments
コマンド
デプロイ情報の一覧を確認する際に使用するコマンドです。
--input-cli-json
オプションに指定するパラメータについて
--input-cli-json
オプションにJSONファイルを指定する場合、そのパスにfile://
プレフィックスを付ける必要があります。
- Run the command with the completed parameters by passing the completed template file to either the --cli-input-json or --cli-input-yaml parameter by using the file:// prefix. The AWS CLI interprets the path to be relative to your current working directory, so in the following example that displays only the file name with no path, it looks for the file directly in the current working directory.
このページへのリンクは各コマンドのドキュメントページの--input-cli-json
オプションのところに掲載されていないので、わかりづらいです。「--input-cli-json
オプションの説明は、独立したページがある」ということを覚えておくとよいでしょう。
ちなみに、--input-cli-json
オプションには、JSON文字列をシングルクォート'
で囲った文字列を直接パラメータとして指定できますが、取り回ししづらいですしミスの元なので、素直にJSONファイルを作成しましょう。
Discussion