-- 前提: cqlshインストール済
-- 1. サービス固有の認証情報を生成する
aws iam create-service-specific-credential \
--user-name iamuser \
--service-name cassandra.amazonaws.com
-- 2. DB接続
cd /home/ec2-user/apache-cassandra-3.11.11
./bin/cqlsh cassandra.ap-northeast-1.amazonaws.com 9142 -u "iamuser-at-999999999999" -p "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" --ssl
-- 3. Keyspace の作成
CREATE KEYSPACE IF NOT EXISTS "ks01"
WITH REPLICATION = {'class': 'SingleRegionStrategy'};
SELECT * from system_schema.keyspaces ;
-- 4. テーブルの作成
※キャパシティモードはプロビジョンドの必要がある
USE "ks01" ;
CREATE TABLE "ks01"."tab1"(
"col1" text,
"col2" text,
"col3" int,
"col4" text,
PRIMARY KEY("col1", "col2"))
WITH CUSTOM_PROPERTIES = {
'capacity_mode':{
'throughput_mode':'PROVISIONED',
'write_capacity_units':1,
'read_capacity_units':1
},
'encryption_specification':{
'encryption_type':'AWS_OWNED_KMS_KEY'
}
} AND CLUSTERING ORDER BY("col2" ASC);
SELECT * from system_schema.tables WHERE keyspace_name='ks01' ;
SELECT * FROM system_schema.columns WHERE keyspace_name = 'ks01' AND table_name = 'tab1' ;
-- 5. テストデータ追加
USE "ks01" ;
CONSISTENCY LOCAL_QUORUM;
INSERT INTO "ks01".tab1 (col1, col2, col3, col4)
VALUES ('000-00','Engineering',10,'200-00') ;
SELECT * FROM "ks01".tab1 ;
-- 6. スケーラブルなターゲットを登録する
aws application-autoscaling register-scalable-target \
--service-namespace cassandra \
--resource-id "keyspace/ks01/table/tab1" \
--scalable-dimension "cassandra:table:WriteCapacityUnits" \
--min-capacity 5 \
--max-capacity 10
aws application-autoscaling describe-scalable-targets \
--service-namespace cassandra \
--resource-id "keyspace/ks01/table/tab1"
-- 7. スケーリングポリシーを作成する
vim a.json
{
"PredefinedMetricSpecification": {
"PredefinedMetricType": "CassandraWriteCapacityUtilization"
},
"ScaleOutCooldown": 60,
"ScaleInCooldown": 60,
"TargetValue": 50.0
}
aws application-autoscaling put-scaling-policy \
--service-namespace cassandra \
--resource-id "keyspace/ks01/table/tab1" \
--scalable-dimension "cassandra:table:WriteCapacityUnits" \
--policy-name "policy01" \
--policy-type "TargetTrackingScaling" \
--target-tracking-scaling-policy-configuration file://a.json
aws application-autoscaling describe-scaling-policies \
--service-namespace cassandra \
--resource-id "keyspace/ks01/table/tab1" \
--policy-name "policy01"
-- 8. Application Auto Scaling アクションを表示する
aws application-autoscaling describe-scaling-activities \
--service-namespace cassandra
-- 9. クリーンアップ
-- スケーリングポリシー一覧
aws application-autoscaling describe-scaling-policies --service-namespace cassandra
-- スケーリングポリシー削除
aws application-autoscaling delete-scaling-policy \
--service-namespace cassandra \
--resource-id "keyspace/ks01/table/tab1" \
--scalable-dimension "cassandra:table:WriteCapacityUnits" \
--policy-name "policy01"
-- スケーリングターゲット一覧
aws application-autoscaling describe-scalable-targets --service-namespace cassandra
-- スケーリングターゲット削除
aws application-autoscaling deregister-scalable-target \
--service-namespace cassandra \
--resource-id "keyspace/ks01/table/tab1" \
--scalable-dimension "cassandra:table:WriteCapacityUnits"
-- テーブルの削除
DROP TABLE IF EXISTS "ks01".tab1 ;
SELECT * FROM system_schema.tables WHERE keyspace_name = 'ks01' ;
-- Keyspaceの削除
DROP KEYSPACE IF EXISTS "ks01" ;
SELECT * from system_schema.keyspaces ;
-- サービス固有の認証情報一覧
aws iam list-service-specific-credentials
-- サービス固有の認証情報の削除
aws iam delete-service-specific-credential \
--service-specific-credential-id XXXXXXXXXXXXXXXXXXXXX