かべぎわブログ

ブログです

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認定 ソリューションアーキテクト-アソシエイト

PythonのBeautifulSoupでAWS What's Newの今月の一覧を取得する

概要

PythonのBeautifulSoupを利用してAWSのWhat's Newの今月のトピックの一覧を取得してみます。

スクリプト

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

h3タグをとってきてループさせています。

実行してみる

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

$ python ./scraping.py
Amazon EKS がクラスターへのタグ付けをサポート
Amazon DynamoDB 用 NoSQL Workbench のプレビュー版の発表
AWS Storage Gateway がファイルゲートウェイ向けの Amazon CloudWatch ログ記録およびメトリクスのサポートを追加
~~~ 省略~~~

おわりに

用法用量を守って正しくスクレイピング


株とPython─自作プログラムでお金儲けを目指す本 (技術の泉シリーズ(NextPublishing))

株とPython─自作プログラムでお金儲けを目指す本 (技術の泉シリーズ(NextPublishing))

error: Call to WHvSetupPartition failed: ERROR_SUCCESSというエラーでVirtualBoxが起動しなくなったときの対処法

概要

Vagrantが以下のようなエラーで起動しなくなってしまった
(以下のログはvagrant reloadしたときのものだけれど)

PS C:\Users\takak\vagrant\centos7> vagrant reload
==> default: Checking if box 'centos/7' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "6358bb91-a512-4407-b3ff-a891b2a55645", "--type", "headless"]

Stderr: VBoxManage.exe: error: Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

対処法

管理者権限でPowershellまたはコマンドプロンプトを起動し、以下のコマンドを実行してあげる。

bcdedit /set hypervisorlaunchtype off

そしてホストOSを再起動してあげる。 これで起動するはず。


Vagrant入門ガイド

Vagrant入門ガイド

Python(boto3)で~/.aws/configをつかってのAssumeRoleする

概要

Python(boto3)で~/.aws/configの設定をもとにAssumeRoleしてみます。

スクリプト

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

前提

~/.aws/configはこんなかんじとする。

[default]
region = ap-northeast-1

[profile wawawa_test_role]
role_arn = arn:aws:iam::123456789012:role/wawawa_test_role
region = ap-northeast-1
source_profile = default

実行してみる

実行してみます。

$ python assume_role_config.py

{'UserId': 'AROA57T5RBG4NXXXXXXXX:botocore-session-1568437150', 'Account': '123456789012', 'Arn': 'arn:aws:sts::123456789012:assumed-role/wawawa_test_role/botocore-session-1568437150', 'ResponseMetadata': {'RequestId': '64639f72-d6ac-11e9-8076-21663c40f1af', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '64639f72-d6ac-11e9-8076-21663c40f1af', 'content-type': 'text/xml', 'content-length': '477', 'date': 'Sat, 14 Sep 2019 04:59:10 GMT'}, 'RetryAttempts': 0}}

get_caller_identity()がwawawa_test_roleで実行されていることがわかります。

おわりに

べんり


徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書 徹底攻略シリーズ

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書 徹底攻略シリーズ

Python(boto3)でAssumeRoleする

概要

Python(boto3)でAssumeRoleしてみます。

スクリプト

こんなかんじ。

実行してみる

get_caller_identityしてみるとこんなかんじでAssumeRoleされていることがわかる。

$ python ./assume_role.py

{'UserId': 'AROA57T5RBG4BKZFFOHVS:wawawa', 'Account': '123456789012', 'Arn': 'arn:aws:sts::123456789012:assumed-role/wawawa_role/wawawa', 'ResponseMetadata': {'RequestId': '54126d63-d495-11e9-a87b-839603060e0e', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '54126d63-d495-11e9-a87b-839603060e0e', 'content-type': 'text/xml', 'content-length': '430', 'date': 'Wed, 11 Sep 2019 13:09:03 GMT'}, 'RetryAttempts': 0}}

AWS認定アソシエイト3資格対策?ソリューションアーキテクト、デベロッパー、SysOpsアドミニストレーター?

AWS認定アソシエイト3資格対策?ソリューションアーキテクト、デベロッパー、SysOpsアドミニストレーター?

  • 作者: 平山毅,堀内康弘,福垣内孝造,岡智也,池田大,原江梨佳,澤田拓也,原俊太郎,仲村勇亮,上村祐輝,鳥谷部昭寛
  • 出版社/メーカー: リックテレコム
  • 発売日: 2019/07/10
  • メディア: Kindle版
  • この商品を含むブログを見る