🗺️
AWS CLI にて、API GW ベースパスマッピングを変更する
概要
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}"
細かなオプションの詳細は、公式ドキュメントを参照。
- aws cli : https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-base-path-mapping.html
- patch-operation : https://docs.aws.amazon.com/apigateway/latest/api/patch-operations.html
付録 ベースパスマッピング情報(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