AWS CloudFormation 管理ツール | Rain を使ってみよう!
「CloudFormation ってマネジメントコンソールで管理するのなんかめんどくね?」
AWS CloudFormation を使うにあたって、皆さん一度は思ったことがあるのではないでしょうか!?
どうも、雨の音が好きなエンジニアの横田です。本ブログでは、CloudFormation を使う際のお悩みあれこれを一気に解消してくれる可能性を秘めたツール、Rain をご紹介いたします!
(AWS CloudFormation についてはこちらの ブログ記事 をご確認ください。)
目次
AWS CloudFormation 管理ツール Rain とは?
Rain は、AWS CloudFormation のテンプレートやスタックを操作するためのコマンドラインツールです。(Rain 公式ドキュメント *1 より)
テンプレートファイルの作成補助やテンプレートファイルの比較、スタックのイベントログ出力といった AWS CloudFormation を使う際にあると便利な機能を提供してくれます。
AWS CloudFormation 管理ツール Rain の使い方を見てみよう!
Rain の使い方をコマンドラインをよく使う方にはおなじみ(?)、help オプションで確認してみます。
$ rain -h
Rain is a command line tool for working with AWS CloudFormation templates and stacks
Usage:
rain [command]
Stack commands:
cat Get the CloudFormation template from a running stack
deploy Deploy a CloudFormation stack from a local template
logs Show the event log for the named stack
ls List running CloudFormation stacks
rm Delete a running CloudFormation stack
watch Display an updating view of a CloudFormation stack
Template commands:
build Create CloudFormation templates
diff Compare CloudFormation templates
fmt Format CloudFormation templates
merge Merge two or more CloudFormation templates
pkg Package local artifacts into a template
tree Find dependencies of Resources and Outputs in a local template
Other Commands:
console Login to the AWS console
help Help about any command
info Show your current configuration
実行中のスタックのテンプレートを確認したり、AWS CloudFormation スタックをデプロイしたりと色々できますね!
「help オプションで確認なんてしねーよ!」って方は Rain 公式ドキュメント *1 からも使い方が確認できます。
気になった方は Rain をインストールし、是非ご自身で確認してみてください!
AWS CloudFormation 管理ツール Rain で VPC を構築してみよう!
Rainは .aws/config 、 .aws/credentials を参照して実行します。
前準備として、aws cli をインストールし、$ aws configure コマンドにて各種情報を保存しておきます。
それでは、Rain で VPC を作成します。
折角なので、テンプレートファイルも Rain を使って作成してみます!
まずは、rain build の使い方を確認します。
$ rain build -h
Outputs a CloudFormation template containing the named resource types.
Usage:
rain build [<resource type>...]
Flags:
-b, --bare Produce a minimal template, omitting all optional resource properties
--debug Output debugging information
-h, --help help for build
-j, --json Output the template as JSON (default format: YAML)
-l, --list List all CloudFormation resource types
--no-colour Disable colour output
resource type が必要ですね!
resource type も Rain で確認可能です。
$ rain build -l コマンドをそのまま実行すると、AWS CloudFormation の全 resource type が出力されるため、VPC に絞って出力します。
$ rain build -l | grep -i VPC
AWS::ApiGateway::VpcLink
AWS::ApiGatewayV2::VpcLink
AWS::EC2::LocalGatewayRouteTableVPCAssociation
AWS::EC2::VPC
AWS::EC2::VPCCidrBlock
AWS::EC2::VPCDHCPOptionsAssociation
AWS::EC2::VPCEndpoint
AWS::EC2::VPCEndpointConnectionNotification
AWS::EC2::VPCEndpointService
AWS::EC2::VPCEndpointServicePermissions
AWS::EC2::VPCGatewayAttachment
AWS::EC2::VPCPeeringConnection
AWS::MediaConnect::FlowVpcInterface
resource type を AWS::EC2::VPC で指定してファイル出力してみます。
$ rain build AWS::EC2::VPC > vpc.yaml
$ cat vpc.yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Template generated by rain
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: CHANGEME
EnableDnsHostnames: false # Optional
EnableDnsSupport: false # Optional
InstanceTenancy: CHANGEME # Optional
Tags:
- Key: CHANGEME
Value: CHANGEME
Outputs:
MyVPCCidrBlock:
Value: !GetAtt MyVPC.CidrBlock
MyVPCCidrBlockAssociations:
Value: !GetAtt MyVPC.CidrBlockAssociations
MyVPCDefaultNetworkAcl:
Value: !GetAtt MyVPC.DefaultNetworkAcl
MyVPCDefaultSecurityGroup:
Value: !GetAtt MyVPC.DefaultSecurityGroup
MyVPCIpv6CidrBlocks:
Value: !GetAtt MyVPC.Ipv6CidrBlocks
すごく簡単にテンプレートファイルの雛形が作成されました。
あとは CHANGEME となっている箇所を編集するだけですね!
テンプレートファイルを作成する際、書き方が覚えられなくて、毎回調べるのが大変なんですよね。。これだけでも Rain の便利さを実感できるのではないでしょうか?
ちなみに、下記のようにオプションを追加すれば、必須パラメータのみが出力されるようになります。
$ rain build -b AWS::EC2::VPC > vpc_bare.yaml
$ cat vpc_bare.yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Template generated by rain
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: CHANGEME
vpc_bare.yaml の CidrBlock を下記の通り編集しました。
# vpc_bare.yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Template generated by rain
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
このテンプレートファイルで VPC を作成したいと思います。
作成するスタック名を vpc としたいため、下記のように実行しました。
$ rain deploy vpc_bare.yaml vpc
CloudFormation will make the following changes:
Stack vpc:
+ AWS::EC2::VPC MyVPC
Do you wish to continue? (Y/n) Y
Deploying template 'vpc_bare.yaml' as stack 'vpc' in ap-northeast-1.
Stack vpc: CREATE_COMPLETE
Successfully deployed vpc
AWS マネジメントコンソールからも、デプロイが完了していることが確認できます。
スタックの削除も Rain で実行できます。
$ rain rm vpc
Stack vpc: CREATE_COMPLETE
Are you sure you want to delete this stack? (y/N) y
Successfully deleted stack 'vpc'
念の為、AWS マネジメントコンソールでもスタックが削除されていることを確認しておきます。
AWS CloudFormation 管理ツール Rain(まとめ)
いかがでしたでしょうか?
今回はテンプレートファイルの作成、スタックのデプロイ、スタックの削除の3点をご紹介いたしました。ご紹介した使い方の他にも Rain でできることはたくさんありますので、是非ご自身でもご確認ください!
【筆者実行環境】
- PC:MacBook Air (M1, 2020)
- OS:macOS Monterey 12.4
- aws cli :aws-cli/2.2.44 Python/3.8.8 Darwin/21.5.0 exe/x86_64 prompt/off
- Rain:Rain v1.2.0 darwin/arm64
*1 Rain 公式ドキュメント: rain | A development workflow tool for working with AWS CloudFormation.
元記事発行日: 2022年09月26日、最終更新日: 2024年02月28日