ablog

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

2020-01-01から1ヶ月間の記事一覧

VPC エンドポイント以外からの読み書きを禁止するS3バケットポリシー

AWS

シンプルに VPC エンドポイント以外からの読み書きを禁止するS3バケットポリシー。 { "Version": "2012-10-17", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Effect": "Deny", "Principal": "*", "Action": [ "s3:PutObject", "s3:GetObject"…

ECS と EKS

AWS

コントロールプレーンとデータプレーン ECS と EKS はコントロールプレーン。 データプレーンは EC2 タイプと Fargate タイプがある。 https://pages.awscloud.com/rs/112-TZM-766/images/I3-06.pdf https://pages.awscloud.com/rs/112-TZM-766/images/A3-02…

EKSを触ってみる

AWS

EKS を触ってみる EC2インスタンスを作成して、ssh でログインする。 IAMロールを作成してEC2にアタッチする。 eksctl をインストールする。 $ curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(…

PySpark on Glue で S3 上のファイル名をリネームする

AWS

PySpark on Glue で S3 上のファイルをリネームしてみた。 import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.j…

CMU の Andy Palvo 先生の History of Database が素晴らしい

カーネギーメロン大学でコンピュータサイエンス学科でデータベースの研究をされている Andy Pavlo 先生の "History of Database" が素晴らしい。Andy Pavlo 先生を知ったのは一昨年くらいに id:kumagi さんと飲んだときに教えてもらったのがきっかけで、その…

マイクロサービスとは

(書きかけ) マイクロサービスとは何か、原点を求め、2014年3月に Martin Fowler と James Lewis が書いたブログエントリ Microservices にあたってみた。 マイクロサービスとは a definition of this new architectural termThe term "Microservice Archit…

Graph Database の物理的なデータ構造

Graph Database の物理的なデータ構造の実装例がどうなっているか調べてみた。Graph Databases: New Opportunities for Connected Data作者:Ian Robinson,Jim Webber,Emil Eifrem出版社/メーカー: O'Reilly Media発売日: 2015/07/09メディア: ペーパーバック…

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

AWS

パッケージをインストール $ sudo yum -y install git \ bzip2 \ bzip2-devel \ gcc \ git \ libffi-devel \ make \ openssl \ openssl-devel \ readline \ readline-devel \ sqlite \ sqlite-devel \ zlib-devel pyenv をインストール $ curl -L https://ra…

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

AWS

$ sudo yum -y install python-pip 参考 Amazon Linux 2でpipをインストール - Qiita

AWS Data Wrangler を使ってみる

AWS

EC2 インスタンス(Amazon Linux 2)を作成して、IAMロールをアタッチする。 ssh でログインする。 pyenv をインストールして、Python 3 をインストールして有効化する。 Amazon Linux 2 に pyenv をインストールする - ablog pip をインストールする。 $ su…

AWS App Mesh とは

AWS

マイクロサービス間のやりとりにおいてビジネスロジックと関係ない汎用的機能をプロキシとして提供するのがサービスメッシュ。昔はライブラリとして提供している時代もあったが、汎用機能を変えたときに全アプリの再コンパイル・デプロイが不要、アプリと異…

AWS App Mesh Workshop をやってみた

AWS

AWS App Mesh Workshop :: Amazon App Mesh Workshop をやってみた。 EC2 インスタンスを作成する。 EC2 にIAMロールをアタッチする。 Install the required tools :: Amazon App Mesh Workshop からスタートする。 ディレクトリを作成する。 $ mkdir -p ~/e…

サービスメッシュの歴史

TL;TR(まとめ) サービスメッシュのロードバランシング、サーキット・ブレイキング、リトライといった機能自体は新しいものではなく以前はライブラリで提供されていた機能をリパッケージングしたもの。 サービスメッシュの起源は Web 3層モデルのアプリレイ…

RDS のメンテナンス時の再起動とフェイルオーバーについて

AWS

RDSのメンテナンス時にDBが再起動されるか? されるときとされないときがある。 ハードウェアメンテナンス メンテナンスの時期と影響を受けるアベイラビリティーゾーンを含む、スケジュールされたハードウェアメンテナンスウィンドウについての E メール通知…

Redshift、Athena(Presto)、Glue(Spark SQL) のSQL仕様比較

AWS

Amazon Redshift 歴史 Amazon Redshift debuted in 2012 as the first cloud data warehouse, and remains the most popular one today. But Redshift wasn't developed in-house. Amazon invested $20 million in a company called ParAccel, and in return…

AWS AppMeshのサンプルを試してみた

AWS

aws-app-mesh-examples/examples at master · aws/aws-app-mesh-examples · GitHub を試してみた。 sudo yum -y install git docker sudo service docker start git clone https://github.com/awslabs/aws-app-mesh-examples.git export AWS_PROFILE="defaul…

CloudTrail ログをパーティション分割して ORC に変換・マージして検索を高速化してみた

CloudTrail ログ(JSON)をリージョン、年、月でパーティション分割して ORC に変換・マージしてみた。 使用感 東京リージョンの全ログ(2017〜2020年)で S3 の API 発行回数をランキング表示。 スキャンサイズは約62MB、実行時間は約4秒。 S3 のフォルダ(…

Python Shell から Secrets Manager へのアクセスで "Connection to secretsmanager ... timed out" と怒られる

AWS

事象 Glue の Python Shell から Secrets Manager からパスワードなどを取得して Redshift にクエリを発行するジョブを実行するエラーになり、CloudWtach Logs を確認すると以下のメッセージが出力されている。 urllib3.exceptions.ConnectTimeoutError: (<botocore.awsrequest.AWSHTTPSConnection object at 0x7fb31ea5e128>, </botocore.awsrequest.awshttpsconnection>…

GlueからRedshiftへの接続テストで "Could not find S3 endpoint or NAT gateway for subnetId" と怒られる

AWS

事象 AWS Step Functions および AWS Glue を使用した Amazon Redshift ベースの ETL ワークフローのオーケストレーション | Amazon Web Services ブログ に従って、GlueでRedshiftへの接続を作成して接続テストを行うと失敗する。 VPC S3 endpoint validati…

ジョブ管理ツール

ジョブ管理システム - Wikipedia 初めての運用管理者が知っておきたい監視・ジョブ管理向けOSS構成例4つの比較まとめ (1/2):Zabbix+JobSchedulerで効果的な運用監視とジョブ管理 - @IT cronの代替になりそうなジョブ管理ツールのまとめ - Qiita JobSchedu…

CloudTrail ログ(JSON)を年月でパーティション化して Parquet に変換する

AWS

CloudTrail ログ(JSON)を年月でパーティション化して Parquet に変換した手順。 環境変数をセットする。 $ export S3_PATH_SRC=cloudtrail-awslogs/AWSLogs/<AWS account id>/CloudTrail $ export S3_PATH_DST=cloudtrail-awslogs-analytics S3バケットを作成する。 $ aws </aws>…

Jupyter notebook 環境をEC2で構築する

AWS

AWS Marketplace で "AWS Deep Learning AMI" で検索して、EC2インスタンスを作成する。 セキュリティグループで、ssh と TCP 8888 ポートへの マイIP からのアクセスを許可する。 ssh で接続する。 $ ssh -i .ssh/mykey.pem ubuntu@ec2-35-***-***-20.compu…

Athena で外部テーブル作成時に "no viable alternative at input 'create external'" と怒られる

AWS

事象 Athena で外部テーブル作成時に "no viable alternative at input 'create external'" と怒られる。 line 1:8: no viable alternative at input 'create external' (service: amazonathena; status code: 400; error code: invalidrequestexception; re…

Spark on EMR から Glue Catalog を参照する

AWS

Spark on EMR から Glue Catalog を参照してみたメモ。 前提 Glue カタログにすでにデータベースとテーブルは存在するものとする。 設定 EMRクラスターを作成する際に [ソフトウェア設定]で Spark にチェックを入れ、 [AWS Glue Data Catalog の設定 (オプシ…

Spark UI で Glue ジョブの結果を確認する手順

S3 に Spark event log 用のパス(例: s3://spark-ui-tokyo-ya/eventlog)を作成し、Glueジョブの[モニタリングオプション]-[Spark UI] にチェックを入れ、[Amazon S3 prefix for Spark event logs]にその S3 のパスを指定し、CloudFormation で Spark Histo…