かべぎわブログ

ブログです

自分のインスタンスIDを取得する方法まとめ

自分のインスタンスIDを取得する方法をまとめてみた。

メタデータを取得する

メタデータをcurlなりwgetなりで取得する。

curl http://169.254.169.254/latest/meta-data/instance-id
i-XXXXXX

cloud-utilを実行する

以下のコマンドを実行する。
AmazonLinuxであればデフォルトでインストールされている。
そうでないOSの場合はcloud-utilをインストールしてあげる必要がある。

ec2-metadata -i
i-XXXXXX

cloudinitのディレクトリを参照する

cloudinitのディレクトリにインスタンスIDがあるのでそれを見てみる。

cat /var/lib/cloud/data/instance-id
i-XXXXXX

AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー

AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー

PowerShellでブレース展開みたいなことをやってみる

概要

PowerShellでブレース展開みたいなことをやってみます。

やってみる

こんなかんじ。

PS C:\> 'web','db','mq' | % { "$_-server" }
web-server
db-server
mq-server

またはこう。

PS C:\> 1..3 |  % { "server-$_" }
server-1
server-2
server-3

フォーマットもつかえる

PS C:\> 1..3 |  % { "server-{0:D2}" -f $_ }
server-01
server-02
server-03

おわりに

べんりですね

Windows PowerShellクックブック

Windows PowerShellクックブック

  • 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/10/23
  • メディア: 大型本
  • 購入: 4人 クリック: 72回
  • この商品を含むブログ (15件) を見る

Powershellで必須の引数を定義する

概要

PowerShellをつかって必須の引数を設定してみます。

そもそも引数を設定するには

こんなかんじで設定できる。

Param($ichi, $ni)

# 引数を出力する
Write-Host $ichi
Write-Host $ni

スクリプトを実行したときにたとえばこんなかんじになる。

.\script.ps1 wawawa sasasa
wawawa
sasasa

実行時に変数名をオプションをとして実行することもできる。

 .\script.ps1 -ni sasasa -ichi wawawa
wawawa
sasasa

必須の引数を定義する

本題の必須の引数を定義してみる。

以下のようなかんじで[parameter(mandatory)]$変数名で指定してあげる。
以下は$niを必須に指定している。

Param($ichi, [parameter(mandatory)]$ni)

引数を1つだけ指定して実行すると$niの値の入力を促される。

.\script.ps1 wawawa

cmdlet script.ps1 at command pipeline position 1
Supply values for the following parameters:
ni:

おわりに

usageでいろいろなことを書くのもいいけどこういう制御もちゃんとしてあげたい。

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShellで自分のファイル名を取得する

概要

PowerShellをつかって実行中の自分のファイル名を取得してみます。

こんなかんじでできます

こんなかんじでできます。

$my_script_name = $myInvocation.MyCommand.name

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

AttributeError: module 'logging' has no attribute 'basicConfig'のエラーの解消法

概要

Pythonでこんなかんじのエラーがでた。

$ python logging.py

Traceback (most recent call last):
  File ".\logging.py", line 1, in <module>
    import logging
  File "C:\Users\takak\blog_python\logging.py", line 2, in <module>
    logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')

AttributeError: module 'logging' has no attribute 'basicConfig'

ちなみにPythonのコードはこんなかんじだった。

import logging
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')

logging.warning('わーにんぐ')

解消法

Pythonスクリプトのファイル名がlogging.pyとなっていたのが原因。
loggingはloggingモジュールの中で使われているので使わないほうがよいのです。

スクリプト名を変えてあげる。

$ bash ./logging.py log_dasu.py
$ python ./log_dasu.py
WARNING:root:わーにんぐ

おわりに

すこしはまる。

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

GitでCommitを取り消す

概要

Gitでコミットを取り消す方法です。

コマンド例

こんなかんじ
直前のCommitを消す方法です。

コミットだけを取り消す

$ git reset --soft HEAD^

コミットとインデックス/作業ツリーも取り消す

$ git reset --hard HEAD^

わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Git使い方入門

コマンドプロンプトでインターネットオプションのプロキシサーバーの設定をする

概要

コマンドプロンプトでインターネットオプションのプロキシサーバーの設定をしてみます。

コマンド

こんなかんじ。

プロキシを使用するをONにする

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1

アドレスとポートを設定する

アドレスに127.0.0.1
ポートに8080を設定しています。

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d 127.0.0.1:8080

おわりに

おしまい。

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

Powershellで環境変数を設定する

概要

PowerShellをつかって環境変数を設定してみる。

ユーザー環境変数

HTTP_PROXYにhttp://127.0.0.1:8080を設定している。

[System.Environment]::SetEnvironmentVariable('HTTP_PROXY', 'http://127.0.0.1:8080', 'User')

システム環境変数

HTTP_PROXYにhttp://127.0.0.1:8080を設定している。
要管理者権限

[System.Environment]::SetEnvironmentVariable('HTTP_PROXY', 'http://127.0.0.1:8080', 'Machine')

おわりに

おわり

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

AWSCLIで任意のタグのついたすべてのサービスのリソースを取得する

概要

AWSCLIを利用して任意のタグのついているすべてのサービス(すべてとは言っていない)のリソースを取得してみたいと思います。
このコマンドを利用することによりタグの--filterオプションが存在しないサービスのリソースも取得することができます。

コマンド例

こんなかんじです。
この例ではNameタグがwawawaとなっているリソースを取得しています。

$ aws resourcegroupstaggingapi get-resources --tag-filters Key=Name,Values=wawawa

{
    "ResourceTagMappingList": [
        {
            "ResourceARN": "arn:aws:ec2:ap-northeast-1:123456789012:instance/i-058196ffce03af4b9",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "wawawa"
                }
            ]
        },
        {
            "ResourceARN": "arn:aws:ec2:ap-northeast-1:123456789012:volume/vol-05c851f6690f38cd5",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "wawawa"
                }
            ]
        },
        {
            "ResourceARN": "arn:aws:lambda:ap-northeast-1:123456789012:function:wawawa_lambda",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "wawawa"
                }
            ]
        }
    ]
}

EC2インスタンスとEBS、Lambdaが応答していることがわかります。

おわりに

結構便利だと思っている。
マネジメントコンソールだとリソースグループでおなじようなことができます。

Amazon Web Services エンタープライズ基盤設計の基本

Amazon Web Services エンタープライズ基盤設計の基本

Pythonのloggingについてまとめる

概要

Pythonのloggingについてまとめてみる。

基本編

loggingをつかうことでPythonでかんたんなロギングを行うことができる。
たとえば以下のようなコードをかいてみる。

import logging

logging.debug('でばっぐ')
logging.info('いんふぉ')
logging.warning('わーにんぐ')
logging.error('えらー')
logging.critical('くりてぃかる')

実行するとこんなかんじ。

$ python ./logger.py 

WARNING:root:わーにんぐ
ERROR:root:えらー
CRITICAL:root:くりてぃかる

ログレベルを指定する

デフォルトではWARNING以上のレベルのログしかコンソールには出力されない。

ではDEBUGとINFOはどのように利用するかというとこのようなかんじ。
logging.basicConfig(level=logging.DEBUG)といったかんじで指定してあげる。

import logging
logging.basicConfig(level=logging.DEBUG)

logging.debug('でばっぐ')
logging.info('いんふぉ')
logging.warning('わーにんぐ')
logging.error('えらー')
logging.critical('くりてぃかる')

実行するとこんなかんじである。

$ python ./logger.py 

DEBUG:root:でばっぐ
INFO:root:いんふぉ
WARNING:root:わーにんぐ
ERROR:root:えらー
CRITICAL:root:くりてぃかる

ログをファイルに出力する

ログをコンソールに標準出力するだけではなく、ログファイルに出力したい時がある。
というかソッチのほうが多いかもしれない。
そのばあいはこんなかんじで指定してあげる。

import logging
logging.basicConfig(filename='wawawa.log')

logging.warning('わーにんぐ')

ファイルに出力される。

$ cat ./wawawa.log

WARNING:root:わーにんぐ

このログファイルへの出力はデフォルトでは追記である。
もういちどPythonを実行するとログファイルはこんなかんじになる。

$ cat ./wawawa.log

WARNING:root:わーにんぐ
WARNING:root:わーにんぐ

ログファイルを毎回追記じゃなくて新規でつくりたいなぁみたいなときはこんなかんじで`filemode='w'で指定してあげる。

import logging
logging.basicConfig(filename='wawawa.log',filemode='w')

logging.warning('わーにんぐ')

ログに日時を追加する

ログをだすときはだいたい日時がほしい。
のでそれをだす。
こんなかんじでフォーマットを指定してあげることができる。

import logging
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')

logging.warning('わーにんぐ')

じっこうしてみるとこんなかんじ。

$ python ./logger.py 

2019-10-02 22:49:43,019:WARNING:root:わーにんぐ

指定できるフォーマットはここにまとまっています。

logging --- Python 用ロギング機能 — Python 3.7.5rc1 ドキュメント

おわりに

べんりですね

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

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

かべぎわブログをスクレイピングしてくれるPython

概要

かべぎわブログをスクレイピングしてくれます。

スクリプト

こんなかんじ。

動かしてみる

こんなかんじ。

$ python scraping_kabegiwa.py

PythonのBeautifulSoupでAWS What's Newの今月の一覧を取得する(強化版)
https://www.kabegiwablog.com/entry/2019/09/25/225751

Python(boto3)でAWSCLIとおなじかんじでprofileをわたしてあげる
https://www.kabegiwablog.com/entry/2019/09/24/224155

ワンライナーで特定のタグのついたインスタンスを起動/停止するAWSCLI
https://www.kabegiwablog.com/entry/2019/09/20/113301
~~~省略~~~

おわりに

べんりですね。

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

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

PythonのBeautifulSoupでAWS What's Newの今月の一覧を取得する(強化版)

概要

BeautfulSoupをつかってAWS What's Newの今月の一覧を取得します。
本文も全部出してくれる強化版です。

スクリプト

実行してみる

こんなかんじでずらーっと今月の情報が出力されます。

ARMv6 や新しい機械学習コネクタをサポートする AWS IoT Greengrass 1.9.3 の提供開始
https://aws.amazon.com/jp/about-aws/whats-new/2019/09/aws-iot-greengrass-1-9-3-with-support-for-armv6-and-new-machine-learning-connectors-now-available/
投稿日: Sep 19, 2019
AWS IoT Greengrass Core 1.9.3 が公開されました。今回のリリースにより、AWS IoT Greengrass に ARMv6 アーキテクチャおよび新しい機械学習推論機能のサポートが追加されます。
この新しいプラットフォームのサポートにより、Raspbi
~~~省略~~~
Amazon Athena に、SELECT クエリの結果、または与えられた値のセットを使用して、テーブルにデータを挿入する機能を追加
https://aws.amazon.com/jp/about-aws/whats-new/2019/09/amazon-athena-adds-support-inserting-data-into-table-results-of-select-query/
投稿日: Sep 19, 2019
Amazon Athena で、INSERT INTO ステート
~~~省略~~~

おわりに

スクレイピングは迷惑をかけない範囲で


Elasticsearch実践ガイド impress top gearシリーズ

Elasticsearch実践ガイド impress top gearシリーズ

Python(boto3)でAWSCLIとおなじかんじでprofileをわたしてあげる

概要

PythonとAWSCLIをいったりきたりしていて、profileのわたしかたに統一性がなくて(特にPythonは作った人によって全然違ったりして)めんどくさいなあと思っていたのでそれらを解決できるようなものを書いた。

Pythonでも--profileをわたして実行させることができる。
AWSCLIの方に寄せるアプローチなのです。

コード

こんなかんじ。
profileが渡せているよという例としてget_caller_identityしている。

実行してみる

こんなかんじ。
--profileでわたしたconfigの値のロールでget_caller_identityしていることがわかる。

$ python ./profile.py --profile wawawa_test_role
arn:aws:sts::123456789012:assumed-role/wawawa_test_role/botocore-session-1569332255

なにも引数をわたさないとdefaultでうごきます。

$ python ./profile.py
arn:aws:iam::123456789012:user/kabegiwa

--helpでヘルプがみれます。

$ python ./profile.py --help
usage: profile.py [-h] [--profile [PROFILE]]

optional arguments:
  -h, --help           show this help message and exit
  --profile [PROFILE]  Use a specific profile from your credential file.

おわりに

sys.argvとかよりもかっこいいきがする


Amazon Web Services 定番業務システム14パターン 設計ガイド

Amazon Web Services 定番業務システム14パターン 設計ガイド

ワンライナーで特定のタグのついたインスタンスを起動/停止するAWSCLI

概要

AWSCLIのワンライナーで特定のタグのついたEC2インスタンスを起動/停止してみます。

インスタンスを起動する

Nameタグがwawawaとなっているインスタンスを起動するワンライナー

$ aws ec2 start-instances --instance-ids `aws ec2 describe-instances --filters "Name=tag:Name,Values=wawawa" "Name=instance-state-name,Values=stopping,stopped" --query "Reservations[].Instances[].InstanceId" --output text`

インスタンスを停止する

Nameタグがwawawaとなっているインスタンスを停止するワンライナー

$ aws ec2 stop-instances --instance-ids `aws ec2 describe-instances --filters "Name=tag:Name,Values=wawawa" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text`

おわりに

shell環境でしかうごかないよ。


AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト