[JAWS-UG CLI] S3: #18 ソースコード用バケットの作成

.. 事前作業2. S3バケットの作成 (ソースコード保存用)

前提条件

S3への権限

S3に対してフル権限があること。

STSへの権限

STSに対してget-caller-identityサブコマンドの実行権限があること。

AWS CLIのバージョン

以下のバージョンで動作確認済

  • AWS CLI 1.11.28
コマンド
aws --version

結果(例):

  aws-cli/1.11.70 Python/2.7.12 Linux/4.4.11-23.53.amzn1.x86_64 botocore/1.5.33

バージョンが古い場合は最新版に更新しましょう。

コマンド
sudo -H pip install -U awscli

0. 準備

まず変数の確認をします。

変数の確認
cat << ETX

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
        AWS_DEFAULT_REGION:  (0.2) ${AWS_DEFAULT_REGION}
        AWS_ID               (0.3) ${AWS_ID}

ETX

結果(例):

  AWS_DEFAULT_PROFILE: (0.1) <s3にフル権限のあるプロファイル>
  AWS_DEFAULT_REGION:  (0.2) ap-northeast-1
  AWS_ID               (0.3) XXXXXXXXXXXX

変数が入っていない、適切でない場合は、それぞれの手順番号について作業を行います。

0.1. プロファイルの指定

プロファイルの一覧を確認します。

コマンド
cat ~/.aws/credentials \
       | grep '\[' \
       | sed 's/\[//g' | sed 's/\]//g'

結果(例):

  iamFull-prjz-mbpr13
  <s3にフル権限のあるプロファイル>
変数の設定
export AWS_DEFAULT_PROFILE='<s3にフル権限のあるプロファイル>'

0.2. リージョンの指定

変数の設定
export AWS_DEFAULT_REGION='ap-northeast-1'

0.3. AWS IDの取得

変数の設定
AWS_ID=$( \
        aws sts get-caller-identity \
          --query 'Account' \
          --output text \
) && echo ${AWS_ID}

結果(例)

  XXXXXXXXXXXX

最終確認

変数の確認
cat << ETX

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
        AWS_DEFAULT_REGION:  (0.2) ${AWS_DEFAULT_REGION}
        AWS_ID               (0.3) ${AWS_ID}

ETX

結果(例):

  AWS_DEFAULT_PROFILE: (0.1) <s3にフル権限のあるプロファイル>
  AWS_DEFAULT_REGION:  (0.2) ap-northeast-1
  AWS_ID               (0.3) XXXXXXXXXXXX

1. 事前作業

1.1. バケット名の指定

変数の設定
S3_BUCKET_NAME="source-${AWS_DEFAULT_REGION}-${AWS_ID}" \
        && echo ${S3_BUCKET_NAME}

同名バケットが存在しないことを確認します。

コマンド
aws s3 ls s3://${S3_BUCKET_NAME}/

結果(例):

  A client error (NoSuchBucket) occurred when calling the ListObjects operation: The specified bucket does not exist

2. バケットの作成

変数の確認
cat << ETX

        S3_BUCKET_NAME:     ${S3_BUCKET_NAME}
        AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION}

ETX
コマンド
aws s3api create-bucket \
        --bucket ${S3_BUCKET_NAME} \
        --create-bucket-configuration "LocationConstraint=${AWS_DEFAULT_REGION}"

結果(例):

  {
    "Location": "http://source-northeast-1-XXXXXXXXXXXX.s3.amazonaws.com/"
  }

3. 事後確認

3.1. バケットの存在の確認

コマンド
aws s3 ls s3://${S3_BUCKET_NAME}/

結果(例):

  (戻り値なし)

エラーが出なければOKです。

3.2. バケットのリージョンの確認

コマンド
aws s3api get-bucket-location \
        --bucket ${S3_BUCKET_NAME}

結果(例):

  {
    "LocationConstraint": "ap-northeast-1"
  }

完了