ablog

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

2019-01-01から1年間の記事一覧

クロスアカウントでS3マルチパートアップロードすると "when calling the UploadPartCopy operation: Access Denied" と怒られる

AWS

事象 KMS CMK でデフォルト暗号化しているS3バケットにクロスアカウントのS3バケット間コピーでマルチパートアップロードが失敗するがマルチパートでない場合は成功する。AWS CLI (aws s3 cp/sync など)はデフォルトで 8MB 以上だとマルチパートアップロー…

Session Manager のログ

AWS

Systems Manager のセッションマネージャについてちょっと調べたメモ。 sh-4.2$ sudo su - Last login: Wed Dec 25 04:26:13 UTC 2019 on pts/0 [root@ip-172-**-*-97 ~]# cat /var/log/secure Dec 22 06:09:01 ip-172-**-*-97 sshd[20477]: Accepted public…

PySparkメモ

カウントする df.count() スキーマを表示する Spark DataframeのSample Code集 - Qiita print df.printSchema() DynamicFrame Dataframe 変換 from awsglue.dynamicframe import DynamicFrame # DynamicFrame -> Spark DataFrame df = DynamicFrame.toDF(<DynamicFrame>) #</dynamicframe>…

PySpark でデータを増幅する

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/tutorial-tuning-tables-create-test-data.html の lineorder テーブルのデータを増幅する PySpark スクリプト for Glue ジョブ。実行状況は Spark History UI から確認する(AWS マネジメントコンソ…

PySpark で DataFrame にリテラルで列を追加しようとすると "col should be Column" と怒られる

事象 PySpark で DataFrame にリテラルで列を追加しようとすると "col should be Column" と怒られる。 コード import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from …

Oracle Database のクエリオプティマイザに関するエッセイ

JPOUG Advent Calendar 2019 の23日目のエントリーです。22日目は新久保 浩二さんのCOMMITについて少し考えてみた(1) でした。JPOUG Advent Calendar に参加するのも7回目になりました(皆勤賞)。Oracle Database などの商用DBや PostgreSQL、MySQL など RDBM…

Amazon Redshift チュートリアルの Star Schema Benchmark のサンプルデータを増幅する

AWS

Redshift の Tutorial: Tuning Table Design の Star Schema Benchmark (SSB) のサンプルデータを増幅した。 lineorder に lo_yyyy カラムを追加し、1001年〜2000年までの1,000倍に増幅し、24.8GB を 24.8TB に増幅した。 Athena で以下のテーブルを作成する…

When graphing CPU as stacked area chart, which parts add up to total ?

when graphing CPU as stacked area chart, which parts add up to total ?guestirqnicestealStacking System and Users and probably wait are clear, but is nice part of user? Looks like guest is part of nice. Is irq part of sys? @OracleSK@oradiag…

Presto の JVM の起動オプションは /etc/presto/conf/jvm.config で設定できる

Presto の JVM の起動オプションを指定したい場合は /etc/presto/conf/jvm.config で設定して、Presto を再起動すればよい。 /etc/presto/conf/jvm.config を編集する。 $ vi /etc/presto/conf/jvm.config -verbose:class -server -Xmx214026810294 -XX:+Use…

iostat の avgrq-sz(average request size)の単位はセクタ数

iostat の avgrq-sz(average request size)の単位はセクタ数かKB。iostat のバージョンによって異なるので、使う環境で man で確認すべし。 iostat の出力 $ iostat -dx 2 3 Linux 4.14.146-93.123.amzn1.x86_64 (ip-172-31-10-8) 12/18/19 _x86_64_ (32 C…

AWS Lake Formation メモ

AWS

1テーブルData permissionsで権限を付与すると、データベースやテーブルがGlueやAthenaで表示される。 grant したテーブルのみリストに表示される。 特定カラムのみ grant すると Glue や Athena では権限のあるカラムだけが定義もデータも表示される。 Athe…

AWS Lake Formation 管理下の S3 バケットを Glue でクロールすると AccessDeniedException で失敗する

AWS

事象 Lake Formation で Data lake locations に指定したS3バケットのデータを Glue でクロールすると AccessDeniedException で失敗する。 [3abc7df1-8157-4d0f-9ae0-1ff50dee0de6] ERROR : Insufficient Lake Formation permission(s) on gz_sales (Databa…

データベース、OS、パフォーマンスを勉強したい人におすすめの入門編の書籍・資料

データベース、OS、パフォーマンスを勉強したい人におすすめの入門編の書籍・資料(一部入門編でないものも含んでいます)。絵で見てわかるOS/ストレージ/ネットワーク 新装版作者:木村 達也,西田 光志,鳥嶋 一孝,田中 彰人,小田 圭二出版社/メーカー: 翔泳…

Apache Arrow Tokyo Meetup 2019 に参加してきた

Apache Arrow東京ミートアップ2019 - connpass に参加してきた。 カラムナの会のメンバーとしては要チェックな Apache Arrow。圧縮有無は Parquet との大きな違い。圧縮するとIO量は減るけどCPUでのオーバヘッドが増えるので、IOレイテンシとのトレードオフ…

G SuiteアカウントでAWSマネジメントコンソールにSSO を設定する

gmail にログイン G-Suiteアカウントを作成する 参考 Amazon Web Services cloud application - G Suite Admin Help G Suite アカウントを用いた AWS へのシングルサインオン | AWS Startup ブログ

Presto で Parquet にクエリすると、参照するカラムのみ読んでいることを確認した

HDFS の Datanode の Flame Graph sun.nio.ch.FileChannelImpl:::transferTo から sendfile システムコールが呼ばれている。 一番左のスタックをドリルダウンしたもの。 Presto Server の Flame Graph 一番左のスタックをドリルダウンしたもの、com.facebook…

Spark Meetup Tokyo #2 (Spark+AI Summit EU 2019) に参加してきた

Spark Meetup Tokyo #2 (Spark+AI Summit EU 2019) - connpass に参加してきた。今度は Spark について、どうでもいことに Dive deep して話してみるのも面白そう。 Spark+AI Summit Europe 2019 セッションハイライト by 萩原 悠二/Yuji Hagiwara and 酒井 …

RDS PostgreSQL の接続・切断ログを CloudWatch Logs にエクスポートする

AWS

RDS PostgreSQL で log_connections=1、log_disconnections=1 に設定して、接続・切断ログを記録し、CloudWatch Logs にエクスポートして確認したメモ。 設定する パラメータグループを作成する(パラメータグループファミリー: postgres11)。 log_connecti…

S3 で特定のプリフィックス以下のオブジェクトの過去バージョンを削除する

AWS

S3 で特定のプリフィックス以下のオブジェクトの過去バージョンを削除する。以下はバケット test-bucket の test/ 以下のオブジェクトの過去バージョンを削除するケース。UTC 0:00 になると削除される。 lifecycle.json を作成する { "Rules": [ { "Status":…

S3 オブジェクトの過去バージョンを一括削除する

AWS

バージョニングを有効化している S3 バケットでオブジェクトの過去バージョンを一括削除する手順。 任意の S3 バケットの過去バージョンを確認する。 % aws s3api list-object-versions --bucket test-bucket|jq -r '.Versions[]|select(.IsLatest==false)|@…

Athena で改行を含む CSV を扱いたい場合は Glue ジョブで Parquet に変換する

AWS

データの中身に改行を含む CSV を Athena でクエリすると正しく扱えなかったが、Glue ジョブで CSV を Parquet に変換すると改行を含むデータを扱うことができた。おそらく OpenCSVSerDe は改行に対応していないが、Parquet SerDe は改行に対応しているから…

S3 に 1MB のオブジェクトを1億個作成する手順

AWS

S3 に 1MB のオブジェクトを1億個作成する手順(実際にはやらない)。 s3-cp-100m.sh #!/bin/bash date dd if=/dev/urandom of=1mb.dat bs=1m count=1 aws s3 cp 1mb.dat s3://az-cp-src/ date seq -w 1 100000000|xargs -t -P512 -I{} aws s3 cp s3://az-cp…

Route53 で特定のホストゾーンとトラフィックポリシーのみ編集できるIAMポリシー

AWS

IAMユーザー/ロールに対して、特定のホストゾーンと 特定のホストゾーンとトラフィックポリシーのみ編集できるIAMポリシー { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPublicHostedZonePermissions", "Effect": "Allow", "Action": [ "rout…

PostgreSQLのオプティマイザ統計情報を確認する

PostgreSQL のオプティマイザ統計情報を確認する pg_stat_user_tables n_live_tup: 行数 n_dead_tup: 不要な(ガベージとなっている)行数 last_analyze: ANALYZE された日時 aurora-postgres107 awsuser 13:44 => select * from pg_stat_user_tables; relid |…

Lambda + node.js のデバッグでオブジェクトの中身を見る

AWS

util.inspect を使って、console.log(util.inspect(,false,null)) とするとオブジェクトの中身を CloudWatch Logs に出力できる。 'use strict'; const AWS = require('aws-sdk'); const util = require('util'); // util モジュールを読み込む exports.hand…

DynamoDB Streams + AWS Lambda Triggers で連携すると Item は event オブジェクトで渡される

AWS

DynamoDB Streams + AWS Lambda Triggers で連携すると Item のデータは event オブジェクトで渡されることを確認した。 Lambda (node.js) のコード 'use strict'; const AWS = require('aws-sdk'); const util = require('util'); // util モジュールを読み…

DynamoDB の AWS 管理 CMK のキーポリシー

AWS

aws/dynamodb のキーIDを確認 $ aws kms list-aliases|jq -r '.Aliases[]|select(.AliasName=="alias/aws/dynamodb")' { "AliasArn": "arn:aws:kms:ap-northeast-1:123456780123:alias/aws/dynamodb", "AliasName": "alias/aws/dynamodb", "TargetKeyId": "9…

RDSのスナップショット成功を確認する

AWS

イベントサブスクリプション RDS のスナップショット作成はイベントサブスクリプションで通知することができる。 カテゴリ RDS イベント ID 説明 作成 RDS-EVENT-0042 手動 DB スナップショットが作成されました。 Amazon RDS イベント通知の使用 - Amazon R…

CLoudWatch Logs のロググループを S3 にエクスポートする

AWS

S3バケットを作成する バケット名: exp-cloudwatchlogs バケットポリシー { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.ap-northeast-1.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "…

VPCE Policy Of The Year

AWS

なるほどーと思ったのでメモ。ちゃむれおさん(c)。 # S3の暗号化方式 クロスアカウントアクセス VPCEポリシーによる制御 1 SSE-S3 (AES-256) ○ X 2 SSE-KMS AWS/S3 ☓ X 3 SSE-KMS AWS/Custom ○ ○ VPCエンドポイントポリシー { "Version": "2008-10-17", "Sta…