はじめに
業務でAWSに環境を作ることが多く、効率よく構築できるようCloud Formationを使って
構築を行ってみました。
##CloudFormationとは
CloudFormationとはテンプレートファイル(JSONまたはYAML)を使用してAWSリソースを自動で構築できるサービスです。
テンプレートファイルを作成していれば同様の環境を構築する際の時間を削減することができます。
作成する環境
今回はS3のバケットを作成するテンプレートを実行してみる
テンプレートの作成
storage.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: buckets for storing.
Metadata:
'AWS::CloudFormation::Interface':
ParameterGroups:
- Label:
default: 'Storage'
Parameters:
- BucketName
#スタック作成画面で任意で入力する項目をParametersに記載。今回はバケット名の項目のみ
Parameters:
BucketName:
Description: 'The name of the bucket to store the data in. If left blank, a bucket name will be generated.'
Type: String
Default: ''
Conditions:
HasBucket: !Not [!Equals [!Ref BucketName, '']]
Resources:
DataBucket:
Type: 'AWS::S3::Bucket'
Properties:
BucketName: !If [HasBucket, !Ref BucketName, !Ref 'AWS::NoValue']
AccessControl: Private
VersioningConfiguration:
Status: Enabled
# ポリシーの設定も可能
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
# 暗号化の設定
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: 'AES256'
# CORS設定をしたい場合は下記の様に記載
CorsConfiguration:
CorsRules:
- AllowedHeaders:
- '*'
AllowedMethods:
- 'GET'
- 'PUT'
AllowedOrigins:
- '*'
#CloudFormationのコンソール画面の「出力」に表示させたい内容をOutpusに設定する。
Outputs:
DataBucket:
Description: 'Name of the bucket'
Value: !Ref DataBucket
Export:
Name: !Sub '${AWS::StackName}-BucketName'
実際に動かしてみる
まずはAWSコンソールからCloudFormationへ移動し、スタックの作成を行う。
スタック作成画面がこちら
今回はテンプレートを用意しているので、以下の項目を指定して次に進みます。
次にスタック名と作成するバケットの名称の入力画面が表示されるので、入力したら次へ
この画面でスタックのオプションや詳細な設定ができますが、今回は何もせずに次へ
この画面でスタックの設定の最終確認を行い。問題がなければ画面下部のスタックの作成へ
スタックが作成され、下記の様に処理が実行されるとS3に指定した名前でバケットが作成されています。
おわりに
今回はS3のみの作成でしたが、次回以降EC2、VPC等のテンプレートも作成して記事にしたいと思います。
参考資料