맥북 카라비너 영어/한글/일본어 전환하기

이미지
 현재 Intel 맥북과 M1 맥북에서 4종류의 키보드를 사용중이다. HHK RealForce MD770 Keychron K12 마음 가는대로 키보드를 바꿔가며 사용중인데 매번 설정을 바꾸는게 고역이다. 특히 한글/영어/일본어 간의 변환은 스무즈하게 바꿀 수 없다면 타이핑 하는데 꽤나 고역이다. 그래서 카라비너를 이용한 변환키 설정을 기록한다. 기본 컨셉은 일본어 배열 키보드와 영어 배열 키보드에서 간단하게 각 언어 변환이 가능할 것. 일본어 키보드의 경우는 스페이스바 왼쪽의 키를 한번 누르면 영어, 스페이스바 오른쪽의 키를 누르면 일본어, 연속으로 두번 누르면 한글로 바뀌는 설정이고, 영어 배열 키보드에서는 왼쪽쉬프트+스페이스바가 영어, 오른쪽쉬프트+스페이스가 일본어, 오른쪽 커맨드키를 두번 누르면 한글이 되는 설정이다. Keychron K12(영어배열) + Macbook M1 카라비너 설정 / Simple Modificiations   카라비너 설정 / Complex modifications { "title" : "한글전환 커스텀 For M1 " , "rules" : [ { "description" : "영어 키보드 - 좌측Shift+스페이스:영어, 우측Shift+스페이스:히라가나, 우측 커맨드키 더블클릭:한글" , "manipulators" : [ { "type" : "basic" , "from" : { "key_code" : "spacebar" , "modifiers" : { "mandatory" : [

AWSの放置されたEBSをchatworkへ定期的に通知

 

毎日ec2やamiを作成/削除を繰り返している環境では気付かないうちに放置されているEBSが増えてくる。考えられる原因としては色々あるけど大きくは以下の2つではないかと思っている。

  • AMIからEC2を起動する場合の話だけど、AMI作成時に「EBSをインスタンス削除時に一緒に削除する」というオプションにチェックしなかった場合、そのAMIから起動したEC2を削除するときは毎回そのEBSが残ってしまう
  • 不要になったらAMIを削除するとAMIに紐づいているEBSやスナップショットは削除されないらしい。定期的に不要AMIを方付ける仕組みを採用しているなら定期的に放置EBSも増えるはず。

なので以下のスクリプトを作成して定期的にチャットワークに通知するようにした。

#!/usr/bin/php
<?
$query="/usr/local/bin/aws --region ap-northeast-1 ec2 describe-volumes --filters Name=status,Values=available";
$result=json_decode(`$query`);
put_msg($result);
 
function put_msg($obj) {
        $TOKN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        $CWEP="https://api.chatwork.com/v2/rooms";
        $RMID="XXXXXXXX";
 
        $now=time();
        $ebsinfo="";
 
        $cntebs=count($obj->Volumes);
 
        if ($cntebs > 0) {
                for ($i=0; $i<count($obj->Volumes); $i++) {
                        $cy=substr($obj->Volumes[$i]->CreateTime, 0, 4);
                        $cm=substr($obj->Volumes[$i]->CreateTime, 5, 2);
                        $cd=substr($obj->Volumes[$i]->CreateTime, 8, 2);
                        $niglect['ctime']=mktime(0, 0, 0, $cm, $cd, $cy);
                        $niglect['mtime']=$now - $niglect['ctime'];
                        $niglect['day']=(int)($niglect['mtime']/60/60/24);
                        $niglect['mon']=(int)($niglect['day']/30);
                        $niglect['cost']=$obj->Volumes[$i]->Size * $niglect['mon']*0.12;
 
                        $ebsinfo.="[$cy/$cm/$cd] ";
                        $ebsinfo.=$obj->Volumes[$i]->VolumeId;
                        $ebsinfo.=", ".$obj->Volumes[$i]->Size."GB";
                        $ebsinfo.=", $niglect[day]日";
                        $ebsinfo.=", $niglect[cost]ドル\n";
 
                }
                $messages ="[info][title]";
                $messages.=date("Y/m/d", $now)."、EBSの放置状況\n[/title]";
                $messages.="[code]※[作成日] ボリュームID, サイズ,放置日数,消費料金\n${ebsinfo}[/code]\n";
                $messages.="上記「".count($obj->Volumes)."個」のEBSが「availabe」の状態で放置されています。\n";
                $messages.="確認後、不要なEBSは削除しましょう。(1GB 0.12ドル/Month)\n";
                $messages.="[/info]";
                exec ("/usr/bin/curl -X POST -H \"X-ChatWorkToken: $TOKN\" -d \"body=$messages\" \"$CWEP/$RMID/messages\"");
        }
}
?>

chatworkには以下のようなメッセージが表示される。

[2016/12/26] vol-09f2facbdefff1f0, 20GB, 239日, 16.8ドル
[2017/05/10] vol-067cdefgaf5c789d, 15GB, 104日, 5.4ドル
[2017/05/10] vol-09b8ededcfgj6dbf03, 15GB, 104日, 5.4ドル

この次は抽出した放置EBSをAWS CLIを使ってそのまま削除してしまうことかな。EBSにもタグをつけられるので残しておく必要があるEBSはタグをつけておいて、そのタグがついてないEBSは定期的に削除してその結果を通知する仕組みがいいかも。

でも、削除を全自動でやるのはやはり怖いから1週間前に通知して1週間後削除するか、削除は手動でやるかなどの半自動化した方がいいと思う。

댓글

이 블로그의 인기 게시물

CISCO 2960s 초기화 후 기본 설정

curl 명령어 옵션

해외거주 국민을 위한 "교민폰" 사용후기