佐伯航(18)139139件のシェア(ちょっぴり話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。こんにちは、佐伯です。AWSリソースの設定をマネジメントコンソールから目視確認するのはつらみがありますよね。いうことで、今日はAWSリソースをテストするツール、awspecについて紹介したいと思います。awspecとはawspecはAWSのリソース構成をServerspecのようにテストできるツールです。GitHubリポジトリは下記になります。direnvの話になるので、普段使ってる方は省略してください。OSSを利用する際、バージョン管理が重要な課題になってきます。注目度が高いOSSほど頻繁にバージョンアップされ、新たな機能追加やバグ修正が行われます。稀にバージョンアップによって意図せぬバグが生まれ、以前のバージョンではできていたことができなくなってしまうこともあります。そのため、既存のコードが動作するかをバージョンアップのタイミングで確認せずに安易にバージョンアップしてしまうと、ハマってしまうことがありますので、rbenvでRubyのバージョンを、Bundlerでgemのバージョンを管理できるように、ローカル環境を整えましょう。その後CIを導入する場合でも同じ仕組みを使うことができると思いますので、ちゃんと取り組みたいポイントになります。rbenvのインストールといいつつも、過去エントリのご紹介になります。下記エントリを参考にrbenvをインストールして下さい。rbenvは複数のRubyバージョンをディレクトリごとなどの単位で切り替えることができます。rbenvとruby-buildで複数バージョンのrubyをインストール様々な言語の実行環境が必要な方は下記エントリを参考にanyenvをインストールしても良いと思います。anyenvを使って*env系をまとめて管理Bundlerのインストールこちらも過去エントリ(というか↑の続き)の紹介になります。Bundlerでgemのバージョン管理を行うのでインストールします。bundlerでgemをプロジェクトごとに管理する(必要に応じて)direnvのインストール複数のAWSアカウントを使用している場合は、AWSアカウント毎のIAMユーザーのアクセスキー/シークレットキーを使用するのではなく、direnvを使用してAssumeRoleで一時クレデンシャルを環境変数にセットする方法がおすすめです。resources.に記載のとおりですが、上記のツール類を使った場合のセットアップ方法を書きます。2.1以上が必要です。2.4.3をインストールします。2.4.3を初めて入れたので、Bundlerもインストールしておきます。installを実行してawspecとrakeをインストールします。initコマンドでinitファイルを生成します。CLIの認証情報にも対応してますし、spec/secrets.ymlに設定してもよいですし、紹介したdirenvを使って環境変数にセットする形でもよいです。IAMの権限は基本的にはRead権限があれば大抵のテストは実行できると思います。動かしてみるawspecを使ってAWSリソースをテストしてみましょう。その前にそもそもテストするAWSリソースがないので、さくっとTerraformで作っちゃいます。Refistryのvpc/awsモジュールを使ったvpc.tfを作成し、VPC、サブネット、ルートテーブル、インターネットゲートウェイを作成しました。}}テストコードを書く現在のディレクトリ構成は下記のとおりです。awspec/spec配下にテストコードを作成します。bundle基本的にはドキュメントを読みながらリソースごとにテストする項目を決め、*_spec.rbというファイル名でテストを書きます。リソース単位でファイルを分ける必要はないですが、私はなんとなく分けてます。'spec_helper'を書きましょう。specでテストが実行できます。failuresテキストじゃあんまりパッとしないので、画像で一部分を貼ります。ちなみに、テストが失敗した時はこんな感じ。spec/<ファイル名>で実行できます。failuresテストコードを生成するawspecにはテストコードを生成するgenerateサブコマンドがあります。v1.3.0でテストコードを生成できるリソースは下記の通りです。tag)例えば、今回作成したVPC(Name:my-vpc)のテストは以下のコマンドで生成できます。生成されたテストコードは標準出力に出力されるので、リダイレクトなりして*_spec.rbファイルに書きます。'spec_helper'を書くのを忘れがちになるので注意しましょー。}end全てのリソースに対応しているわけではないAWSは新しいサービスや機能がガンガンリリースされているので、全てのAWSリソースに対応しているわけではありません。「これテストしたいけど対応してないなー」なんて思ったら、コントリビュートチャンスです。まとめ簡単にawspecの使い方を紹介させて頂きました。CloudFormationやTerraformなどの構成管理ツールでAWS環境を構築しているのだから、テストは不要といった意見もありますが、運用していく中であるべき姿に保たれているか?をチェックすることは大事だと思います。GitリポジトリとCodeBuildやCircleCIなどのサービスを連動させて自動テストしたり、定期的に自動テストしたりできるといい感じになるので、以下エントリも参考にして頂ければと思います。189,345沖縄生まれ沖縄育ちの猫好きです。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。本が出ていたので読んでみたところよかったので紹介させていただきます。使いたいときの注意点を書きました。新井成一64最近Sphinxつかってドキュメントを書いてるのですがなかなかイケています。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介255SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健232こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。