かべぎわブログ

技術的なことについてかけたらいいな…

AWS

boto3のclientとresourceのちがい

AWS

概要 boto3におけるclientとresourceのちがいについて雑に調べたのでまとめる。 client 低レベルのサービスアクセスAPI 呼び出すたびにターゲットとなるリソースを明示的に指定する必要がある そのため抽象化するには不向きかも レスポンスがJSON形式 resour…

Lambda(Python)でAMIとそれに紐付いたスナップショットの世代管理をする

概要 Lambda(Python) を利用してAMIとそれに紐付いているスナップショットの世代管理をしてみようと思います。 スクリプト例 ちょっとした説明 タグにauto_backupと書いてあるAMIの世代管理をしてくれます。 上の方の変数generationに指定した数だけAMIを保…

Route53のホストゾーンを削除するときはレコードセットを全部削除しておく

AWS

概要 Route53でHosted Zoneを削除するときになんかエラーがでたのでそれの解決方法 こんなエラーがでた Before you can delete a hosted zone, you must first delete all resource record sets except the NS and SOA resource record sets for the zone ap…

Lambda(Python)でインスタンスの特定のタグの値がなんなのかを出力する

概要 Lambda(Python3)をつかってEC2インスタンスについているあるタグの値がなんなのかを出力してみます。 スクリプト tag_keyに出力したいタグのkeyを指定します。 実行結果 たとえば、こんなかんじでタグがついていたとします。 それをこのLambdaを実行す…

Lambda(Python)で特定のVPCの中のサブネットの一覧を出力する

概要 Lambda(Python)を利用して、特定のVPCの中のサブネットの一覧を出力してみたいと思います。 スクリプト例 Lambdaのスクリプト的にはこんなかんじ。 実行結果 { 'Subnets': [{ 'AvailabilityZone': 'ap-northeast-1c', 'AvailableIpAddressCount': 250, …

CloudWatchで日と曜日を指定するときはどちらかに?をつかう

AWS

わりと忘れがちなのでメモ。 概要 CloudWatchのスケジュールのcron式で日と曜日を指定するときに、ちゃんと設定しているはずなのに以下のようなメッセージがでてきたのでそれの回避方法です。 Parameter ScheduleExpression is not valid. 回避方法 こんなか…

複数のAWSマネジメントコンソールを利用するときのChromeの設定のすすめ

AWS

概要 AWSのマネジメントコンソールを複数アカウント/ユーザ分利用することがまれによくあると思います。 別のアカウントでマネジメントコンソールを立ち上げたときに以下のような画面が出てしまって、セッションが全部切り替わってしまって、あーーーーーー …

Amazon Linux2 に自作サービスを追加する

今回はAmazonLinux2のSystemdに自作サービスを追加してみようと思います。 手順 サービスとして追加するスクリプトの準備 ユニットファイルを作成する 各項目のちょっとした解説 サービスとして認識されたかどうか確認する サービスを有効化(enable)する サ…

Amazon Linux2 にepelリポジトリを追加する

概要 AmazonLinux2で利用できるamzn2-coreリポジトリではインストールできないものがでてきたのでリポジトリを追加する方法をメモ。 RHEL7用のリポジトリを追加しているだけ リポジトリを追加する手順 概要 リポジトリを追加する手順 すでに追加されているyu…

AWSCLIですべてのLambdaについているタグの一覧を表示するシェルスクリプト

概要 AWSCLIでLambdaのすべての関数についているタグの一覧を取得するシェルスクリプトを作成してみました。 aws lambda list-tagsはARNを指定することでその関数にアタッチされているタグを表示することができます。 ARN指定ですのですべての関数を見に行く…

Amazon Linux2からGitHubのリポジトリへPushする

Amazon Linux2からGitHub上のリポジトリへPushするやりかたです。 環境 Pushするまでの手順 事前準備 Gitをインストールする ローカルリポジトリを作成する git configでユーザ名とメールアドレスを設定する GitHubにssh接続するための鍵を作成する GitHubに…

Windowsインスタンスの停止時にログをS3に転送する

概要 Windowsインスタンスの停止時にS3にローカルのログファイルを転送する処理をご紹介します! 前提 Windows Server 2016 AWSCLIが利用可能な環境 シャットダウンスクリプトの設定手順 スタートメニューの「ファイル名を指定して実行」に「gpedit.msc」と…

最大公約数を求めるLambda(Python3)

なんかまったく需要がなさそうだけど気の迷いでつくりました。 概要 変数のxとyに整数を入力してあげると、printで結果を返してくれます。 以下のコードでは84と16の最大公約数を求めています。 かんたんな説明 最大公約数は以下のようにして求めることがで…

IAMロールの権限でCyberduckを利用してS3とファイルをやりとりしてみる

今回はCyberduckというGUIのFTPクライアントツールを利用してAWS上のS3バケットとIAMロールを付与したWindowsインスタンス上でファイルのやり取りをしてみたいと思います。 この方法を利用することでアクセスキーを発行しなくてもCyberduckを利用することが…

AnsibleでWindowsにAWS CLIをインストールする

今回はAnsibleでWindows環境にAWS CLIをインストールしてみたいと思います。 事前準備 AWS公式からAWS CLIのインストーラをダウンロードしてきます。 aws.amazon.com 以下の赤枠から32ビットまたは64ビットのものをダウンロードします。 Ansibleを実行する …

AnsibleでEC2インスタンスを作成してみる

AnsibleでEC2インスタンスを作成してみようと思います。 環境 Ansible 2.4.2 python 2.7 インスタンスを作成してみる インスタンスを作成してみます。 実行コマンド $ ansible-playbook -i ansible_hosts instance_create.yml playbookは以下のようにしてい…

Auto Scalingでスケールインしたときの動作まとめ

AWS

概要 Auto Scalingを利用していて、スケールインしたときの動きについてまとめてみます。 AWSドキュメントによると、スケールイン時のうごきが以下の通り。 Auto Scaling は、選択したアベイラビリティーゾーンで、保護されていないどのインスタンスが最も古…

boto3でDynamoDBのテーブルの内容をscanしてすべて取得してみる

boto3を利用してDynamoDBのテーブルの内容をscanしてすべて取得してみたいと思います。 前提 以下のようなテーブルを用意しています。 これをすべてscanして取得します。 コード コードは以下の通りです。単純ですね! python 以下のような結果が返ってくる…

PackerでWindowsServerのAMIを作成する

PackerでWindowsServerのAMIをつくってみます。 これが考えられる最小構成だと思います。 これに肉付けすることでカスタムAMIを作成することができると思います。 環境 Packer v1.1.3 Packerが動いているサーバ : Amazon Linux 2 PackerがつくるWindowsServe…

Amazon Linux 2でPacker を実行したところ/usr/share/cracklib/pw_dict.pwd: Permission deniedのエラーがでる

事象 Amazon Linux 2 でPackerを実行しようとしたところ、以下のようなエラーが出てしまいました。 $ packer /usr/share/cracklib/pw_dict.pwd: Permission denied /usr/share/cracklib/pw_dict: Permission denied 原因 どうやら以下のPackerを実行してしま…

EC2 External InventoryでプライベートIPで取得したい

AnsibleのEC2 External InventoryでEC2インスタンスの情報を取得したとき、デフォルトのままだと以下のようにIPアドレスがパブリックIPで表示されるかと思います。 $ ./ec2.py { "_meta": { "ap-northeast-1a": [ "54.xxx.xxx.xxx", "13.yyy.yyy.yyy" ], "ta…

EC2 External Inventoryを利用してAnsibleのhostsを動的に管理する

Ansibleを利用した構成管理では、実行対象のホストをインベントリファイルと呼ばれるファイルに記載しておく必要があります。 以下のようなかんじ [local] localhosts [test_server] 192.140.1.1 192.140.1.2 [web_server] 192.140.2.1 これだと、AWSでAutoS…

AnsibleでS3からファイルをダウンロードする3つの方法

AnsibleでS3からファイルをダウンロードする方法を紹介します! ① s3_getを利用する AnsibleのCloudModuleであるs3_getを利用する方法です。 前提条件 ターゲットノードにS3へのアクセス許可が必要 実行コマンド $ ansible-playbook -i ansible_hosts s3_get…

S3上のテキストファイルをLambda(Python)で取得する

今回はS3の中に入っているテキストファイルの内容をLambda(Python)で取得してみたいと思います。 S3上には内閣府が公表している国民の休日のcsvファイルの文字コードをutf-8に変換したものを格納しています。 ↓これをsjisからutf-8に変換 http://www8.cao.go…

LambdaのトリガにCloudWatchを設定した際にWe currently do not support adding policies for $LATEST. のエラーがでた場合の対処法

AWS

LambdaのトリガにCloudWatchを設定した際にWe currently do not support adding policies for $LATEST.のエラーがでた場合の対処法をご紹介します。 事象 バージョンが$LATESTのLambda関数のトリガにCloudWatch Eventsを追加しようとしたところ以下のような…

停止中のインスタンスのIAMロールを置換するとエラーになる

AWS

だいたいタイトルのとおりです。 停止中のEC2インスタンスのIAMロールを置換しようとするとエラーがでて、置換することができません。 以下のようなエラーがでます。 when calling the ReplaceIamInstanceProfileAssociation operation: The association iip…

AWSCLI describe-instances でよく使うコマンドまとめ【随時更新】

AWS

EC2インスタンスの一覧を見るAWS CLIのdescribe-instancesコマンドでよくつかっているコマンドを紹介します。 リージョン内のすべてのインスタンスの情報を取得 aws ec2 describe-instances 特定のインスタンスIDの情報を取得 aws ec2 describe-instances --…

S3で一定期間が経過したファイルをGlacierに格納する

AWS

S3上にアクセスログを定期的に書き込むようなシステムがあったとして、古いアクセスログも残しておこなければならないんだけどそんなに頻繁に利用するわけではないから安価に保存したいといった場合があります。 これらを実現するために S3バケットにライフ…

Ubuntu16.04で拡張ネットワーキングをONにする【AWS】

AWS

EC2で拡張ネットワーキングを有効化する設定方法をご紹介します。 そもそも拡張ネットワーキングとは? 設定方法 環境 ネットワークインターフェイスドライバーを確認する ixgbevfモジュールをインストールする 拡張ネットワーキングの設定を行う そもそも拡…

S3で一定期間が経過したファイルをライフサイクルで削除したい

AWS

S3上にアクセスログを定期的に書き込むようなシステムがあったとして、古いアクセスログを自動的に消す仕組みを作ってみたいと思います。 これらを実現するために S3バケットにライフサイクルルールを設定し、古いログを削除するよう設定します。 ライフサイ…