2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CloudFormationでAmazon DynamoDBテーブルを作成してみた

Posted at

はじめに

CloudFormationでAmazon DynamoDBを作成したので、手順メモです。

準備

aws-cliを使用してCloudFormationを実行するためインストールを行います。

aws-cliをインストール

AWS CLI のインストール(公式ドキュメント) に手順は記載されています。

$ pip3 install awscli --upgrade --user
$ aws --version
bash: /usr/local/bin/aws: /usr/local/opt/python/bin/python3.6: bad interpreter: No such file or directory

自分の環境ではbad interpreterというエラーがでました。
下記を参考にして再インストールを実施したら解決できました。
Fixing the 'Bad Interpreter' Error from AWS and Python 3.7
Macにpythonをインストールしaws-cliが実行できない経緯と解決方法

$ brew reinstall awscli
$ brew link --overwrite awscli
$ aws --version
aws-cli/1.16.170 Python/3.7.3 Darwin/18.6.0 botocore/1.12.160

アクセスキー作成

aws-cliを実行するために必要なクレデンシャルを作成します。
AWSアクセスキー作成 の記事がわかりやすいです。

IAMの設定

IAMの設定画面から設定を進めていきます。
スクリーンショット 2019-07-20 11.03.20.png

とりあえずFull Accessにしています。
スクリーンショット 2019-07-20 11.05.20.png

クレデンシャル情報をcsvでダウンロードしておきます。
スクリーンショット 2019-07-20 13.09.40.png

aws configureの設定

取得したクレデンシャル情報をconfigに設定します。
設定ファイルは ~/.aws/credentials に設定されています。

$ aws configure
AWS Access Key ID [****************5RHA]: xxxxxxx
AWS Secret Access Key [****************CNsa]: xxxxxxx
Default region name [ap-northeast-1]: ap-northeast-1
Default output format [json]:

cloudFormationファイル

AWS::DynamoDB::Table(公式ドキュメント) にsampleコードがあるのでそれを使用しています。
少し長いのでコード折りたたんでおきます。

cloudFormation.yml
AWSTemplateFormatVersion: "2010-09-09"
Resources: 
  myDynamoDBTable: 
    Type: AWS::DynamoDB::Table
    Properties: 
      AttributeDefinitions: 
        - 
          AttributeName: "Album"
          AttributeType: "S"
        - 
          AttributeName: "Artist"
          AttributeType: "S"
        - 
          AttributeName: "Sales"
          AttributeType: "N"
        - 
          AttributeName: "NumberOfSongs"
          AttributeType: "N"
      KeySchema: 
        - 
          AttributeName: "Album"
          KeyType: "HASH"
        - 
          AttributeName: "Artist"
          KeyType: "RANGE"
      ProvisionedThroughput: 
        ReadCapacityUnits: "5"
        WriteCapacityUnits: "5"
      TableName: "myTableName"
      GlobalSecondaryIndexes: 
        - 
          IndexName: "myGSI"
          KeySchema: 
            - 
              AttributeName: "Sales"
              KeyType: "HASH"
            - 
              AttributeName: "Artist"
              KeyType: "RANGE"
          Projection: 
            NonKeyAttributes: 
              - "Album"
              - "NumberOfSongs"
            ProjectionType: "INCLUDE"
          ProvisionedThroughput: 
            ReadCapacityUnits: "5"
            WriteCapacityUnits: "5"
        - 
          IndexName: "myGSI2"
          KeySchema: 
            - 
              AttributeName: "NumberOfSongs"
              KeyType: "HASH"
            - 
              AttributeName: "Sales"
              KeyType: "RANGE"
          Projection: 
            NonKeyAttributes: 
              - "Album"
              - "Artist"
            ProjectionType: "INCLUDE"
          ProvisionedThroughput: 
            ReadCapacityUnits: "5"
            WriteCapacityUnits: "5"
      LocalSecondaryIndexes: 
        - 
          IndexName: "myLSI"
          KeySchema: 
            - 
              AttributeName: "Album"
              KeyType: "HASH"
            - 
              AttributeName: "Sales"
              KeyType: "RANGE"
          Projection: 
            NonKeyAttributes: 
              - "Artist"
              - "NumberOfSongs"
            ProjectionType: "INCLUDE"

実行

作成と削除は冪等性なので何度実行しても問題ありません。

作成

スタックの作成(公式ドキュメント)

aws cloudformation create-stack --stack-name sample --template-body file://cloudFormation.yml
スクリーンショット 2019-07-20 13.18.43.png

削除

スタックの削除(公式ドキュメント)

aws cloudformation delete-stack --stack-name sample

参考URL

CloudFormationをとりあえず実行してみたい人のためのチュートリアル

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?