ablog

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

AWS

EC2 で AWS Glue ETL ライブラリを使ってみる

AWS

ディレクトリ作成 $ cd /opt $ sudo mkdir apache-spark apache-maven Open JDK 1.8 をインストール $ sudo yum -y install java-1.8.0-openjdk-devel.x86_64 $ java -version Maven をインストール $ curl -O https://aws-glue-etl-artifacts.s3.amazonaws.…

AWS Lambda から Amazon RDS Proxy に IAM 認証する際のIAMポリシー設定例

AWS

AWS Lambda から Amazon RDS Proxy に IAM 認証する際のIAMポリシー設定例。以下のような IAM ポリシーを Lambda 実行用の IAM ロールにアタッチする。 IAM ポリシー例 リージョン: ap-northeast-1 AWSアカウントID: 234567890123 RDS Proxy の arn: arn:aws…

AWS Resource Access Manager を利用するには Organizations で「すべての機能」の有効化が必要

AWS

Requirements Only the management account can enable sharing with AWS Organizations. The organization must be enabled for all features. For more information, see Enabling All Features in Your Organization in the AWS Organizations User Guide…

VPCピアリング接続のトラブルシューティング

AWS

VPC Reachability Analyzer を使うと便利。 【速報】VPC内の接続性テストとトラブルシューティングを簡単にする!VPC Reachability Analyzerが発表されました! #reinvent | DevelopersIO

Amazon RDS Proxy の制約

AWS

Your RDS Proxy must be in the same VPC as the database. The proxy can't be publicly accessible, although the database can be. Amazon RDS Proxy による接続の管理 - Amazon Relational Database Service

Aurora PostgreSQL に RDS Proxy 経由で IAM 認証で接続する

AWS

Aurora PostgreSQL に RDS Proxy 経由で IAM 認証で接続する手順。 前提 RDS Proxy で [IAM 認証] が [必須] になっていること。 AWS CLI がインストールされていること*1。 psql がインストールされていること*2。 $ sudo yum -y install postgresql 手順 …

Private Subnet の EC2 にセッションマネージャーで接続できない

AWS

IAM ロールも VPC エンドポイントも正しく設定しているのに、Private Subnet の EC2 にセッションマネージャーで接続できない場合の原因と解決策。 事象 Private Subnet の EC2 にセッションマネージャーで接続できない 。 以下の VPC エンドポイントは作成…

KCL のサンプルコードの sequenceNumberOfPreviousRecord の初期値について

AWS

以下のサンプルコードの sequenceNumberOfPreviousRecord のループの1回目の初期値が何かという話だが、setSequenceNumberForOrdering はシャード内の順序を保証するメソッドで2回目からのループで1回目より後になればよいので、初期値は null でよさそう。 …

AWS Glue から別アカウントの Aurora PostgreSQL に接続する

AWS

AWS Glue で VPC Peering 経由で別アカウントの Aurora PostgreSQL に接続した手順をメモ。 前提 クロスアカウントで VPC Peering 接続されていること。 Aurora PostgreSQL にアタッチしているセキュリティグループのインバウンドでピアリング先 VPC からの …

NATゲートウェイの作成に失敗する

AWS

事象 NATゲートウェイを作成すると、Failed となり、状態メッセージに "Network vpc-****** has no Internet gateway attached" と表示される。 原因 VPC にインターネットゲートウェイがアタッチされていないため。 NAT ゲートウェイの作成に失敗する 問題 …

AWS CLI で VPC エンドポイント経由でアクセスする

AWS

事象 STS に対して EC2 から AWS CLI や AWS SDK を使ったアプリケーションから VPC エンドポイント経由で API を実行すると応答がなくタイムアウトする。 原因 グローバルエンドポイント(sts.amazonaws.com)が使用されているため。 AWS CLI v1 はデフォル…

Python でタイムスタンプのタイムゾーンを変換する

Python でタイムスタンプのタイムゾーンを変換するコード例。例えば、CloudTrail のタイムゾーンを UTC から JST に変換するといった場合。以下のコードは AWS Lambda でも追加モジュール不要で実行可能。 コード import datetime import dateutil.parser de…

MariaDB Connector/J で Aurora MySQL に接続すると INFORMATION_SCHEMA.REPLICA_HOST_STATUS からエンドポイントを取得する?

AWS

Amazon Aurora DB クラスターエンドポイントは、DNS レコードの更新を自動的に伝播しますが、処理は即座に行われるわけではありません。これにより、データベースで発生したイベントへの応答が遅れる可能性があり、イベントがアプリケーションによって処理さ…

AWS を使って Web サイトを公開したりしてみる

AWS

ゆるく、AWS を使って Web サイトを公開したり、いろんなサービスを使ってみたりしていくメモ。 AWS アカウント作成後にすぐやるセキュリティ対策 - ablog 01. Amazon S3 でウェブサイトを公開する - ablog 02. Route 53 で独自ドメインを取得する - ablog 0…

Amazon DynamoDB の監視設計

AWS

アラート通知 ThrottledRequests メトリクス 説明 ThrottledRequests リソース (テーブルやインデックスなど) でプロビジョニングされたスループットの上限を超える、DynamoDB へのリクエスト。リクエスト内で任意のイベントがプロビジョンドスループットの…

作成済の Aurora クラスターの Performance Insights を有効化する

AWS

クラスター作成後に Performance Insights を有効化する場合は、[クラスターの変更] ではなく [インスタンスの変更] で有効化する。 Aurora MySQL では t2、t3 インスタンスクラスは Performance Insights はサポートされていない。 RDS MySQL から Aurora …

AWS Backup で Amazon DynamoDB のバックアップを定期的に取得する

AWS

AWS Backup で Amazon DynamoDB のバックアップを日次で取得してみた。 マネジメントコンソールで AWS Backup に移動してから以下の手順で作成した。 手順 バックアッププランを作成する バックアップウインドウ: バックアップウインドウをカスタマイズ バッ…

Spark UI で参照している S3 のパスを変更する

AWS

CloudFormation で Spark UI 用に EC2 インスタンスを作成後に、参照する S3 のパスを変更する手順。 /opt/spark/conf/spark-defaults.conf の spark.history.fs.logDirectory を編集する spark.eventLog.enabled true spark.history.fs.logDirectory s3a://…

CloudFormation で Spark UI 作成時にアタッチされる IAM ロール

AWS

Spark UI で Glue ジョブの結果を確認する手順 - ablog で、CloudFormation で Spark UI 用 EC2 を作成したときにアタッチされる IAM ロールに設定されている IAM ポリシーは以下の通り。 AWS 管理ポリシー CloudWatchAgentServerPolicy AmazonS3ReadOnlyAcc…

01. Amazon S3 でウェブサイトを公開する

アカウントレベルの設定 アカウントレベルで S3 のブロックパブリックアクセスをオフに設定する。 S3 バケットの作成と設定 S3 バケット "portfolio.yoheia.com" を作成する。 Route 53 でエイリアスとして設定する場合、DNSレコード名と同じ名前のバケット…

AWS アカウント作成後にすぐやるセキュリティ対策

ルートアカウント ルートユーザーの他要素認証の有効化 Amazon S3 のブロックパブリックアクセスをアカウントレベルで有効化 CloudTrail を有効化 AWS Config を有効化(マネージドルールは選択しない) AWS GuardDuty を有効化 AWS SSO、AWS Organizations …

ALB と Lambda のリクエストサイズの最大値

AWS

Lambda の呼び出しペイロードは最大 6MB(同期の場合) ALB はターゲットが Lambda の場合にリクエストボディは最大 1MB 参考 リソース Quota 呼び出しペイロード (リクエストとレスポンス) 6 MB (同期)256 KB (非同期) AWS Lambda のクォータ - AWS Lambda …

Google Chromeで複数AWSアカウントに同時にサインインして操作を行う方法

AWS

Google Chrome の右上のユーザーを選択し、追加をクリックする。 ユーザー名を入力、アイコンを選択してユーザーを追加する。 それぞれのユーザーでログインしておけば、AWSアカウントでサインイン/サインインアウトしなくても同時に複数アカウントにサイン…

AWS Glue の glueContext で spark.conf.set() する方法

AWS

Glue Spark ジョブや Jupyter Notebook の glueContext で spark.conf.set() する方法 import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext, SparkConf ★ from awsglue.co…

Amazon Redshift から Amazon S3 へ UNLOAD 時に s3:ListBucket 権限が必要

AWS

Amazon Redshift から Amazon S3 へ UNLOAD 時には s3:PutObject 権限だけでよさそうだが、s3:ListBucket 権限も必要。allowoverwrite オプションをつけている場合は s3:PutObject 権限のみで UNLAOD できるが、allowoverwrite オプションをつけていない場合…

AWS Glue で Amazon S3 にある Parquet を Amazon DynamoDB にロードする

AWS

AWS Glue で Amazon S3 にある Parquet を Amazon DynamoDB にロードしてみた。 DynamoDB にテーブルを作成する。 プライマリキーの項目名と型を設定する。 Parquet ファイルを S3 バケットにアップロードする。 AWS Glue でクロールしてテーブルを作成する…

AWS Glue で Amazon S3 にある CSV を Amazon DynamoDB にロードする

AWS

AWS Glue の Spark ジョブで Amazon S3 にある CSV を Amazon DynamoDB にロードしてみた。 src_table.csv を作成する。 x y z src_table.csv を S3 バケットにアップロードする。 AWS Glue のクローラでアップロードした CSV をクロールしてテーブルを作成…

AWS Glue で Amazon DynamoDB に読み書きする

AWS

AWS Glue の Spark ジョブで Amazon DynamoDB のテーブルから別のテーブルにデータをコピーしてみた。 手順 DynamoDB のテーブルを作成する src_table プライマリキー: key 3件ほどItemを追加する dst_table プライマリキー: key テーブルは空のままにしてお…

S3 にある CSV を DynamoDB にインポートする Python スクリプト

AWS

ソースコード ddb_csv_importer.sh #!/usr/bin/env bash export bucket=aws-s3-bucket export key=test/test_table.csv export table=testTable python ./ddb_csv_importer.py ddb_csv_importer.py #!/usr/bin/env python3 # -*- coding: utf-8 -*- import b…

DynamoDB に BatchWriteItem で書こうとすると "when calling the BatchWriteItem operation: The provided key element does not match the schema" と怒られる。

AWS

事象 DynamoDB に BatchWriteItem で書こうとすると "when calling the BatchWriteItem operation: The provided key element does not match the schema" と怒られる。 Error executing batch_writer Traceback (most recent call last): File "./ddb_csv_i…