AWS CLIを使ってCloudFormationを操作してS3バケットを作成する
こんにちは!さっしです!
今回はタイトルにある通り、AWS CLIを使ってCloudFormationを操作してS3を作成する方法をご紹介します。
AWS CLIとCloudFormationの関係性について手を動かしながら実感できるかと思いますので、是非やってみてください。
■完成図
■やりたいこと
・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についてちょっと調べてみた
■やること
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 2月 19 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ってほんと楽しいですね!