Amazon QuickSight で VPC 接続が削除できなくなって焦った

Study

概要

AWS QuickSight を触っていた時に、リソースの削除順序を間違えて VPC 接続が削除できなくなり、少し焦った話。

簡単な説明

AWS Hands-on for Beginners 手を動かしなら学ぶ Analytics サービス入門」という公式のハンズオンをやっていた。

AWS Hands-on for Beginners 手を動かしなら学ぶ Analytics サービス入門 | AWS Webinar
AWS Hands-on for Beginners 手を動かしなら学ぶ Analytics サービス入門 | AWS Webinar

マネジメントコンソールが少し変わっていたから、めちゃくちゃスムーズだったわけではないが、ハンズオン自体は大きな問題なく完了した。

ただ、ハンズオンで作成したリソースを削除しているところで問題が発生した。その問題というのは、QuickSight の設定の中の VPC 接続というのが削除できなくなったことである。
状況としては、QuickSight の IAM ロールを先に削除してしまったために、VPC 接続の削除ができなくなった、という状況だった。

解決方法?というか詳細を書いていく。

内容

気付いたとき

ハンズオンが終わってリソース削除の手順に入った。
IAM ロールを削除して、QuickSight の VPC 接続を削除した後 QuickSight のアカウントを削除した。

最後にセキュリティグループを削除しようとしたところ、まだ割り当て済みになっていて削除ができず、確認すると QuickSight の VPC 接続で使用した ENI がまだ残っていた

状況

VPC のコンソールから ENI を削除しようともしたが、できないようだった。
どうやら QuickSight のコンソールから削除しないといけないらしい。

さっき QuickSight で VPC 接続の削除操作をしたときには、削除が完了した旨のメッセージが出ていたので、てっきり削除したつもりになっていた。

QuickSight はアカウントの削除までやってしまっていたが、再度同じユーザー名・メールアドレスでアカウントを作り直して VPC 接続を見に行った。まだあった。

削除しようとしたが、やっぱり削除完了のメッセージだけが出て削除ができない
新しい VPC 接続の作成を試してみると、ステータスが「UNAVAILABLE」から変わらなかった。

上は新たに作ろうとしたもの。下はもともと作成したもので、「削除」をクリックしても実際には削除できない。

どうやら権限がないらしく、IAM ロールを先に削除してしまっている影響で、QuickSight 側で VPC 接続を削除することができないっぽい。

さらに、「編集」をクリックしても詳細画面に移動できない。だから IAM ロールの設定を変えることもできなかった

解決方法

これまでの経験から、再度同じ名前で IAM ロールを作成することで、権限を与えることができると思った。

先程作っていた IAM ロールの名前は憶えていたので、同じ名前でロールを作り直した。
(※ IAM ロール名が分からない場合は、CloudTrail でイベント履歴確認かな……。)

EC2FullAccess ポリシーと QuickSight 系のマネージドポリシーをいくつか割り当ててやってみていたが、最終的には、EC2FullAccess ポリシーと下記のようなインラインポリシーを持たせて削除することにした
(※ IAM 系の権限はたぶんいらなかった。)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "iam:*",
                "quicksight:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

権限の変更はすぐには反映されなかったが、VPC 接続のステータスが「AVAILABLE」から「UNAVAILABLE」に代わり、ENI を削除できた

ENI が削除された。これでセキュリティグループも削除できる。

めでたしめでたし。

蛇足(悪あがきの記録)

ここからは悪あがきの記録を紹介しようと思う。

QuickSight はアカウントの削除までやってしまっていたので、VPC 接続は AWS CLI から削除しようと思った。ひとまず list-vpc-connections で残っている VPC 接続を確認する。

list-vpc-connections — AWS CLI 2.17.51 Command Reference

だが、コマンドを実行するとエラーが発生した。
どうやら VPC 接続に関するコマンドだけがないらしい。

$ aws quicksight list-vpc-conncetions --aws-account-id ACCOUNT_ID

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

aws: error: argument operation: Invalid choice, valid choices are:

---------- 省略 ----------
get-dashboard-embed-url                  | get-session-embed-url
list-analyses                            | list-dashboard-versions
list-dashboards                          | list-data-sets
list-data-sources                        | list-folder-members
list-folders                             | list-group-memberships
list-groups                              | list-iam-policy-assignments
list-iam-policy-assignments-for-user     | list-ingestions
list-namespaces                          | list-tags-for-resource
list-template-aliases                    | list-template-versions
list-templates                           | list-theme-aliases
list-theme-versions                      | list-themes
list-user-groups                         | list-users
register-user                            | restore-analysis
---------- 省略 ----------

一応、AWS CLI はバージョン2使ってるんだけどなあ。

$ aws --version
aws-cli/2.7.26 Python/3.9.11 Linux/5.15.90.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.22 prompt/off

と思ったが、ドキュメントをよく見るとバージョン 2.7 ではなく 2.13 だった
アップデートしまーす。

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
Found preexisting AWS CLI installation: /usr/local/aws-cli/v2/current. Please rerun install script with --update flag.
$ which aws
/usr/local/bin/aws
$ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
You can now run: /usr/local/bin/aws --version
$ aws --version
aws-cli/2.13.5 Python/3.11.4 Linux/5.15.90.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.22 prompt/off

AWS CLI を更新してから改めて実行したところ確認できた。
まあ、既に VPC 接続は消しちゃってたんだけどね。

$ aws quicksight list-vpc-connections --aws-account-id ACCOUNT_ID
An error occurred (ResourceNotFoundException) when calling the ListVPCConnections operation: Directory information for account ACCOUNT_ID is not found.

アップデートは定期的にやっておくべきですね。
ドキュメントをよく確認しましょう。

まとめ

Amazon QuickSight から VPC 接続を削除できなくなったが、IAM ロールを作成して権限を与えることで削除できた

ツールやライブラリは定期的にアップデートしましょう

感想

今回の件は少し焦った。全然触り慣れてないリソースだったし。

でもそういえば、リソースを消す順番には注意するように、とハンズオンの中でもアナウンスがあったような気がする

今回のミスは、ツールやライブラリを定期的にアップデートしましょう、という当たり前のことを再認識するきっかけになった。
そういえば最近 AWS CDK 触ってた時にも、ドキュメントと引数が違うと思ったらバージョンの差異だったことがあったなあ。

参考

Quicksite上のVPC接続情報を削除or作成する権限は何か - Qiita
Quicksiteから他アカウントのデータソースを参照しようとしました。VPCピアリングを行い、Quicksite上にVPC接続情報を登録したまでは良かったのですがあれ!?Quicksiteに作…
AWS CLIの最新バージョンのインストールまたは更新 - AWS Command Line Interface
AWS CLI をシステムにインストールまたは更新する手順。
タイトルとURLをコピーしました