2020年6月14日日曜日

EC2インスタンスにSSHできないトラブルシューティング

EC2でインスタンスを作成しましたが、SSHしようとしたらできない。自分は何度も経験したのでそしてつい先も経験したのでトラブルシューティングメモとして残しておきたいと思います。

パブリックIPが割り振られたかどうか

以下のようにパブリックIPが割り振られたことを確認

セキュリティグループの確認

「セキュリティグループ」の「インバウンドルールの表示」で自分IPにアクセス権限を付与できたかどうかを確認。↓ポート22番ば自分のIPに向けて公開できている状態でなければなりません。

プライベートキーが合っているかどうかを確認

インスタンスを選択された状態で上の「接続」ボタンをクリックすれば、接続用情報が表示されます。

サブネットを確認

サブネットIDをクリックします。そしてサブネット先の「ルートテーブル」タブをクリックします。

ターゲットにインターネットゲートウェイに紐付いているかどうかを確認。プライベートサブネットで作られたインスタンスに直接SSHできないので、直接SSHしたい場合はパブリックで作る必要があります。

最終手段AWSに問い合わせ

とあるフォルダの中、作成日は一ヶ月前のファイルを消す

以下のコマンドを使えば「/home/hoge/」(サブフォルダも含む)中の作成日は一ヶ月前のファイルを消すことができます

find /home/hoge/ -type f -mtime +30 -exec rm -f {} \;

更に接尾詞は「.log」のファイルを絞りたい時

find /home/hoge/ -name "*.log" -type f -mtime +30 -exec rm -f {} \;

2020年6月2日火曜日

APIを使ってApache solrからデータを削除する方法

たまに特定な条件に一致するデータを削除したい時があります。

SolrのAPIを使えば実現できます。xml形式とjson形式をそれぞれ紹介します。

形式1、xml形式で削除

例:「title」というフィルドが存在します。「title」の中文字列「プレミアム」が存在しているドキュメントを全部削除

curl 'http://localhost:8983/solr/コア名を入れて/update?commit=true&stream.body=<delete><query>title:*プレミアム*</query></delete>'



形式2、json形式で削除

例:「category」(カテゴリ)と「update_at」(更新日)というフィルドが存在します。更新日は2018年12月13日前、かつカテゴリが「fasion」のドキュメントを削除

curl -H 'Content-Type: application/json' \
'http://localhost:8983/solr/コア名を入れて/update?commit=true' \
-d '{ "delete": { "query": "category:fasion AND update_at:[* TO 2018-12-13T00:00:00]" }}'