1
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 1 year has passed since last update.

LocalStackでAWSリソースを構築してみる (DynamoDB編)

Posted at

概要

LocalStackって何?
Dockerコンテナ上で動作する仮想のAWS動作環境
いちいちAWSアカウントやIAMユーザー等を用意せず、無料で検証用のリソースを構築できる。

今回の記事で実践すること
LocalStackを使用して、DynamoDBのテーブルを作成する

必要なもの

  • Docker動作環境
  • AWS CLI

LocalStack用環境の構築

LocalStack用環境リポジトリをcloneする
git clone https://github.com/localstack/localstack

cloneしたリポジトリに移動し、コンテナをたてる
cd localstack
docker-compose up -d

LocalStack用の認証情報(ダミー)を追加する

~/.aws/credentials
[localstack]
aws_access_key_id = dummy
aws_secret_access_key = dummy

※注意事項
コンテナを落とすと作成したテーブルなどが消える。
あらかじめテーブル作成・初期データ投入用スクリプトを用意しておくと良いかも。

テーブルを作成する

今回は例として以下のテーブルを作成する

  • テーブル名
    • Items
  • PK
    • itemName
      • String
      • HASH型
aws dynamodb create-table \
    --table-name Items \
    --attribute-definitions \
        AttributeName=itemName,AttributeType=S \
    --key-schema \
        AttributeName=itemName,KeyType=HASH \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --endpoint-url=http://localhost:4566 \
    --profile localstack

テーブルに項目を追加する

aws --endpoint-url=http://localhost:4566 dynamodb put-item \
    --table-name Items  \
    --profile localstack \
    --item \
        '{"itemName": {"S": "hoge"}}'

テーブルをスキャンする

Scan = テーブル内のすべての情報を参照する

aws dynamodb scan \
--table-name Items \
--endpoint-url=http://localhost:4566 \
--profile localstack

テーブルを削除する

aws dynamodb delete-table \
--table-name Items \
--endpoint-url=http://localhost:4566 \
--profile localstack

番外編: Terraformで作成

テーブルの作成・削除はTerraformでも実行可能

terraform {
  backend "local" {}
}

provider "aws" {
  region = "ap-northeast-1"

  access_key = "dummy"
  secret_key = "dummy"

  # localstack用の設定
  s3_use_path_style           = true
  skip_credentials_validation = true
  skip_metadata_api_check     = true
  skip_requesting_account_id  = true


  endpoints {
    dynamodb = "http://localhost:4566"
  }
}

resource "aws_dynamodb_table" "this" {
  name           = "Items"
  billing_mode   = "PROVISIONED"
  read_capacity  = 10
  write_capacity = 5
  hash_key       = "itemName"

  attribute {
    name = "itemName"
    type = "S"
  }
}

参考

DynamoDBとはなんぞや
https://qiita.com/hshimo/items/e5ad98b21786d796f1da

AWS CLI DynamoDB操作コマンドのリファレンス
https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html

1
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
1
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?