かべぎわブログ

ブログです

AWSCLIでcloudtrailを利用してインスタンスになにがあったのかを調べる

概要

AWSCLIとcloudtrailを利用して特定のインスタンスになにがあったのかを調べてみたいと思います。

だれかが雑にインスタンスを停止してしまって誰が止めたんだ!!!!みたいな犯人探しのときにつかえます(遠い目)

コマンド例

コマンドは以下のとおり。
AttributeValueのところは調べたいインスタンスIDをいれてあげます。

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=i-XXXXXXXXXXXX --query 'Events[].{username:Username,time:EventTime,event:EventName}'

[
    {
        "username": "kabegiwa", 
        "event": "StopInstances", 
        "time": 1530802833.0
    }, 
    {
        "username": "kabegiwa", 
        "event": "StartInstances", 
        "time": 1530801178.0
    }
]

timeの箇所はUNIXTIMEです。
若干わかりにくい。

おわりに

遠い目

AWS Security Automation and Orchestration: Modernizing Governance through Security Design

AWS Security Automation and Orchestration: Modernizing Governance through Security Design

Pythonのprint()のオプションのendとsepをつかってみる

概要

Pythonのprint()にはオプションを指定することができます。
そのなかで今日はsependを使ってみたいと思います。

end

オプションにendをつかうことで文字列のあとになにか文字を追加することができます。

print('wawawa',end='dayo')
# wawawadayo

また、endを使った場合は明示的に改行コードを渡してあげない限りは改行されません。
以下のようなことが可能です。

print('wawawa',end='')
print('dayo')
# wawawadayo

明示的にに改行コードを入れる場合はこう。

print('wawawa',end=' \n')

sep

オプションにsepをつかうことでprintにわたした文字列の区切り文字を変更することができます。

通常はこんなかんじでスペース区切りになります。

print('wawawa','sasasa','dadada')
# wawawa sasasa dadada

それをsepをつかうことで変更できます。

print('wawawa','sasasa','dadada',sep=',')
# wawawa,sasasa,dadada

おわりに

こういうのがぬるっとつかえるとシェルスクリプトとかawkとかから移行するのがかんたんかもね


独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

二輪の自動車以外の自動車通行止めとケンタッキーとマクドナルド_無職日記003

今日から自動車教習所の授業が始まった。

授業の始まりと終わりのチャイムとか紙と鉛筆とか居眠りしてるのを注意してるのとかそういう空間にいて、あーなんか青春だわーと思ったんだけど、ぼくは無職のおじさんだった。
tiktokやります。


今日は標識の授業だったんだけれどもこの日本語がすげーわかりにくいなーと、一日中思っていた。
f:id:kabegiwakun:20181003204341p:plain

二輪の自動車以外の自動車通行止め
自動車は、通行してはいけません。ただし、二輪の自動車(大型自動二輪車、普通自動二輪車)は、通行できます。

これを言い換えるとこうなる。
わかりやすくなるかなーとおもったけどそうでもなかった。

if car == '自動車':
    print('通行してはいけません')
elif car == '大型自動二輪車' or car == '普通自動二輪車':
    print('通行できます')
else:
    print('原付きとか自転車とか歩行者はこれは関係ない')



昼はケンタッキーを食べる。
ザクザク骨なしケンタッキー スパイシーメキシカン味を食べたんだけどそこまであれだった。そこまでってかんじだった。
f:id:kabegiwakun:20181003210238p:plain


夜はマクドナルドを食べる。
これは痩せざるをえない。
ダブルチーズバーガーとポテトとコーラとナゲット10個。
やせる。

f:id:kabegiwakun:20181003210255p:plain




AWSCLIでS3バケットを削除する

概要

AWSCLIをつかってS3バケット自体を削除してみようと思います。

削除する

以下のコマンドで削除することができます。

$ aws s3api delete-bucket --bucket wawawa-dst

ちなみに

バケットの中にオブジェクトが残っている場合 以下のようにエラーが出ます。

$ aws s3api delete-bucket --bucket wawawa-dst

An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty

その場合は以下のコマンドで全部のオブジェクトを削除してから、バケットを削除します。

$ aws s3 rm --recursive s3://wawawa-dst
delete: s3://wawawa-dst/wawawa_dir/test.txt
delete: s3://wawawa-dst/sasasa.txt

おわりに

誤爆したらしぬ

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

同じリージョンのS3同士を同期させる

概要

同じリージョンにあるS3バケットを同期させてみようと思います。

同期させる方法

AWSCLIをつかいます。
以下のようにすることでS3バケット2つを同期させることができます。

$ aws s3 sync s3://wawawa-src s3://wawawa-dst

実際にやってみる

実際にやってみます。

前提としてバケットの中身は以下のような感じだとします。

$ aws s3 ls --recursive s3://wawawa-src/
2018-10-02 03:31:37         20 sasasa.txt
2018-10-02 03:30:29          0 wawawa_dir/
2018-10-02 03:31:10         20 wawawa_dir/test.txt
$ aws s3 ls --recursive s3://wawawa-dst/
$ 


aws syncコマンドで同期させます。

$ aws s3 sync s3://wawawa-src s3://wawawa-dst
copy: s3://wawawa-src/wawawa_dir/test.txt to s3://wawawa-dst/wawawa_dir/test.txt
copy: s3://wawawa-src/sasasa.txt to s3://wawawa-dst/sasasa.txt    

同期できました!!!

$ aws s3 ls --recursive s3://wawawa-src/
2018-10-02 03:31:37         20 sasasa.txt
2018-10-02 03:30:29          0 wawawa_dir/
2018-10-02 03:31:10         20 wawawa_dir/test.txt
$ aws s3 ls --recursive s3://wawawa-dst/
2018-10-02 03:35:59         20 sasasa.txt
2018-10-02 03:35:59         20 wawawa_dir/test.txt

おわりに

これを定期的にcronで動かすとかするとゆるーい同期が実現できる。

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

自動車教習所入校とアヒージョとシリコンバレーシーズン5_無職日記002

暇なので自動車教習所に入校しにいった。
こんな機会じゃないともう一生とらないなーとおもったのでハイパー重い腰をあげて15分くらい歩いて教習所まで手続きに行った。
f:id:kabegiwakun:20181002200011p:plain


無職にはつらい出費
ただし明後日に水道の蛇口から石油が出てくる予定なので問題はない。
f:id:kabegiwakun:20181002200150p:plain



夜はアヒージョを食べる。
よい。

マッシュルームとエビと塩とアンチョビをオリーブオイルで浸してオーブンに15分くらい突っ込むとハイパーくそうまくなる。
よい。
f:id:kabegiwakun:20181002200557p:plain





空き時間にAmazonPrimeでシリコンバレーのシーズン5がきていたので一気に全部見る。
おもしろかった。
シーズン3,4と個人的にはあんまりあれだなーと思っていたのでこうして盛り返してくれてよかった。
シーズン中ずっと vsギャビンベルソンという構図が単純でわかりやすくてよかったのかもしれない。

全員見るべき。
www.amazon.co.jp



きのこがおいしい ! アヒージョの素 20g×10個

きのこがおいしい ! アヒージョの素 20g×10個

Pythonのsys.exit()で途中でスクリプトを終了させる

概要

Pythonでsys.exit()をつかって、スクリプトの途中でプログラムを終了させてみたいと思います。

スクリプト例

まず最初にimport sysをして上げる必要があります。
そのうえでsys.exit()と書いてあげることでそれが実行されたタイミングでスクリプトの途中でプログラムが終了します。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys

for i in range(1,5):
    print(i)
    if i == 3:
        print('ここでexitする')
        sys.exit()

print('これは実行されない')

実行してみる

ループの中のif i == 3sys.exit()して、途中でプログラムの実行が終わっていることがわかります。

$ ./sysexit.py 
1
2
3
ここでexitする

おわりに

でもあんまり多用するとよくわかんなくなりそうだよね。

入門 Python 3

入門 Python 3

シェルスクリプトで平日なのか土日祝日なのかを判定してみる

概要

シェルスクリプトをつかって今日が平日なのか土日祝日なのかを判定してみたいとおもいます。
平日の営業日にしか動かしたくないんだよなーみたいなときにやくにたったりたたなかったりします。

スクリプト

そのシェルスクリプトはこんなかんじ。
holiday-jp-rubyのholidays.ymlをcurlで読み込んできてそれをもとに判定をしている。

平日の場合終了ステータスが1で渡される。
土日祝日の場合終了ステータスが0で渡される。

実際に動かしてみる

たとえば現在の日時が以下のとき

$ date
2018年 10月 1日 月曜日 13時14分20秒 JST

平日だけ実行する場合はこう

$ ./holiday_check.sh || echo "wawawa"
wawawa

祝日だけ実行する場合はこう
実行時は平日なのでechoが実行されていないことがわかる。

$ ./holiday_check.sh && echo "wawawa"

オフラインでつかうには

このスクリプトはcurlで外部から土日祝日の情報を取得してきている。
クローズドなイントラ環境で利用するためにはなんらかの方法でこのholidays.ymlをローカルに持ってきて、cat holidays.yml | awk '{print $1}'すればよい。

おわりに

営業日だけうごくよ!

新しいLinuxの教科書

新しいLinuxの教科書

バーミヤンとカメラを止めるな_無職日記001

ひるすぎにバーミヤンで「刺激の赤麻婆チャーハン」を食べた。
よかった。
f:id:kabegiwakun:20181001221753p:plain

バーミヤンのドリンクバーではこんなかんじプーアール茶とかものめる。
よい。
f:id:kabegiwakun:20181001221846p:plain




その後遅ればせながらカメラを止めるなを見た。
控えめに言ってハイパーくそおもしろい。
よい。
f:id:kabegiwakun:20181001222018p:plain



おわり。

退職エントリーというものを書いてみたかったけど途中でめんどくさくなった

退職エントリというものを書いてみたかった。

概要

退職した。

From: 証券系システム子会社
To: 自宅警備員

今まで何をしてきたか

インフラエンジニア的なことをしていた。
オンプレもあったしAWSもあった。
AnsibleやCloudFormtaionをつかってInfrastructure as Code的なことをやったりしていた。

退職理由

自分はこのままでいいのか?っていう思春期みたいな感情が芽生えたので自分探しのために退職してしまった。

これから何をするのか?

ブログ書く。
海外いく。
NETFLIX全部見る。
自動車免許取る。

前職について

仲間には恵まれた。
よかった。

おわりに

Amazonのほしいものリストを公開しようと思ったけどやりかたかがよくわからないからやめた。

Pythonでエラトステネスの篩を実装してみる

概要

Python3でエラトステネスの篩を実装してみたいと思います。

エラトステネスの篩とは?

エラトステネスの篩 (エラトステネスのふるい、英: Sieve of Eratosthenes) は、指定された整数以下の全ての素数を発見するための単純なアルゴリズムである。古代ギリシアの科学者、エラトステネスが考案したとされるため、この名がある。

Wikipediaから抜粋
つまり素数を探索するアルゴリズムです。

実装してみた

動かしてみるとこんなかんじ

標準入力で数値を渡してあげるとその数値以下の素数をすべて返してくれます。

$ ./eratosthenes.py 
120
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]

おわりに

20桁くらいで動かしてみたらMacbookがかたまった。

入門 Python 3

入門 Python 3

Pythonで関数の中に関数を宣言してクロージャとしてつかってみる

概要

Pythonでは関数の中に関数を宣言するとそれはクロージャとして動作します。
ためしにやってみます。

スクリプト例

以下のようにouter()という関数の中でinner()という関数を宣言しています。
そしてreturnでinnerの関数そのものを返しています。

def outer(wawawa):
    def inner():
        return '%s' % wawawa
    return inner

result_func = outer(wawawa='AAA')

print(result_func)
print(result_func())

実行してみる

実行してみるとこんなかんじ。
result_funcには関数そのものがはいっていて、それを実行することで結果を得ることができます。
また、result_func()が引数としてAAAが渡されたということも記憶しています。

$ ./closure.py 
<function outer.<locals>.inner at 0x10d521d90>
AAA

おわりに

ちょっとむずかしい

詳細! Python 3 入門ノート

詳細! Python 3 入門ノート

Pythonで関数の引数に**をつかって複数個の値を辞書形式の引数としてわたす

概要

Pythonの関数の引数のところに**をつかって複数個の値を辞書形式の引数としてわたしてあげて関数を実行してみたいと思います。

スクリプト例

こんなかんじで関数の変数の部分に**変数といったかんじで指定をしてあげる。

def wawawa(**kwargs):
    print(kwargs)
    print(kwargs['dadada'])
    
wawawa(sasasa='AAA',dadada='BBB',momomo='CCC')

実行してみる

こんなかんじで複数の値を辞書形式でわたすことができる。

$ ./fukusuu_kwargs.py 
{'sasasa': 'AAA', 'dadada': 'BBB', 'momomo': 'CCC'}
BBB

おわりに

べんり

入門 Python 3

入門 Python 3

Pythonで関数の引数に*をつかって複数個の値を引数としてわたす

概要

Pythonの関数の引数のところに*をつかって複数個の値を引数としてわたしてあげて関数を実行してみたいと思います。

スクリプト例

こんなかんじで関数の変数の部分に*変数といったかんじで指定をしてあげる。

def wawawa(*args):
    print(args)
    print(args[0])

wawawa('AAA','BBB','CCC')

実行してみる

こんなかんじで複数の値を引数として渡すことができる。

$ ./fukusuu_args.py
('AAA', 'BBB', 'CCC')
AAA

おわりに

べんり

入門 Python 3

入門 Python 3

PythonでNone/True/Falseを区別を判定する

概要

PythonでNoneTrueFalseを判定してみます。

スクリプト例

実際に動かしてみる

このスクリプトを動かしてみます。

wawawa = None の場合

当然結果はNoneになる。

$ ./bool_none.py 
None

wawawa = 1 の場合

elif wawawa:でTrueになる。
0以上の数値または文字列などでTrueとなる。

$ ./bool_none.py 
True/1~

wawawa = True の場合

elif wawawa:でTrueになる。

$ ./bool_none.py 
True/1~

wawawa = 0 の場合

else:まで引っかからない。

$ ./bool_none.py 
False/空文字列/0

wawawa = "" の場合

else:まで引っかからない。
これはwawawa = []wawawa = {}でもおなじ。

$ ./bool_none.py 
False/空文字列/0

おわりに

ちょっとややこしい

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで