概要
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用の認証情報(ダミー)を追加する
[localstack]
aws_access_key_id = dummy
aws_secret_access_key = dummy
※注意事項
コンテナを落とすと作成したテーブルなどが消える。
あらかじめテーブル作成・初期データ投入用スクリプトを用意しておくと良いかも。
テーブルを作成する
今回は例として以下のテーブルを作成する
- テーブル名
- Items
- PK
- itemName
- String
- HASH型
- itemName
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