見出し画像

AWS CLIを使ってCloudFormationを操作してS3バケットを作成する

こんにちは!さっしです!

今回はタイトルにある通り、AWS CLIを使ってCloudFormationを操作してS3を作成する方法をご紹介します。

AWS CLIとCloudFormationの関係性について手を動かしながら実感できるかと思いますので、是非やってみてください。

■完成図

画像1

■やりたいこと

・AWS CLIを使ってCloudFormationを操作してS3バケットを作成したい
・AWS CLIの操作は、EC2を踏み台サーバとしてそこから行いたい

■事前準備

1.パブリックサブネットに配置した「EC2」がある
2.EC2内の「credentials」に「S3FullAccess」と「 CloudFormationFullAccess」のポリシーがアタッチされたロールの「role_arn」が記述され、そのロールが「ユーザ(今回はtest1ユーザ)」にアタッチされている
3.EC2内の「config」に「ap-northeast-1」と「json」を設定している
※詳細な設定方法は以下のブログを参考にしてください
AWS CLIについてちょっと調べてみた

画像2

■やること

1.S3バケットを作成する内容が記述されたCloudFormation用の「stack.yml」ファイルを作成する
2.EC2にローカルで作成した「stack.yml」をアップロードする
3.AWS CLIのcloudformationコマンドでS3バケットを作成する
4.AWS CLIのcloudformationコマンドでS3バケットを削除する

■1.S3バケットを作成する内容が記述されたCloudFormation用の「stack.yml」ファイルを作成する

ファイル:stack.yml
・以下の内容を入力し保存する


AWSTemplateFormatVersion: "2010-09-09"
Description: S3BucketMadeWithAWSCli
Resources:
 S3Bucket:
   Type: AWS::S3::Bucket
   Properties:
     BucketName: s3bucketmadewithawscli

■2.EC2にローカルで作成した「stack.yml」をアップロードする

サービス:ローカルのSSHクライアント
・以下のコマンドを実行する

scp -i hoge-keypair.pem ~/stack.yml ec2-user@xxx.xxx.xxx.xxx:/home/ec2-user

・stack.ymlファイルがアップロードされていることを確認する

ssh -i hoge-keypair.pem ec2-user@xxx.xxx.xxx.xxx
[ec2-user@ip-10-0-0-114 ~]$ ll
-rw-r--r-- 1 ec2-user ec2-user 181  219 02:07 stack.yml

■3.AWS CLIのcloudformationコマンドでS3バケットを作成する

サービス:ローカルのSSHクライアント
・以下のコマンドを実行する

aws cloudformation deploy --template-file stack.yml --stack-name s3bucketcreate --profile test1

※aws cloudformation deploy --template-file {テンプレートファイル名} --stack-name {スタック名}
※--profile名は適宜作成したユーザ名を指定する

○Tips
エラーが発生する場合は、ユーザに適切な権限のポリシー(S3FullAccessやCloudFormationFullAccess)がアタッチされていない可能性があります

・S3バケットが作成されていることを確認する

[ec2-user@ip-10-0-0-114 ~]$ aws s3 ls --profile test1
2021-02-19 02:37:43 s3bucketmadewithawscli

■4.AWS CLIのcloudformationコマンドでS3バケットを削除する

・以下のコマンドを実行する

aws cloudformation delete-stack --stack-name s3bucketcreate --profile test1

※aws cloudformation delete-stack --stack-name {スタック名}

・S3バケットが削除されていることを確認する

[ec2-user@ip-10-0-0-114 ~]$ aws s3 ls --profile test1


設定は以上になります。

AWSってほんと楽しいですね!

この記事が気に入ったらサポートをしてみませんか?