かべぎわブログ

ブログです

かべぎわブログをスクレイピングしてくれる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版
  • この商品を含むブログを見る

Python(boto3)でアクセスキーをローテーションする

概要

Python(boto3)でアクセスキーをローテーションさせてみます。

スクリプト

スクリプトはこんなかんじ。

処理の流れ

こんなかんじのことをやってます。

  • 古い(現在の)アクセスキーで新しいアクセスキーを作成する
  • .aws/credentialsに新しいアクセスキーの情報を書き込む
  • 新しいアクセスキーを利用して古いアクセスキーを削除する

制限事項

  • アクセスキーがすでに2つ作成されていた場合、エラーになる。

  • .aws/credentialsが以下のような形式じゃなければならない

[default]
aws_access_key_id = wawawa
aws_secret_access_key = sasasa

おわりに

べんりよー

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

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

Python(boto3)で自分のアクセスキーを削除する

概要

Python(boto3)を利用して自分のアクセスキーを削除してみます。

スクリプト

こんなかんじ。


実行するとこれを実行したユーザのAWSアクセスキーが削除されます。

おわりに

作業終わりにこれを実行するようにするとか、踏み台のログアウト時とかシャットダウンスクリプトだとかにこのスクリプトを組み込んでおくとかして、アクセスキーの消し忘れを防ぐなどしたい。
という需要があって書いた。

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

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

VSCodeでTimeout waiting for debugger connectionというエラーがでるときの解消法

概要

VSCodeを利用してPythonのデバッグを行っていたときにこんなかんじのエラーが出力されてPythonが実行できなくなってしまった。

f:id:kabegiwakun:20190904224943p:plain

その対処法です。

対処法

[Open launch.json]ボタンを選択してVSCodeでlaunch.jsonを開きます。
以下のように設定されているはずなのでこの設定を

        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }




こんなかんじに書き換えてあげます(consoleの箇所をinternalConsoleに変更している)

        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "internalConsole"
        }

こうすることでなにか別のコンソールではなく、VSCodeのデバッガでPythonが実行されるようになります。

おわりに

おわり

徹底解説Visual Studio Code

徹底解説Visual Studio Code

KMSのAWSマネージド型キーのキーポリシーを確認する

概要

KMSのAWSマネージド型キーのキーポリシーを確認してみます。
AWSマネージド型キーはカスタマー管理型のキーとちがい、マネジメントコンソールからキーポリシーを確認することはできませんが、AWSCLIを利用することで確認することができます。

コマンド

こんなかんじのコマンドで確認することができます。
この例はaws/s3のマネージド型キーのキーポリシーが確認できます。
policy-nameはdefault固定です。

$ aws kms get-key-policy --key-id wawawa --policy-name default
{
    "Policy": "{\n  \"Version\" : \"2012-10-17\",\n  \"Id\" : \"auto-s3-2\",\n  \"Statement\" : [ {\n    \"Sid\" : \"Allow access through S3 for all principals in the account that are authorized to use S3\",\n    \"Effect\" : \"Allow\",\n    \"Principal\" : {\n      \"AWS\" : \"*\"\n    },\n    \"Action\" : [ \"kms:Encrypt\", \"kms:Decrypt\", \"kms:ReEncrypt*\", \"kms:GenerateDataKey*\", \"kms:DescribeKey\" ],\n    \"Resource\" : \"*\",\n    \"Condition\" : {\n      \"StringEquals\" : {\n        \"kms:CallerAccount\" : \"123456789012\",\n        \"kms:ViaService\" : \"s3.ap-northeast-1.amazonaws.com\"\n      }\n    }\n  }, {\n    \"Sid\" : \"Allow direct access to key metadata to the account\",\n    \"Effect\" : \"Allow\",\n    \"Principal\" : {\n      \"AWS\" : \"arn:aws:iam::123456789012:root\"\n    },\n    \"Action\" : [ \"kms:Describe*\", \"kms:Get*\", \"kms:List*\" ],\n    \"Resource\" : \"*\"\n  } ]\n}"
}

おわりに

AWSマネージド型キーのキーポリシーが確認できます。
マネージドポリシーでいいかーとおもって使っていると権限が足りなくて実は裏でエラーになっているみたいなことになったりならなかったりするので確認しておくとよいです。

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

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

IAMグループにアタッチされているポリシーをツリー状に表示するPython

概要

IAMグループにアタッチされているポリシーをツリー状に表示するPythonを書いてみました。

スクリプト

スクリプトはこんなかんじ。

動かしてみる

こんなかんじで動作します。

$ python iam_group_tree.py
admin_group
└─ AdministratorAccess

test_group
├─ AlexaForBusinessReadOnlyAccess
├─ AmazonCloudDirectoryReadOnlyAccess
├─ AmazonChimeReadOnly
└─ AmazonAppStreamReadOnlyAccess

おわりに

こういうかんじの人間に優しい出力が役に立つときっていうのは意外にある気がする。

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

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

PythonでAWSCLIを実行する

概要

Pythonのスクリプトの中でAWSCLIを実行してみます。

こんなかんじ

こんなかんじで指定してあげることでAWSCLIを実行できます。

import subprocess

subprocess.call(['aws', 's3', 'ls'])

おわりに

べんりだったりそうでなかったりしそう。

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

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