cloudformation dynamoDB

· ☕ 1

今日はdynamo用のtemplateチートシートです。

awscliを利用できるようにしていれば、すぐにお使い頂けるようにしてあります!

使い方

  1. ↓templateをtemplate-dynamo.yamlで保存。

  2. 実行shを実行

実行例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ table_name=test_table
$ env=dev
$ param="Env=$env TableName=$table_name HashKey=hash-key RangeKey=range-key"
$ #↑を書き換える
$ template_name="dynamo"
$ stack_name="$template_name-`echo $table_name | sed s/_/-/`-$env"
$ aws cloudformation deploy --template-file ./template-$template_name.yaml --stack-name $stack_name --parameter-overrides $param

Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - dynamo-test-table-dev

template

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
AWSTemplateFormatVersion: '2010-09-09'
Description: This CloudFormation template to create dynamoDB

Parameters:
  TableName:
    Type: String
    Default: test-table
  HashKey:
    Type: String
    Default: hash-key
  RangeKey:
    Type: String
    Default: range-key
  Env:
    Type: String
    Default: dev
    
Resources:
  userTable: 
    Type: AWS::DynamoDB::Table
    Properties: 
      AttributeDefinitions: 
        - 
          AttributeName: !Sub "${HashKey}"
          AttributeType: "S"
        - 
          AttributeName: !Sub "${RangeKey}"
          AttributeType: "S"
      KeySchema: 
        - 
          AttributeName: !Sub "${HashKey}"
          KeyType: "HASH"
        - 
          AttributeName: !Sub "${RangeKey}"
          KeyType: "RANGE"
      TableName:  !Sub "${TableName}_${Env}"
      BillingMode: PAY_PER_REQUEST

ビルド用sh

1
2
3
4
5
6
7
table_name=テーブル名
env=dev
param="Env=$env TableName=$table_name"
#↑を書き換える
template_name="dynamo"
stack_name="$template_name-$table_name-$env"
aws cloudformation deploy --template-file ./template-$template_name.yaml --stack-name $stack_name --parameter-overrides $param

るな
るな
エンジニア