今回やったこと
- S3バケットの作成
コンソールで設定項目を確認てから、テンプレート作成 - AWS CLIでの、スタック作成・スタック削除・テンプレートの検証
- 次回申し送り事項
EC2からの接続設定
[参考](https://aws.amazon.com/jp/premiumsupport/knowledge-center/connect-s3-vpc-endpoint/)
1. S3バケットの作成
一度コンソールを確認する。
- 一般的な設定
- バケット名
- リージョン
- オブジェクト所有者
- ACL無効
- ブロックパブリックアクセス設定
- ブロックしない
- バージョニング
- 無効
- デフォルトの暗号化
- 無効
次に公式のサンプルテンプレートを見る。
Resources:
S3Bucket:
Type: 'AWS::S3::Bucket'
DeletionPolicy: Retain
Properties:
BucketName: DOC-EXAMPLE-BUCKET
…あれ、作るだけなら簡単なのでは?
と思ったけど、EC2からの接続設定とかCORS設定とか、そのあたりで難儀しそう。
リソース同士の関係性の記述は難しい。RDSのときも苦労した。
2. AWS CLIでの、スタック作成・スタック削除・テンプレートの検証
本当はEC2からの接続までやりたかった。時間的に、今回はCLI操作でスタックの作成をやってみる(今まではGUIでポチポチやってた)。
公式ドキュメントを確認。CLI自体はインストール済。
AWS Command Line Interface の使用
スタック作成
% aws cloudformation create-stack \
--stack-name myfirsts3 \
--template-body file:///Users/わしの名前/Desktop/firsts3.yml
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:********:stack/myfirsts3/********"
}
改行して入力するときは \
(スペースが必要)なんですね。。。
作成できたか確認
aws s3 ls
コマンドを打つ。出てこない。以下も確認してみる。
% aws cloudformation describe-stacks
{
"Stacks": [
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:********:stack/firsts3/********",
"StackName": "firsts3",
"CreationTime": "2022-06-27T22:36:58.883000+00:00",
"DeletionTime": "2022-06-27T22:37:05.014000+00:00",
"RollbackConfiguration": {},
"StackStatus": "ROLLBACK_COMPLETE",
"DisableRollback": false,
"NotificationARNs": [],
"Tags": [],
"DriftInformation": {
"StackDriftStatus": "NOT_CHECKED"
}
失敗。どうしてだろうと思ったら,バケット名の命名規則とかユニーク性に引っかかっていた。こんなしょうもないところで…
aws cloudformation delete-stack --stack-name
でスタックを削除し、再度作成。今度は成功。
テンプレートの検証
検証機能ないのかなと思ったら、どうやらあるらしい。
aws cloudformation validate-template --template-body file://ファイル名
検知できるのは構文エラーだけみたいです。リソースタイプの誤り、プロパティの誤りは検知してくれたが、バケット名のユニーク性、インデント等はチェックされなかった。
そのへんのエラーはコンソールで確認するしかないのだろうか?