Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] CloudFormation:#2 S3バケットの作成

More than 5 years have passed since last update.

http://jawsug-cli.doorkeeper.jp/events/13797 でのハンズオン資料です。

CloudFormationの共通テンプレートを置くためのS3バケットを、CloudFormationで作成します。

前提条件

  • S3へのフルアクセス権限

0. 事前作業

0.1. S3バケット名の決定

S3バケット名を決めておいてください。

コマンド
   $ CF_BUCKET_NAME='cf-example'

バケット名はS3全体でユニークである必要があります。

0.2. 作業用ディレクトリの作成

作業用ディレクトリを作成します。

コマンド
   $ WORK_DIR="${HOME}/tmp/aws_cf"
   $ mkdir -p ${WORK_DIR}
   $ cd ${WORK_DIR}

1. S3バケット作成

1.1. テンプレートの作成 (S3バケット作成)

CloudFormationテンプレートを作成します。

コマンド
   $ FILE_CF_TEMPLATE="${CF_BUCKET_NAME}-bucket.json"
   $ CF_RESOURCE_ID='S3Bucket'
   $ CF_DESCRIBE='CloudFormation template bucket'

JSONファイルを作成したら、フォーマットが壊れてないか必ず確認します。

コマンド
$ cat << EOF > ${FILE_CF_TEMPLATE}
{
     "AWSTemplateFormatVersion" : "2010-09-09",
     "Resources" : {
       "${CF_RESOURCE_ID}" : {
         "Type" : "AWS::S3::Bucket",
         "Properties" : {
            "BucketName" : "${CF_BUCKET_NAME}"
         }
       }
     },
     "Description": "${CF_DESCRIBE}"
}
EOF

JSONファイルを作成したら、フォーマットが壊れてないか必ず確認します。

コマンド
   $ cat ${FILE_CF_TEMPLATE} | json_verify
結果
   JSON is valid

1.2. S3バケットの作成

コマンド
   $ CF_STACK_NAME="${CF_BUCKET_NAME}-bucket" && echo ${CF_STACK_NAME}
結果
   cf-example01-bucket
コマンド
   $ aws cloudformation create-stack --stack-name ${CF_STACK_NAME} --template-body file://${FILE_CF_TEMPLATE}
結果
   {
       "StackId": "arn:aws:cloudformation:us-west-1:XXXXXXXXXXXX:stack/s3-bucket-www-example-jp/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
   }

1.3. スタックの状況確認

list-stacksコマンドで、スタックの状況を確認してみましょう。

コマンド
   $ aws cloudformation list-stacks \
     | jq -r --arg stackname ${CF_STACK_NAME} '.StackSummaries[] | select(.StackName == $stackname) | .StackStatus'
結果
CREATE_COMPLETE

StackStatusが'CREATE_COMPLETE'になっていれば作成は完了です。

それ以外が表示されている場合は、下記コマンドでFailedの文字が出ている前後を見て原因を調べます。

コマンド
$ aws cloudformation describe-stack-events --stack-name ${CF_STACK_NAME}

1.4. S3バケットの確認

コマンド
   $ aws s3 ls | grep ${CF_BUCKET_NAME}
結果
   2014-09-09 15:19:34 cf-example

1.5. スタックの内容確認

コマンド
   $ aws cloudformation get-template --stack-name ${CF_STACK_NAME}
結果
   {
       "TemplateBody": {
           "AWSTemplateFormatVersion": "2010-09-09", 
           "Description": "cf bucket", 
           "Resources": {
               "S3Bucket": {
                   "Type": "AWS::S3::Bucket", 
                   "Properties": {
                       "BucketName": "cf-example"
                   }
               }
           }
       }
   }

1.6. バケットのURL取得(HTTPS)

コマンド
   CF_BUCKET_URL="s3-`aws s3api get-bucket-location --bucket=${CF_BUCKET_NAME} --query LocationConstraint --output text | sed 's/None/us-east-1/'`.amazonaws.com/${CF_BUCKET_NAME}" \
   && echo ${CF_BUCKET_URL}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした