🗺️

AWS CLI にて、API GW ベースパスマッピングを変更する

2024/02/03に公開

概要

AWS CLI にて API Gateway のベースパスマッピングを変更する方法にて調査しました。

サンプルコードがあまり見当たらない & 公式ドキュメントの読解に少し時間を要したため、備忘録がてらスクリプトのサンプルを載せます。

サンプルコード

#!/bin/bash

set -eu

function arrange_update_option() {
  local restapiId="hoge"
  local basepath="fuga"
  local stage="hogera"

  update_option=$(cat <<< "
    [
      {
        'op': 'replace',
        'path': '/restapiId',
        'value': '$restapiId'
      },
      {
        'op': 'replace',
        'path': '/basePath',
        'value': '$basepath'
      },
      {
        'op': 'replace',
        'path': '/stage',
        'value': '$stage'
      }
    ]
  " | tr "'" "\"")

  echo $update_option
}

update_option=$(arrange_update_option)

domain_name="" ## BasePathMapping を変更したいカスタムドメインのドメイン名
base_path="" ## 変更したい BasePathMapping リソースのベースパス。

aws apigateway update-base-path-mapping --domain-name ${domain_name} --base-path "${base_path}" --patch-operation "${update_option}"

細かなオプションの詳細は、公式ドキュメントを参照。

付録 ベースパスマッピング情報(basePath,restApiId,stage)を取得するスクリプト

#!/bin/bash

set -eu

domain_name=""
base_path=""
export $(
    printf "basepath=%s restapiId=%s stage=%s" $(
      aws apigateway get-base-path-mapping --domain-name ${domain_name} --base-path "${base_path}" --query '[basePath,restApiId,stage]' --output text
    )
)
echo $basepath
echo $restapiId
echo $stage

お察しの方もおられるかもしれませんが、
aws cli にて、カスタムドメインのベースパスマッピングを入れ替えるスクリプトを組んでおりました。

export 部分の詳細は、拙著 https://zenn.dev/t0mmy/articles/handled_variables_aws_cli_by_shell を参照ください。

参考文献

Discussion