ablog

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

AWS

QuickSight で S3 のデータを参照しようとすると「マニフェストファイルを有効な JSON として解析することはできません。」と怒られる

AWS

事象 QuickSight で [新しい分析]-[新しいデータセット] で S3 のデータを参照しようとすると「マニフェストファイルを有効な JSON として解析することはできません。」と怒られる 原因 ファイルが BOM付き UTF8 になっていたため。 $ file test.json test.j…

Amazon QuickSight で S3 のデータを可視化

AWS

Amazon QuickSight で S3 のデータを可視化してみた。 データの準備 住所データCSV【住所.jp】 から csv_zenkoku.zip をダウンロードする。 解凍して、UTF8 に変換する(macOS)。 $ brew install nkf $ unzip csv_26kyouto.zip $ nkf -Lw zenkoku.csv > zen…

Glue ジョブでのサイズの大きい gzip ファイルの解凍について

AWS

メモ What could be the problem? The first thing I looked at was whether the compression type for the data was the problem. GZip is a non splittable compression type, so it is likely the excess time is from uncompression of the data. (中略…

Aurora Postgres->KDS->KFH->S3 に出力したログを復号して CSV に変換する Python スクリプト

AWS

Amazon Linux 2 にパッケージをインストール sudo yum -y install gcc sudo yum -y install python-devel Python のモジュールをインストール pip install boto3 pip install aws-encryption-sdk pip install pycrypto pip install dataclasses pip install …

Lambda の同時実行数を1 にして並行実行してみる

AWS

AWS マネジメントコンソールで同時実行数を 1 に設定する。 並行で実行する for i in {1..100} do aws lambda invoke --function-name testLambdaFunction output_${i}.txt 2>&1 & done; TooManyRequestsException が発生し、4 回リトライして実行できない場…

Glue でクロールすると "Service: Amazon S3; Status Code: 403 Error Code AccessDenied" と怒られる

AWS

事象 AWS Glue Crawler でクロールすると "Error Access Denied (Service: Amazon S3; Status Code: 403; Error Code AccessDenied; Request ID: ..." と怒られる。 IAMポリシー、KMS キーポリシー、S3 バケットポリシーでは必要な権限は付与されている。 [8…

Docker で Apache Spark UI から Glue のジョブ結果を確認する

AWS

Docker で Apache Spark History Server を起動し、Spark Web UI を表示したメモ。 macOS on Macbook Pro で Spark UI を使ってみた。 Docker をインストール・設定 Docker を Mac にインストールする - ablog Amazon Linux 2 に docker をインストールする …

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

AWS

Amazon Linux 2 に docker をインストールしたメモ。 docker をインストール sudo yum install -y docker sudo usermod -a -G docker ec2-user 起動 sudo /bin/systemctl start docker.service 自動起動設定 sudo systemctl enable docker 参考 Amazon Linux…

Amazon SageMaker の Jupyter Notebook のコードを Github で管理する

AWS

Github リポジトリを作成する SageMaker で Github リポジトリを登録する(以下、マネコンでの操作) [Amazon SageMaker]-[ノートブック]-[Git リポジトリ]-[リポジトリの追加] どのタイプのリポジトリを追加しますか?: GitHub または他の Git ベースのリポ…

Amazon QuickSight から Athena にクエリすると "Access Denied"

AWS

事象 以下のエラーメッセージが表示される。 [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: C39A664B8E41665A; S3 Exte…

Athena でクエリすると "Zero records returned." と言われる

AWS

事象 データが空でないのに、Athena で問合せると "Zero records returned." と言われる。 原因 クローラ設定で対象をファイルに指定している 解決策 クローラがファイルではなくバケットかプレフィックスまでを指すようにする。 参考 空の結果を返す Amazon…

Glue クローラでカスタム分類子を使う

AWS

サンプル %{TIMESTAMP_ISO8601:timestamp} %{WORD:method} %{NOTSPACE:uri} %{WORD:statuscode} %{GREEDYDATA:json} 参考 Glueの使い方的な⑩(カスタムClassifierの手始め) - Qiita カスタム分類子の書き込み - AWS Glue Test grok patterns Grok Debugger

S3 Object Lock をバケット作成後に有効化する

AWS

新しいバケットに対してのみ オブジェクトロック を有効にすることができます。既存のバケットの オブジェクトロック をオンにする場合は、AWS サポートにお問い合わせください。 S3 オブジェクトロック の概要 - Amazon Simple Storage Service 関連 S3 Obj…

Amazon Linux 2 に sysbench をインストールしようとすると、libmysqlclient_r.so.16 とlibmysqlclient_r.so.16 が必要と怒られる

AWS

yum で Amazon Linux 2 に sysbench をインストールしようとすると、libmysqlclient_r.so.16 とlibmysqlclient_r.so.16 が必要と怒られる。 事象 コマンド curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo ba…

Amazon S3 のプレフィックスはオブジェクトか?

AWS

$ dd if=/dev/urandom of=origin.dat count=100 bs=1M 100+0 records in 100+0 records out 104857600 bytes (105 MB) copied, 0.568612 s, 184 MB/s $ aws s3 mb s3://ponkotsu-jp make_bucket: ponkotsu-jp $ aws s3api put-object --bucket ponkotsu-jp -…

AWS Glue で Jupyter Notebook を使う

AWS

Project Jupyter Project Jupyter (/ˈdʒuːpɪtər/ (About this soundlisten)) is a nonprofit organization created to "develop open-source software, open-standards, and services for interactive computing across dozens of programming languages". S…

Amazon Chime のチャットで Markdown 記法を使う

AWS

Sending Markdown Messages To send an Amazon Chime chat message using markdown syntax, type /md followed by a space at the beginning of your message. Compose your message using markdown syntax. Press Enter to send. The following example dem…

Python shell ジョブで six と python_dateutil をインストールする

AWS

閉域構成(ジョブにダミー接続をアタッチしてVPC内のみアクセス可能) Python ライブラリパス s3://az2-pypi-org/six-1.14.0-py2.py3-none-any.whl,s3://az2-pypi-org/python_dateutil-2.8.1-py2.py3-none-any.whl ログ Processing ./glue-python-libs-y3k8n…

Route 53 ヘルスチェッカーの IP アドレス範囲を調べる

AWS

Route 53 の現在の IP アドレス範囲を表示するには、ip-ranges.json をダウンロードし、ファイルで次の値を検索します。(中略) "service": "ROUTE53_HEALTHCHECKS" これらの IP アドレス範囲は、Route 53 ヘルスチェッカーによって使用されます。Route 53 …

AWS の各リージョンとコードの対応表

AWS

2020/5/16 時点 リージョンエンドポイント ほとんどの Amazon Web Services では、リクエストの実行に使用できるリージョンのエンドポイントを提供しています。リージョンエンドポイントの一般的な構文は次のとおりです。 protocol://service-code.region-co…

Route53 を使って同一 AZ のリードレプリカ障害時に別 AZ にフェイルオーバーする

AWS

要件 Aurora のリードレプリカを AZ1 と AZ2 に作成、正常時は AZ1 の AP サーバ on EC2 から AZ1 のリードレプリカに接続(同一AZのほうがレイテンシが低いため)、AZ1 障害時のみ AZ2 のリードレプリカに接続したい。 実装方式 Route53 の DNS フェイルオ…

Route 53 ヘルスチェッカーの IP アドレス範囲を調べる

AWS

Route 53 のRoute 53 ヘルスチェッカーの IP アドレス範囲を調べる。 $ curl https://ip-ranges.amazonaws.com/ip-ranges.json|jq -r '.prefixes[]|select(.service=="ROUTE53_HEALTHCHECKS")|@text "\(.region)\t\(.ip_prefix)"' % Total % Received % Xfer…

Aurora のカスタムエンドポイント

AWS

Aurora レプリカは、使用不可になっても、カスタムエンドポイントに関連付けられたままになります。たとえば、異常、停止、再起動などに伴って、カスタムエンドポイントの一部として残ります。ただし、レプリカが再度使用可能になるまでは、これらのエンドポ…

RDS Oracle の Active Data Guard によるクロスリージョンリードレプリカ

AWS

本日より、Amazon Relational Database Service (RDS) for Oracle で Oracle Active Data Guard を使用したクロスリージョンリードレプリカのサポートが開始されます。Amazon RDS for Oracle により、プライマリ DB インスタンスからさまざまな AWS リージョ…

CloudFront の S3 へのログ配信

AWS

ログファイル配信のタイミング CloudFront は、ディストリビューションのアクセスログを 1 時間に最大で数回配信します。一般的に、ログファイルには、一定期間内に CloudFront が受信したリクエストに関する情報が含まれています。CloudFront は通常、その…

マネコンで別アカウントに SwitchRole 時のイベントは us-east-1 に記録される

AWS

質問 AWSマネジメントコンソールで別のAWSアカウントに SwitchRole したときにスイッチ先アカウントの CloudTrail ログ(S3)を Athena で検索しても "SwitchRole" イベントが見つからない。 CloudTrail の「イベント履歴」にはスイッチ元とスイッチ先の両方…

PostgreSQL の 接続・クエリ・切断のログは Process ID で紐付けできる

PostgreSQL で接続・クエリ・切断のログは Process ID で紐付けることができる。今回は Aurora PostgreSQL 互換 11.6 で確認した。 設定 パラメータグループで以下を設定する(今回は接続・接続のログのみ確認した)。 log_connections = 1 log_disconnectio…

Aurora PostgreSQL 互換のアクティビティストリームの clientApplication にアプリ名をセットする

AWS

pg_stat_activity.aplication_name や Aurora PostgreSQL 互換のアクティビティストリームの clientApplication にアプリ名を記録したい場合は、アプリケーションから接続時に application_name パラメータをセットしてやればよい。以下は Python で psycopg…

Amazon Linux2 で Off-CPU Analysis を行う

AWS

準備 BCC をインストールする。 $ sudo amazon-linux-extras enable BCC $ sudo yum -y install kernel-devel-$(uname -r) $ sudo yum -y install bcc FlameGraph をダウンロードする。 $ git clone https://github.com/brendangregg/FlameGraph 使ってみる …

Glue の Python shell で使われている Python のパッチレベルを調べる

AWS

Glue の Python shell ジョブでは Python 2.7 と 3.6 が使える。パッチレベルを知りたかったので、表示させるコードを Python Shell ジョブの中で記述して実行してみたら、3.6.9 だった(東京リージョン、2020/5/6時点)。 コード import sys print(sys.vers…