[アップデート] AWS Client VPN のデスクトップクライアントが v6.0 にメジャーアップデートし CLI 対応になりました
いわさです。
AWS VPN Client(デスクトップクライアントアプリケーション)はこれまで GUI でしか操作できず、VPN 接続の自動化やプロファイルの一括配布をやろうとするとサードパーティツールの導入や手動対応が必要でした。
今回のアップデートで AWS VPN Client が v6.0 にメジャーアップデートされ、aws-vpn-client というCLI コマンドが追加されました。
プロファイルのインポート・VPN 接続・切断・ステータス確認など、GUI でやっていた操作がすべてコマンドラインから実行できるようになっています。
今回こちらを確認してみたので紹介します。
実際に確認してみる
インストール
リリースノートのページから最新版(6.0.2)の pkg ファイルをダウンロードしてインストールしました。
M1 Max の macOS 環境で検証しています。
AWS VPN Client のインストーラーで GUI アプリをインストールすると、CLI バイナリも一緒にインストールされます。
/usr/local/bin/aws-vpn-client にパスが通った状態になっていました。
$ aws-vpn-client --version
aws-vpn-client 6.0.2
ヘルプを見てみます。
$ aws-vpn-client --help
CLI for the AWS VPN Client
Usage: aws-vpn-client <COMMAND>
Commands:
connect Connect a profile through the AWS VPN Client
disconnect Disconnect a profile from the AWS VPN Client
delete-profile Delete a profile from the AWS VPN Client
import-profile Import a VPN connection profile
list-profiles List all VPN profiles
get-config Get configuration for a profile
put-preference Put a preference value
list-preferences List all preferences
get-connection-status Get the current connection status for a VPN profile
list-connections List all active VPN connections
send-diagnostic-logs Send diagnostic logs to AWS for troubleshooting
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
これまで GUI でやっていた操作がコマンドとして並んでいますね。
プロファイルのインポートと接続
検証用に Client VPN エンドポイントを相互認証で作成し、エクスポートした .ovpn ファイルを CLI でインポートしてみます。
$ aws-vpn-client import-profile --profile-name "hoge-vpn-test" --config-path /tmp/vpn-certs/hoge-vpn.ovpn
{
"status": "Success"
}
インポートしたプロファイルを一覧で確認します。
$ aws-vpn-client list-profiles
[
{
"profile-name": "hoge-vpn-test",
"owned-by": "iwasa.takahito",
"auth-type": "ma",
"imported-at": "2026-08-25T05:02:03+09:00"
}
]
出力は JSON 形式なので jq 等でパースしやすいです。
では接続してみましょう。
$ aws-vpn-client connect --profile-name "hoge-vpn-test"
{
"status": "Connected"
}
接続できました。ステータスも確認してみます。
$ aws-vpn-client get-connection-status --profile-name "hoge-vpn-test"
{
"connection-status": "Connected",
"latest-connection-attempt": {
"initiated-by": "iwasa.takahito",
"updated-at": "2026-08-25T05:02:41+09:00"
}
}
--show-details オプションを付けるとトンネルのバイト統計情報も取得できるとのことです。
切断します。
$ aws-vpn-client disconnect --profile-name "hoge-vpn-test"
成功時は出力なしで終了コード 0 が返ります。
$ aws-vpn-client get-connection-status --profile-name "hoge-vpn-test"
{
"connection-status": "NotConnected",
"latest-connection-attempt": {
"initiated-by": "iwasa.takahito",
"updated-at": "2026-08-25T05:05:09+09:00"
}
}
GUI を開かずにプロファイルのインポートから接続・切断まで一通りできますね。
プロファイルの設定内容確認と削除
get-config でインポート済みプロファイルの OpenVPN 設定内容を確認できます。
$ aws-vpn-client get-config --profile-name "hoge-vpn-test"
client
dev tun
proto udp
remote cvpn-endpoint-07c8167fa3309ca52.prod.clientvpn.ap-northeast-1.amazonaws.com 443
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>
reneg-sec 0
verify-x509-name vpn.hoge.example.com name
<cert>
...
</cert>
<key>
...
</key>
プロファイルの削除もコマンドラインから。
$ aws-vpn-client delete-profile --profile-name "hoge-vpn-test"
管理者コントロール
今回のアップデートでは CLI にあわせて、デバイス単位で VPN の設定を制御する管理者コントロール機能も追加されています。
ここでいう「管理者」は AWS 側の管理者ではなく、OS 上の管理者権限(macOS/Linux の root、Windows の Administrator)のことです。
IT 管理者が MDM 等で各デバイスにプロファイルを事前配布しておいて、エンドユーザーには接続だけさせる、みたいな運用を想定しているようですね。
list-preferences で現在の設定を確認できます。
$ aws-vpn-client list-preferences
{
"enable-telemetry": true,
"enable-user-profile-management": true,
"max-connections": 5
}
put-preference で設定を変更します。sudo が必要です。
$ sudo aws-vpn-client put-preference --key max-connections --value 3
$ aws-vpn-client list-preferences
{
"enable-telemetry": true,
"enable-user-profile-management": true,
"max-connections": 3
}
enable-user-profile-management を false にすると、sudo なしではプロファイルの追加・削除ができなくなります。
グローバルプロファイル(デバイス上の全ユーザーが使えるプロファイル)のインポートは --global フラグを付けます。
$ sudo aws-vpn-client import-profile --profile-name "hoge-global-vpn" --config-path /tmp/vpn-certs/hoge-vpn.ovpn --global
{
"status": "Success"
}
グローバルプロファイルは list-profiles で owned-by フィールドがない状態で表示されます。
$ aws-vpn-client list-profiles
[
{
"profile-name": "hoge-vpn-test",
"owned-by": "iwasa.takahito",
"auth-type": "ma",
"imported-at": "2026-08-25T05:02:03+09:00"
},
{
"profile-name": "hoge-global-vpn",
"auth-type": "ma",
"imported-at": "2026-08-25T05:06:22+09:00"
}
]
さいごに
本日は AWS VPN Client v6.0 で追加された CLI を確認してみました。
これまで GUI でしかできなかった操作がコマンドラインから実行できるようになりました。
アナウンスでは以下のようなユースケースが挙げられています。
You can now script VPN connections into your automation workflows and infrastructure-as-code deployments.
自動化ワークフローや IaC のデプロイで VPN 接続をスクリプト化できますよ、ということみたいです。
出力が JSON で終了コードも 0/1/2 で固定されているので、シェルスクリプトに組み込みやすい作りになっています。
ちなみに今回の v6.0 では内部アーキテクチャが OpenVPN3 ベースに刷新されています。
AWS のブログ[1]によると、接続確立時間が macOS で約42%(4.25s→2.46s)、Windows で約30%(20.44s→14.20s)高速化されたとのことです。
GUI と CLI は同じデーモンプロセスを共有しているので、CLI で接続したものが GUI にも表示されますし、GUI で接続したものも CLI から見えます。
普段は GUI を使いつつ自動化のときだけ CLI を呼ぶ、みたいな使い方ができます。
なお、SAML 認証の場合はブラウザでの認証フローが必要になるため完全な自動化は難しいようで、ヘッドレスで自動化するなら相互認証か Active Directory 認証を使う必要があるみたいです。







