ablog

不器用で落着きのない技術者のメモ

AWS

Redshift でテーブルにカラムを追加できる位置

Redshift でテーブルの末尾にしかカラムを追加できない。ドキュメントを見る限りカラム位置を指定するような構文はない。 接続する $ psql -a "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev …

Azure Data Factory から AWS Transfer Family の SFTP への接続時に "no matching host key type found" エラー

事象 Azure Data Factory から AWS Transfer Family の SFTP への接続時に "no matching host key type found" エラーが発生する。 Failed to connect to Sftp server 's-********.server.transfer.ap-northeast-1.amazonaws.com'. An established connectio…

Azure Data Factory から AWS Transfer Faimily の SFTP に公開鍵認証で接続する

AWS Transfer Family の設定 IAM ロールの作成 以下の IAM ポリシーを作成して、IAM ロールにアタッチする。 { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Ef…

Azure Data Factory から AWS Transfer Family の SFTP へ接続しようとすると "Failed to connect to Sftp server '...'. Server HMAC algorithm not found" エラーが発生する

事象 Azure Data Factory から AWS Transfer Family の SFTP へ接続しようとすると以下のエラーが発生する。 Error code: SftpFailedToConnectToSftpServer Details: Failed to connect to Sftp server 's-********.server.transfer.ap-northeast-1.amazonaw…

AWS Transfer Family の SFTP でパスワード認証を使う

AWS

AWS Transfer Family の SFTP でパスワード認証を行いたい場合、こちらの CloudFormation Template を実行し、Transfer Family、API Gateway、Lambda、Secrets Manager のリソースを作成する。あとは、Secrets Manager で以下を設定してやれば OK。 シークレ…

Amazon Linux 2023 で sshd のログを確認する

AWS

$ sudo journalctl -u sshd Apr 01 00:51:17 ip-172-31-29-44.ap-northeast-1.compute.internal sshd[2155]: Server listening on 0.0.0.0 port 22. Apr 01 00:51:17 ip-172-31-29-44.ap-northeast-1.compute.internal sshd[2155]: Server listening on :: p…

sftp でパスワード認証を有効にする

EC2 インスタンスを作成する パスワードを設定する [root@ip-172-31-29-44 ~]# passwd ec2-user Changing password for user ec2-user. New password: Retype new password: passwd: all authentication tokens updated successfully. パスワード認証を許可…

AWS Transfer Family の SFTP の認証

AWS

SSH 公開鍵認証 【2022年10月版】AWS Transfer Family の SFTP を使ってみた | DevelopersIO パスワード認証 https://dev.classmethod.jp/articles/aws-transfer-family-sftp-with-password-method/:tilte

rsql で -v オプションと -c オプションを併用するとエラーになる問題の回避策

AWS

事象 rsql で -v オプションと -c オプションを併用するとエラーになる。 $ rsql -h redshift-cluster-poc-central.ceyg6jv96hfq.ap-northeast-1.redshift.amazonaws.com -U awsuser -d dev -v var_table_name='version()' -c 'select * from :var_table_nam…

Amazon Linux 2 に rsql をインストールする

AWS

環境 $ cat /etc/system-release Amazon Linux release 2 (Karoo) $ uname -r 5.10.130-118.517.amzn2.x86_64 インストールする sudo yum -y install unixODBC curl -L -O https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedsh…

cqlsh からスクリプトファイルを実行する

AWS

実行するスクリプトファイルの内容 $ cat insert_small.cql CONSISTENCY LOCAL_QUORUM ; INSERT INTO poc.partition_id_dist_test (partition_id, date_time) VALUES (001, '2024-01-10 17:30:00'); INSERT INTO poc.partition_id_dist_test (partition_id, …

Amazon Keyspaces で VPC エンドポイントを設定しているVPCでグローバルエンドポイントとVPCエンドポイントを併用する方法

AWS

Amazon Keyspaces で VPC エンドポイントを設定しているVPCでグローバルエンドポイントとVPCエンドポイントを併用する方法。 方法 VPC エンドポイントで [プライベート DNS 名を有効化] のチェックを外す。 グローバルエンドポイントに接続するときは cassan…

Redshift でクエリテキストが 4000 文字を超える場合にクエリ全文を取得する

AWS

STL_QUERYTEXT に保存された SQL を再構築するには、次の SQL を実行します。 select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text from stl_querytext where query=pg_last_quer…

DynamoDB の ConsistentRead

AWS

Read operations such as GetItem, Query, and Scan provide an optional ConsistentRead parameter. If you set ConsistentRead to true, DynamoDB returns a response with the most up-to-date data, reflecting the updates from all prior write operat…

Redshift のオブジェクト名の大文字小文字の区別について

AWS

検証結果 enable_case_sensitive_identifier が true で、DDL やクエリでダブルクオートで囲むと大文字小文字を区別する。 enable_case_sensitive_identifier が false だと大文字小文字を区別しない(デフォルトは false)。 ダブルクオートで囲まないと小…

QueryEditor v2 で Redshift にアクセスするための最小権限

QueryEditor v2 を利用する IAM ロール / IAM ユーザーにアタッチする。 IAM ポリシー AmazonRedshiftReadOnlyAccess AmazonRedshiftQueryEditorV2NoSharing IAM 権限 redshift:GetClusterCredential redshift:CreateClusterUser redshift:JoinGroup { "Vers…

YCSB から DynamoDB に結果整合性と強い整合性で負荷をかけてみて、レイテンシを計測してみた

AWS

YCSB から DynamoDB に結果整合性と強い整合性で負荷をかけてみて、レイテンシを計測してみた。 DynamoDB のテーブルを作成する テーブル名: usertable パーティションキー: firstname (String) キャパシティモード: Provisioned (RCU: 10,000、WCU: 10,000…

Amazon Linux 2023 に psql、pgbench をインストールする

psql sudo dnf install -y postgresql15 pgbench sudo dnf install -y postgresql15-contrib 参考 PostgreSQL DB インスタンスを作成して接続する - Amazon Relational Database Service

Redshift Serverless で任意の管理者パスワードを設定する

AWS

マネジメントコンソールで Redshift Serverless のワークグループ作成時に [データベース名とパスワード] で [管理者ユーザー認証情報をカスタマイズ] をチェックし、[Manually add the admin password] を選択してパスワードを入力する。 参考 Amazon Redsh…

AWS SDK はファイルを S3 にアップロードする際にチェックサムで整合性をチェックしてくれる

AWS

AWS SDK は MD5 以外を使うと自動でチェックサムをチェックしてくれると聞いて試してみた。 新しいチェックサムのサポート 2022 年 2 月 25 日(米国時間)は、S3 の 4 つのチェックサムアルゴリズムの新しいサポートについてお話しします。Amazon S3 に保存…

Amazon Keyspaces の Auto Scaling でスケールアウトするまでの所要時間

AWS

Amazon Keyspaces の Auto Scaling でスケールアウトするまでの所要時間を実測してみた。 キャパシティモードがプロビジョンドのテーブル最小 RCU/WCU: 2000、最大 RCU/WCU: 20,000、目標使用率: 70% に対して、YCSB から負荷をかけてみて、3〜4分程度でAuto…

cqlsh の TIMING ON コマンドで CQL の実行時間を計測する

AWS

cqlsh の TIMING ON コマンドで CQL の実行時間を計測する方法。 以下は cqlsh 6.8 から Amazon Keyspaces に接続して CQL 実行時間を計測した手順。 インストール Apache Cassandra Download | DataStax Enterprise からcqlsh 6.8をダウンロードする。 $ wg…

YCSB から VPC エンドポイント経由で Amazon Keyspaces に負荷をかける

AWS

負荷をかける [ec2-user@ip-172-31-26-19 YCSB]$ ./bin/ycsb run cassandra-cql -p hosts=cassandra.ap-northeast-1.amazonaws.com -p port=9142 -P ./workloads/workloada_keyspaces -s -threads 100 -p cassandra.writeconsistencylevel=LOCAL_QUORUM -p c…

Amazon DynamoDB 関連のリソース(スライド、ドキュメント、論文など)

AWS

NoSQL 開発者のためのNoSQL Database の選び方 入門(2021, Momoko Asai) Amazon DynamoDB スライド Amazon DynamoDB Advanced Design Pattern(2018 Dev Day Daichi Egawa) Amazon DynamoDB deep dive: Advanced design patterns(2020, oranie) Amazon Dynamo…

VPC 内 Glue から別 VPC の Redshift などに接続できるか

AWS

VPC内Glueジョブ(Spark、Python shell)から別VPCの Redshift や RDS などに接続できるか。同一 VPC の別 Subnet は当然接続できる。 別 VPC の場合、VPC ピアリングや Transit Gateway で接続すれば接続できる。 参考 AWS Glue 接続とデータベースで異なる…

macOS に AWS CLI v2 をインストールする

macOS に AWS CLI v2 をインストールした手順。 インストール % curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" % sudo installer -pkg ./AWSCLIV2.pkg -target / 確認 % which aws /usr/local/bin/aws % aws --version aws-cli/2.13.…

Datastax Java Driver for Apache Cassandra でAmazon KeySpaces へのコネクションプールの数を設定する

AWS

Amazon KeySpaces は 1 コネクションあたりの CQL のスループットが 3,000 である。デフォルトでパブリックエンドポイントの場合 9 コネクションなので CQL のスループットは 27,000(=3,000 * 9)、VPC エンドポイントの場合はその VPC のサブネット(AZ)…

S3 と Glue Job の閉域網構成

AWS

S3 Block Public Access*1 をアカウントレベルで設定すれば、アカウントレベルで S3 バケットで Public 公開できなくなるが、さらに S3 バケットポリシー*2 + S3 Access Point(+ S3 Access Point ポリシー)で 特定の IP アドレスや VPC からのみアクセス許…

S3 to S3 でストリーミング圧縮コピーする(boto3版)

AWS

AWS CLI で S3 to S3 で圧縮してストリーミングコピーしたい場合は aws s3 cp s3://... - | gzip | aws s3 cp - s3://...(S3 からローカルにファイルをまるまるダウンロードせずに圧縮して S3 にアップロードする - ablog) のようにパイプで繋げばよいが、…

S3 to S3 でストリーミング圧縮コピーする(AWS CLI版)

AWS

S3 にあるファイルを EC2 などにファイルをまるまるダウンロードせずに圧縮して S3 にアップロードしたい場合、パイプで繋いでやればよい。 例 EC2 のローカルのファイルを圧縮しながら S3 にアプロードする(圧縮したファイルを EC2 にローカルに保存せずに…