かべぎわブログ

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

AWS

AWSCLIでcloudtrailを利用してインスタンスになにがあったのかを調べる

AWS

概要 AWSCLIとcloudtrailを利用して特定のインスタンスになにがあったのかを調べてみたいと思います。 だれかが雑にインスタンスを停止してしまって誰が止めたんだ!!!!みたいな犯人探しのときにつかえます(遠い目) コマンド例 コマンドは以下のとおり。 …

AWSCLIでS3バケットを削除する

AWS

概要 AWSCLIをつかってS3バケット自体を削除してみようと思います。 削除する 以下のコマンドで削除することができます。 $ aws s3api delete-bucket --bucket wawawa-dst ちなみに バケットの中にオブジェクトが残っている場合 以下のようにエラーが出ます…

同じリージョンのS3同士を同期させる

AWS

概要 同じリージョンにあるS3バケットを同期させてみようと思います。 同期させる方法 AWSCLIをつかいます。 以下のようにすることでS3バケット2つを同期させることができます。 $ aws s3 sync s3://wawawa-src s3://wawawa-dst 実際にやってみる 実際にやっ…

複数のEC2インスタンスに一気にIAMロールをつけるシェルスクリプト

概要 複数のEC2インスタンスに一気にIAMロールを付ける必要があって、マネコンでポチポチするのめんどくさいなーと思ったのでつくった。 スクリプト つかいかた ./role_fukusuu.sh IAMロール名 インスタンスID インスタンスID... $ ./role_fukusuu.sh wawawa…

シェルスクリプトで複数インスタンスに一気にタグをつける

概要 シェルスクリプトとAWSCLIを利用して複数のインスタンスに一気にタグを付けてみたいと思います。 スクリプト こんなかんじでやってます。 肝心のAWSCLI実行部がJSONのなかに変数をしこむために地獄の様相を呈していますけれど仕方がなかった。 実行して…

AWSCLIの出力にjoinで文字列をくっつけて出力する

概要 AWSCLIの出力結果にjoin()をつかって任意の文字列をくっつけて出力してみたいと思います。 実際にやってみる インスタンスIDを出力してみると通常はこんな感じですが $ aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId' --…

AWSCLIの結果をソートする

AWS

概要 AWSCLIの出力結果をソートする2パターンをご紹介します。 sort_byでソートする 以下の例ではインスタンスの一覧からインスタンスIDとプライベートIPを表示して、それをインスタンスIDでソートしています。 --queryので指定する項目をsort_by()で囲って…

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…