AWS CLI Builderはいいぞっていうおはなし。
たとえばこんなかんじでいろいろやってくれるのです。
かんがえなくても埋めていくだけでコマンドができるのです。
- メディア:
- この商品を含むブログを見る
AWS CLI Builderはいいぞっていうおはなし。
たとえばこんなかんじでいろいろやってくれるのです。
かんがえなくても埋めていくだけでコマンドができるのです。
かべぎわブログをスクレイピングしてくれます。
こんなかんじ。
こんなかんじ。
$ 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言語の基本から仕事のやり方まで
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シリーズ
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パターン 設計ガイド
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認定 ソリューションアーキテクト-アソシエイト
PythonのBeautifulSoupを利用してAWSのWhat's Newの今月のトピックの一覧を取得してみます。
こんなかんじで取得できます。
h3
タグをとってきてループさせています。
実行してあげるとこんなかんじです。
$ python ./scraping.py Amazon EKS がクラスターへのタグ付けをサポート Amazon DynamoDB 用 NoSQL Workbench のプレビュー版の発表 AWS Storage Gateway がファイルゲートウェイ向けの Amazon CloudWatch ログ記録およびメトリクスのサポートを追加 ~~~ 省略~~~
用法用量を守って正しくスクレイピング
株とPython─自作プログラムでお金儲けを目指す本 (技術の泉シリーズ(NextPublishing))
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を再起動してあげる。 これで起動するはず。
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認定 ソリューションアーキテクト ? アソシエイト教科書 徹底攻略シリーズ
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アドミニストレーター?
Python(boto3)でアクセスキーをローテーションさせてみます。
スクリプトはこんなかんじ。
こんなかんじのことをやってます。
.aws/credentials
に新しいアクセスキーの情報を書き込むアクセスキーがすでに2つ作成されていた場合、エラーになる。
.aws/credentials
が以下のような形式じゃなければならない
[default] aws_access_key_id = wawawa aws_secret_access_key = sasasa
べんりよー
独学プログラマー Python言語の基本から仕事のやり方まで
Python(boto3)を利用して自分のアクセスキーを削除してみます。
こんなかんじ。
実行するとこれを実行したユーザのAWSアクセスキーが削除されます。
作業終わりにこれを実行するようにするとか、踏み台のログアウト時とかシャットダウンスクリプトだとかにこのスクリプトを組み込んでおくとかして、アクセスキーの消し忘れを防ぐなどしたい。
という需要があって書いた。
徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書 徹底攻略シリーズ
VSCodeを利用してPythonのデバッグを行っていたときにこんなかんじのエラーが出力されてPythonが実行できなくなってしまった。
その対処法です。
[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が実行されるようになります。
おわり
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 エンタープライズ基盤設計の基本
IAMグループにアタッチされているポリシーをツリー状に表示するPythonを書いてみました。
スクリプトはこんなかんじ。
こんなかんじで動作します。
$ python iam_group_tree.py admin_group └─ AdministratorAccess test_group ├─ AlexaForBusinessReadOnlyAccess ├─ AmazonCloudDirectoryReadOnlyAccess ├─ AmazonChimeReadOnly └─ AmazonAppStreamReadOnlyAccess
こういうかんじの人間に優しい出力が役に立つときっていうのは意外にある気がする。
Amazon Web Services エンタープライズ基盤設計の基本
Pythonのスクリプトの中でAWSCLIを実行してみます。
こんなかんじで指定してあげることでAWSCLIを実行できます。
import subprocess subprocess.call(['aws', 's3', 'ls'])
べんりだったりそうでなかったりしそう。
AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー