ablog

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

gRPC と Protocol Buffers について

gRPC と Protocol Buffers とは gRPC は、RPC (Remote Procedure Call) を実現するためにGoogleが開発したプロトコルの1つです。Protocol Buffers を使ってデータをシリアライズし、高速な通信を実現できる点が特長です。gRPCでは、IDL(インターフェース定…

YCSB で Memcached に負荷をかける

AWS

YCSB で Amazon ElastiCache(Memcached) に負荷をかけてみたメモ。 準備 EC2インスタンスを作成する AMI ID: amzn-ami-hvm-2018.03.0.20181129-x86_64-gp2 (ami-00a5245b4816c38e6) インスタンスタイプ: m4.xlarge アベイラビリティーゾーン: ap-northeast-1…

AWS CLI を実行すると "ImportError: cannot import name AliasedEventEmitter" と怒られる

AWS

事象 ある日、AWS CLI を実行すると "ImportError: cannot import name AliasedEventEmitter" と怒られるようになった。 $ aws s3 ls Traceback (most recent call last): File "/usr/bin/aws", line 19, in <module> import awscli.clidriver File "/usr/lib/python</module>…

YCSBで DynamoDB に負荷をかけたメモ

AWS

設定 YCSB/dynamodb/conf/AWSCredentials.properties accessKey = <アクセスキー> secretKey = <シークレットキー> YCSB/dynamodb/conf/dynamodb.properties dynamodb.awsCredentialsFile = dynamodb/conf/AWSCredentials.properties dynamodb.primaryKey = …

Redshift のエラーハンドリングとエラーメッセージの確認方法

AWS

copy.sql copy customer from 's3://awssampledbuswest2/ssbgz/customer' credentials 'aws_iam_role=arn:aws:iam::123456789012:role/RedshiftRole' gzip compupdate off region 'us-west-2'; エラー参照用のビューを作成する。 # create schema admin; # c…

AWS CLI でS3バケットのライフサイクル設定を取得する

AWS

AWS CLI でS3バケットのライフサイクル設定を取得する例。 ライフサイクル設定を取得する。 $ aws s3api get-bucket-lifecycle-configuration --bucket az-cp-src { "Rules": [ { "Filter": { "Tag": { "Value": "10y", "Key": "Name" } }, "Status": "Enabl…

EMRFS で KMS のカスタマー管理 CMK で暗号化する

AWS

EMR で KMS のカスタマー管理CMKを利用するには、S3 バケットのデフォルト暗号化で CMK を指定し、S3 と KMS に対する必要な権限を持つロールを EMR にアタッチすればよい。 また、S3 のバケットポリシーで特定の CMK 以外での PUT を禁止すると、「CMK 指定…

「AWS 認定ビッグデータ – 専門知識」試験の準備方法

AWS

「AWS 認定ビッグデータ – 専門知識(AWS Certified Big Data - Specialty)」の試験を受けるにあたっての勉強の仕方をメモ。AWS 認定 – 認定の準備に書かれている通りだが、Linux Academy の模擬試験が効果的だった。 準備方法 AWS 認定ビッグデータ – 専門…

VPCエンドポイントポリシーのサイズ上限

AWS

VPC エンドポイント ポリシーの使用 VPC エンドポイントポリシーは、エンドポイントの作成時または変更時にエンドポイントにアタッチする IAM リソースポリシーです。エンドポイントの作成時にポリシーをアタッチしない場合、サービスへのフルアクセスを許可…

Organization ID を利用してS3のクロスアカウントアクセスを許可する。

AWS

課題 S3 のバケットポリシーでクロスアカウントアクセスを許可する場合、Principal に指定するAWSアカウントIDの数が多くなると、バケットポリシーのサイズの上限に達してしまう。 解決策 S3 バケット内のオブジェクトへのクロスアカウントアクセスを提供す…

CloudTrail で CloudWatch Logs に配信しようとすると「ロールポリシーを検証できません」と怒られる

AWS

事象 CloudTrail で CloudWatch Logs に配信しようとすると「ロールポリシーを検証できません」と怒られる 再現手順 AWSマネジメントコンソールで[CloudTrail]-[証跡情報]から任意の Trail を選択する。 CloudWatch Logs で「次へ」をクリックする。 新しい…

cfnで作成したバケットポリシーを変更後にcfnで元に戻す

AWS

S3バケット作成とバケットポリシー設定を CloudFormation で行った後に、手動でバケットポリシーを変更し、CloudFormation で元に戻してみた。 CloudFormationでS3バケットを作成してバケットポリシーを設定する - ablogの手順で CloudFormation でS3バケッ…

CloudFormationでS3バケットを作成してバケットポリシーを設定する

AWS

CloudFormationでS3バケットを作成してバケットポリシーを設定してみたメモ。 手順 CreateS3Bucket.yml をローカルに作成する。 AWSTemplateFormatVersion: '2010-09-09' Description: This CloudFormation template to create S3 Bucket Parameters: S3Buck…

RHEL7 から EFS をマウントする

AWS

インストールと設定 $ sudo yum -y install git $ git clone https://github.com/aws/efs-utils $ cd efs-utils $ sudo yum -y install rpm-build $ make rpm $ sudo yum -y install build/amazon-efs-utils*rpm $ curl https://bootstrap.pypa.io/get-pip.p…

RHEL7 に pip をインストールする

RHEL7.6 (Kernel 3.10) に pip をインストールしたメモ。 $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ sudo python get-pip.py 参考 python - How to install pip on Redhat Linux - Stack Overflow

Python で DynamoDB で負荷をかける

AWS

DDBGetItem.py import boto3 import json import datetime import threading dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('ycsb8') def getItem(): i = 0 last = datetime.datetime.now() while True: response = table.get_item( Key={ …

pgbench で PostgreSQL に半永久的に負荷をかけ続ける

pgbench で PostgreSQL に半永久的に負荷をかけ続ける手順をメモ。 スクリプト pgbench_infinite_loop.sh #!/bin/bash export LANG=C export PGPASSWORD=<パスワード> ENDPOINT=<ホスト名> BASE_NAME=$(basename $0) STEM="${BASE_NAME%.*}" DATE=`date '+%Y…

JAWS DAYS 2019 に参加してきた

AWS

JAWS DAYS 2019 に参加してきた。 RDBリファクタリングと異種間DB移行の戦い – Amazon DMSを使った止めずにリファクタリングする手法 曽根 壮大さん 所属:株式会社 オミカレ (副社長/CTO) 実践!CloudFormation Best Practice ~CloudFormationで始める組織…

Aurora MySQLとS3間でデータをロード&アンロードする

AWS

Aurora MySQLとS3間でデータをロード(LOAD DATA FROM S3)&アンロード(SELECT INTO OUTFILE S3)したメモ。 環境 東京リージョンにEC2インスタンス、Auroraクラスター、S3バケットを作成 手順 IAMロールを作成する ロール名: rds-s3-role アクセス権限-Per…

YCSB で DynamoDB On-Demand に負荷をかける

AWS

YCSB(Yahoo Cloud Serving Benchmark)で DynamoDB On-Demand に負荷をかける手順。 準備 DynamoDBにテーブルを作成する テーブル名: ycsb1、ycsb2、ycsb3、ycsb10、ycsb100、ycsb1000、ycsb10000 プライマリパーティションキー:firstname(文字列) 読み込…

S3 Object Lock について

AWS

たぶんこんな感じ。 S3 Object Lock とは バージョニングされた過去バージョンを消せなくする機能。オブジェクトの上書きはできるが過去バージョンを消せない。従って、バージョニングを有効化しないと S3 Object Lock を有効化できない。 期間保持と法的保…

S3 へのパブリックアクセスを一切禁止する

AWS

Amazon S3 Block Public Access で S3 へのパブリック・アクセスを一切禁止する設定例。アカウント全体と各バケット毎の設定があるが、各バケット毎の設定はアカウント全体設定でオーバライドされる。つまり、アカウント全体の設定で禁止していると、バケッ…

Amazon Linux で AWS CLI をアップデートする

AWS

Amazon Linux で AWS CLI をアップデートする手順。 現在のバージョンを確認する。 $ aws --version aws-cli/1.15.83 Python/2.7.14 Linux/4.14.77-70.59.amzn1.x86_64 botocore/1.10.82 AWS CLI と SDK(boto) をアップデートする。 $ sudo pip install -U a…

文鎮化した S3 バケットを元に戻す

AWS

誤ったバケットポリシーを設定したり、バケットポリシーで特定のVPCエンドポイントからのみのアクセスを許可していてそのVPCエンドポイントを消してしまったりしてS3バケットに一切アクセスできず文鎮化してしまった場合の対処法。root アカウントのシークレ…

サーバ負荷をシンプルに評価する指標 "sysload"

たしか、4年くらい前にデータベース系のイベントで瀬島さんと横道さんと話しているときにそういうものを作っているとちらっと聞いて気になっていたので、ブログ見たときに sysload は「あの時、聞いたやつだ」と思い出した。 はるか昔kernel 2.6 の頃、Load …

Aurora PostgreSQL互換でフェイルオーバーを高速化する

AWS

Linux の TCP Keep Alive パラメータ tcp_keepalive_time = 1 tcp_keepalive_intvl = 1 tcp_keepalive_probes = 5 JavaのDNS キャッシュタイムアウトの短縮 // Sets internal TTL to match the Aurora RO Endpoint TTL java.security.Security.setProperty("…

Aurora MySQL互換のフェイルオーバー

AWS

障害挿入クエリ(Fault Injection Queries) INSTANCE はMySQLインスタンスをクラッシュさせる。 DISPATCHER はクラスターボリュームに書込むディスパッチャをクラッシュさせる。 NODEはMySQLインスタンスとディスパッチャの両方をクラッシュさせ、キャッシ…

Aurora のエンドポイント

AWS

クラスターエンドポイント $ dig +trace aurora-postgres105.cluster-********.ap-northeast-1.rds.amazonaws.com ; <<>> DiG 9.8.3-P1 <<>> +trace aurora-postgres105.cluster-********.ap-northeast-1.rds.amazonaws.com ;; global options: +cmd . 12416…

fio の結果の見方

Client1: (groupid=0, jobs=1): err= 0: pid=16109: Sat Jun 24 12:07:54 2017 write: IOPS=88, BW=623KiB/s (638kB/s)(30.4MiB/50032msec) slat (nsec): min=500, max=145500, avg=8318.00, stdev=4781.50 clat (usec): min=170, max=78367, avg=4019.02, s…

EFS を使ってみる

AWS

インストールとマウント $ sudo yum install -y amazon-efs-utils fio $ sudo mkdir /efs $ sudo mount -t efs -o tls fs-d462f79c:/ /efs ベンチマーク実行 $ sudo fio -filename=/efs/test1 -rw=read -direct=1 -bs=4k -size=2G -numjobs=2 -runtime=10 -g…