2018年10月7日日曜日

AWS MediaStoreのインスタンスを削除する方法(Windows編)

まだ咳が出て完治とはいきませんが、
これは記事にせねばとキーボートを叩くことにしました。

最近AWSのMediaStoreというサービスのインスタンスを作成する機会があったのですが、
こいつが簡単には削除できなかったので手順をまとめることにした次第です。
手慣れている人はコマンドでちょちょいのちょいかもしれませんが、
AWS初心者にはなかなか削除することができず、不安でしょうがなくなってしまいます。



まず消せない理由については、インスタンス内のフォルダの中にデータが残っているのが原因です。
これを全部消さないことには、インスタンスを削除することはできないようです。
しかしこいつは、ちょっと基本的な動作を確認しただけで、かなりデータを溜め込んでしまうようなのです。
マウス操作で1個ずつ消していったらきりがありません。(今のところ、全件削除する操作が無いらしいです。)


ということで方法を探した次第ですが、実は既に基本的な方法についてまとめている方がいらっしゃいます。
[小ネタ] AWS Elemental MediaStoreのオブジェクトをまるっと削除するAWS CLIワンライナー

しかしこれは既にAWS CLIが使えている方を前提としていますし、awkコマンドはWindowsに標準で搭載されていないのでawkの導入分手間が増えてしまいます。
よってAWS CLIのとりあえずの使い方と、awkコマンドの部分をPowershellに置き換えたバージョンについて説明していきます。
あ、2018年10月7日時点での方法なのでご注意ください。

  1. MediaStoreから削除に必要な情報を集めます。
    1. AWSにログインします。
    2. MediaStoreを選択します。
    3. 削除したいインスタンスの、"Endpoint URL"を控えます。
      • 確かそんな項目名だったはず?(削除済みで確認できてない)
    4. インスタンス名のリンクをクリックします。
    5. インスタンス内のフォルダ名を控えます。
  2. AWS CLI用のユーザを作成します。作成済みの場合は飛ばしてください。
    1. AWSにログインします。
    2. IAMというサービスを選択します。
    3. 左側のメニューから、[ユーザー]を選択します。
    4. [ユーザーを追加]ボタンをクリックします。
    5. [ユーザー名]に適当な名前を設定します。
    6. [プログラムによるアクセス]にチェックを入れます。
    7. [次のステップ:アクセス権限]ボタンをクリックします。
    8. [既存のポリシーを直接アタッチ]を選択します。
    9. おそらく1行目の"AdministratorAccess"の行のチェックを入れます。
      • 権限が強すぎるのは承知していますが、自分も初心者なので…
    10. [次のステップ:確認]ボタンをクリックします。
    11. [ユーザーの作成]ボタンをクリックします。
    12. "アクセスキーID"と、"シークレットアクセスキー"を控えておきます。
  3. AWS CLIの環境を整えます。既にAWS CLIの環境がある場合は飛ばしてください。
    1. AWS CLI をインストールします。こちらからインストーラーをダウンロードしてください。
    2. Powershell を起動します。
    3. "aws configure"とコマンドを入力します。
    4. "AWS Access Key ID"と聞かれるので、控えておいた"アクセスキーID"を入力します。
    5. "AWS Secret Access Key"と聞かれるので、控えておいた"シークレットアクセスキー"を入力します。
    6. "Default region name"と聞かれるので、適当なリージョンと入力します。
      • 確か東京なら"ap-northeast-1"かな?
    7. "Default output format"と聞かれるので、"text"または"json"と入力します。
      • おそらく今回でこの設定が使われることはなさそうなので適当です。
  4. AWS CLIを使って、MediaStoreのインスタンス内にあるデータを削除します。
    1. "aws mediastore-data list-items --endpoint=【Endpoint URL】 --path=/【フォルダ名】 --output=text | Foreach-Object { Invoke-Expression ("aws mediastore-data delete-object --endpoint=【Endpoint URL】 --path=/【フォルダ名】/" + $_.Split("`t")[5])  }"とコマンドを入力します。
      • 【Endpoint URL】と【フォルダ名】は最初に控えておいたものに置き換えてください。
      • フォルダが複数存在する場合は、フォルダの数だけコマンドを実行してください。
      • コマンドの実行完了には、結構時間がかかります。
      • データがフォルダ内に1000件以上ある場合は、元記事で言及していた通り対応が必要になると思います。
  5. MediaStoreのインスタンスを削除します。
    1. AWSにログインします。
    2. MediaStoreを選択します。
    3. 削除したいインスタンスにチェックを入れます。
    4. [Delete]ボタンをクリックします。
    5. 今度は削除できるはずです。
  6. 今回のために作成したユーザを削除します。
    1. AWSにログインします。
    2. IAMというサービスを選択します。
    3. 左側のメニューから、[ユーザー]を選択します。
    4. 作成したユーザーにチェックを入れます。
    5. [ユーザーの削除]ボタンをクリックします。
    6. [はい、削除します]ボタンをクリックします。
    7. 左側のメニューから、[ロール]を選択します。
    8. ユーザー作成時に追加されたロールがあれば、チェックを入れます。
    9. [ロールの削除]を選択します。
    10. [はい、削除します]ボタンをクリックします。
たぶんこれで良いと思うのですが…訂正や補足がある方はコメントをお願いします。
誰かの役に…たつのかなぁ?

0 件のコメント:

コメントを投稿