ヤマムギ

growing hard days.

*

Amazon Keyspacesのキースペースを作成してみました

   

Amazon Keyspaces(Apache Cassandra互換のマネージドデータベースサービス)開発者ガイドのチュートリアルをやってみました。

キースペースの作成

マネジメントコンソールのAmazon Keyspacesにアクセスして、[キースペースの作成]ボタンをクリックしました。

キースペースの名前をcatalogにしました。
単一リージョンとして作成しました。
リージョン内の複数AZ(アベイラビリティゾーン)で自動レプリケートされます。
デフォルトで高可用性が実装されていますね。
マルチリージョンにすると最大5つのリージョンへのレプリケーションもできます。

タグをつけて、下にスクロールすると、設定した値込みでCQL(Cassandra クエリ言語)で作成する場合が出力されていました。
キースペースを作成しました。

テーブルの作成

作成したキースペースを選択して[テーブルを作成]をクリックしました。

テーブル名、列名、列タイプを設定しました。

プライマリキーとしてパーティションキーと、ソート可能なクラスタリング列を設定しました。

こちらもCQLが生成されていて、テーブルを作成しました。
マネジメントコンソールで設定してCQLを生成して実行しているイメージですね。

CRUD操作

データを操作するCRUD操作はCQLで実行します。
CloudShellから実行します。

cqlshのインストール

CloudShellにCQlを実行するためのcalshをインストールします。

出力例
Collecting cqlsh-expansion
Downloading cqlsh_expansion-0.9.6-py3-none-any.whl (153 kB)
|████████████████████████████████| 153 kB 1.2 MB/s
Requirement already satisfied: boto3 in /usr/local/lib/python3.9/site-packages (from cqlsh-expansion) (1.35.45)
Collecting cassandra-driver
Downloading cassandra_driver-3.29.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB)
|████████████████████████████████| 4.1 MB 6.1 MB/s
Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.9/site-packages (from cqlsh-expansion) (1.16.0)
Collecting cassandra-sigv4>=4.0.2
Downloading cassandra_sigv4-4.0.2-py2.py3-none-any.whl (9.8 kB)
Requirement already satisfied: botocore<1.36.0,>=1.35.45 in /usr/local/lib/python3.9/site-packages (from boto3->cqlsh-expansion) (1.35.45)
Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /usr/local/lib/python3.9/site-packages (from boto3->cqlsh-expansion) (1.0.1)
Requirement already satisfied: s3transfer<0.11.0,>=0.10.0 in /usr/local/lib/python3.9/site-packages (from boto3->cqlsh-expansion) (0.10.3)
Collecting geomet<0.3,>=0.1
Downloading geomet-0.2.1.post1-py3-none-any.whl (18 kB)
Requirement already satisfied: urllib3<1.27,>=1.25.4 in /usr/local/lib/python3.9/site-packages (from botocore<1.36.0,>=1.35.45->boto3->cqlsh-expansion) (1.26.20)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.9/site-packages (from botocore<1.36.0,>=1.35.45->boto3->cqlsh-expansion) (2.9.0.post0)
Requirement already satisfied: click in /usr/local/lib/python3.9/site-packages (from geomet<0.3,>=0.1->cassandra-driver->cqlsh-expansion) (8.1.7)
Installing collected packages: geomet, cassandra-driver, cassandra-sigv4, cqlsh-expansion
Successfully installed cassandra-driver-3.29.2 cassandra-sigv4-4.0.2 cqlsh-expansion-0.9.6 geomet-0.2.1.post1

バージョン確認しました。
出力
cqlsh 6.1.0

設定完了のスクリプトを実行しました。
出力例
Initializing .cassandra directory with SSL cert and cqlshrc file in user directory
Directory already exists /home/cloudshell-user/.cassandra
Copying cert from /home/cloudshell-user/.local/lib/python3.9/site-packages/cqlsh_expansion/sf-class2-root.crt to /home/cloudshell-user/.cassandra/sf-class2-root.crt
Copying cqlshrc from /home/cloudshell-user/.local/lib/python3.9/site-packages/cqlsh_expansion/cqlshrc_template to /home/cloudshell-user/.cassandra/cqlshrc
Post installation configuration for expansion utility completed

接続しました。

出力例
Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
[cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh current consistency level is ONE.
cqlsh>

整合性の指定

出力例
Consistency level set to LOCAL_QUORUM.

作成

1つのレコード挿入

挿入確認

挿入できました。

サンプルファイルをダウンロード

接続します。

キースペースの指定

cqlsh:catalog> となります。

整合性の指定

CSVからの挿入実行

エラーは出ましたが成功しました。
出力

cqlsh current consistency level is LOCAL_QUORUM.
Reading options from /home/cloudshell-user/.cassandra/cqlshrc:[copy]: {‘numprocesses’: ’16’, ‘maxattempts’: ‘1000’}
Reading options from /home/cloudshell-user/.cassandra/cqlshrc:[copy-from]: {‘ingestrate’: ‘1500’, ‘maxparseerrors’: ‘1000’, ‘maxinserterrors’: ‘-1’, ‘maxbatchsize’: ’10’, ‘minbatchsize’: ‘1’, ‘chunksize’: ’30’}
Reading options from the command line: {‘header’: ‘TRUE’}
Using 16 child processes

Starting copy of catalog.book_awards with columns [award, year, category, rank, author, book_title, publisher].
OSError: handle is closed 0 rows/s; Avg. rate: 0 rows/s
OSError: handle is closed
OSError: [Errno 9] Bad file descriptor
OSError: handle is closed
Processed: 9 rows; Rate: 0 rows/s; Avg. rate: 0 rows/s
9 rows imported from 1 files in 0 day, 0 hour, 0 minute, and 28.110 seconds (0 skipped).

確認できました。

読み取り

特定の列

特定の行

更新

削除

cqlも通常のSQLとほぼ変わりなく実行できました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

ad

ad

  関連記事

AWS Summit Tokyo 2017 聴講したセッションのメモ

2017年6月に参加しましたAWS Summitで聴講したセッションのメモを記し …

EC2インスタンスを必要最小限のパラメータでCLIとSDKから起動する

EC2インスタンスをCLIとSDKから起動するデモで、パラメータを必要最小限にし …

AWS LambdaのSQSへの自前ポーリングをやめてSQSイベントソーストリガーに変更した

以前は、LambdaがSQSからメッセージを受信するには、キューをポーリングして …

AWS Trusted Advisorの2023/11/17発表のAPI

2023/11/17に発表されたAWS Trusted Advisor の新しい …

AWS WAF Web ACLとルールをv1(Classic)からv2に自動移行しました

新しいものは、課題が解決されていたり、機能追加されたりするのでいいものです。 長 …

AWS CLIを使用せずにCodeCommitへSSHユーザーで接続する

AWS CLIやアクセスキーID、シークレットアクセスキーなどを開発環境にセット …

AWS CloudWatch LogsエージェントでAmazon EC2上のNginxのaccess.log , error.log , php-fpm error.log , Linuxのmessages , secureログを収集する

参考ページ クイックスタート: 実行中の EC2 インスタンスに CloudWa …

Systems Manager セッションマネージャアクセスのCloud9(SSHなし)

作成画面 いつからできるようになっていたのか気づいてなかったのですが、Cloud …

AWSアカウントルートユーザーのMFAでYubicoセキュリティキーを設定した

先日Yubico セキュリティキーを購入して、USBにささなければならないのがな …

ALBにWAFを関連付けて特定のヘッダー以外はブロックする

おかげさまで、ブログのアクセスも増えてきて、t3.nano EC2インスタンス単 …