概要
AWS QuickSight を触っていた時に、リソースの削除順序を間違えて VPC 接続が削除できなくなり、少し焦った話。
簡単な説明
「AWS Hands-on for Beginners 手を動かしなら学ぶ Analytics サービス入門」という公式のハンズオンをやっていた。
![](https://www.akahige-life.com/wp-content/uploads/cocoon-resources/blog-card-cache/27037f3d6116bb61e74f4c78d02e50b4.png)
マネジメントコンソールが少し変わっていたから、めちゃくちゃスムーズだったわけではないが、ハンズオン自体は大きな問題なく完了した。
ただ、ハンズオンで作成したリソースを削除しているところで問題が発生した。その問題というのは、QuickSight の設定の中の VPC 接続というのが削除できなくなったことである。
状況としては、QuickSight の IAM ロールを先に削除してしまったために、VPC 接続の削除ができなくなった、という状況だった。
解決方法?というか詳細を書いていく。
内容
気付いたとき
ハンズオンが終わってリソース削除の手順に入った。
IAM ロールを削除して、QuickSight の VPC 接続を削除した後 QuickSight のアカウントを削除した。
最後にセキュリティグループを削除しようとしたところ、まだ割り当て済みになっていて削除ができず、確認すると QuickSight の VPC 接続で使用した ENI がまだ残っていた。
状況
VPC のコンソールから ENI を削除しようともしたが、できないようだった。
どうやら QuickSight のコンソールから削除しないといけないらしい。
さっき QuickSight で VPC 接続の削除操作をしたときには、削除が完了した旨のメッセージが出ていたので、てっきり削除したつもりになっていた。
QuickSight はアカウントの削除までやってしまっていたが、再度同じユーザー名・メールアドレスでアカウントを作り直して VPC 接続を見に行った。まだあった。
削除しようとしたが、やっぱり削除完了のメッセージだけが出て削除ができない。
新しい VPC 接続の作成を試してみると、ステータスが「UNAVAILABLE」から変わらなかった。
![](https://www.akahige-life.com/wp-content/uploads/2023/09/quicksight-vpc-connection-available.png)
どうやら権限がないらしく、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 を削除できた。
![](https://www.akahige-life.com/wp-content/uploads/2023/09/quicksight-vpc-connection-unavailable.png)
めでたしめでたし。
蛇足(悪あがきの記録)
ここからは悪あがきの記録を紹介しようと思う。
QuickSight はアカウントの削除までやってしまっていたので、VPC 接続は AWS CLI から削除しようと思った。ひとまず list-vpc-connections
で残っている VPC 接続を確認する。
だが、コマンドを実行するとエラーが発生した。
どうやら 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 触ってた時にも、ドキュメントと引数が違うと思ったらバージョンの差異だったことがあったなあ。
参考
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9UXVpY2tzaXRlJUU0JUI4JThBJUUzJTgxJUFFVlBDJUU2JThFJUE1JUU3JUI2JTlBJUU2JTgzJTg1JUU1JUEwJUIxJUUzJTgyJTkyJUU1JTg5JThBJUU5JTk5JUE0b3IlRTQlQkQlOUMlRTYlODglOTAlRTMlODElOTklRTMlODIlOEIlRTYlQTglQTklRTklOTklOTAlRTMlODElQUYlRTQlQkQlOTUlRTMlODElOEImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTc2MjNkYmZhMmQyMDIwZTM1ZWY1OTBkZmYzZDgyYjFk&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa3VzYW5vaXNrdXp1bm8mdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTc1N2ZiOGJhMGFiYjRhNDE1NTgzZjBhZDVjNzUyNjE1&blend-x=142&blend-y=491&blend-mode=normal&s=8cc42a2071d495728f4703556dc0b659)