ablog

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

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…

06. CloudFront でカスタムドメインのSSL証明書を設定する

CloudFront マネジメントコンソールで CloudFront にアクセスする。 [Create Distribution] をクリック、[Get Started] をクリック、以下の通り入力し、[Create Distribution] をクリック。 Origin Domain Name: portfolio.yoheia.com.s3.amazonaws.com Orig…

05. カスタムドメインのSSL証明書を作成する

マネジメントコンソールで ACM にアクセスする。 [証明書のプロビジョニング]-[今すぐ始める] をクリック。 [パブリック証明書のリクエスト] を選択。 ドメイン名を入力する。 [DNS の検証]を選択。 [確定とリクエスト] をクリック。 [続行] をクリック。 [R…

04. CloudFront 経由で Amazon S3 でホストされた静的ウェブサイトを公開する

CloudFront の設定 マネジメントコンソールで CloudFront にアクセスする。 [Create Distribution] をクリック、[Get Started] をクリック、以下の通り入力し、[Create Distribution] をクリック。 Origin Domain Name: portfolio.yoheia.com.s3.amazonaws.c…

03. 独自ドメインで S3 の静的ウェブサイトホスティングを公開する

設定 マネジメントコンソールで作成したドメイン名(yoheia.com)をクリックする。 [レコードを作成] をクリックする。 レコードを作成する。 エイリアス: チェック レコード名: FQDN を入力 トラフィックのルーティング先 エンドポイントを選択: S3 ウェブ…

02. Route 53 で独自ドメインを取得する

Route 53 でのドメイン登録すると15分ほどで完了して使えるようになった。 マネジメントコンソールで Route 53 にアクセスする。 [ドメインの登録] をクリックし、取得したいドメインを入力する。 連携先を入力する。 入力情報を確認して、注文を完了する。 …

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

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

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

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

base64 エンコーディングされたバイナリデータは元より大きくなる

メールの添付ファイルが元のファイルよりもサイズが大きくなる理由 RFC 2045 で定義されている Multipurpose Internet Mail Extensions(MIME)の仕様には、バイナリからテキストへのいくつかのエンコーディングの 1 つとして「base64」が示されています。 M…

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 オプションをつけていない場合…

GitHub で2要素認証を有効化したら、git コマンドで push できない

事象 GitHub で2要素認証を有効化したら、git コマンドで push できない。 原因 2要素認証を有効化すると、git コマンドではパスワードではなく Personal access tokens で認証を行うため。 解決策 Personal access tokens を生成 ブラウザで GitHub にログ…

GitHub に push すると "error: src refspec master does not match any."、"error: failed to push some refs to" と怒られる

事象 GitHub に push すると "error: src refspec master does not match any."、"error: failed to push some refs to" と怒られる。 $ git push origin master error: src refspec master does not match any. error: failed to push some refs to 'git@gi…

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…

Session Manager plugin で Private Subnet の EC2 に踏み台なしで接続する

AWS

Session Manager plugin で Private Subnet の EC2 に踏み台なしで接続する。環境は macOS。 前提 IAM ポリシー"AmazonSSMManagedInstanceCore"を付与した IAM ロールが EC2 にアタッチされていること。 以下の VPC エンドポイントが作成されていること。 co…

AWS Labs の aws-shell を使ってみる

AWS

インストール $ pip install aws-shell 使ってみる $ aws-shell aws> 参考 AWS CLI のコマンド実行を補助する「aws-shell」の紹介 - サーバーワークスエンジニアブログ GitHub - awslabs/aws-shell: An integrated shell for working with the AWS CLI.

GitHub で Web サイトを公開する

ブラウザで GitHub にログインする。 "GitHubアカウント名.github.io(例: yoheia.github.io)" という名前のリポジトリを作成する。 gh-pages, develop という名前のブランチを作成する。 ディレクトリを作成する $ mkdir yoheia.github.io $ cd yoheia.githu…

GitHub Pages で Jekyll を使わずに静的コンテンツを公開する

GitHub Pages は、デフォルトでは Jekyll を使ってサイトを構築します。 Jekyll 以外の静的サイトジェネレータを使いたい場合、公開元のルートに .nojekyll という空のファイルを作成し、お使いの静的サイトジェネレータの指示に従ってローカルでサイトをビ…

2段階認証設定後に GitHub に push すると "fatal: Authentication failed for" と怒られる

事象 GitHub で2段階認証設定後に push すると "fatal: Authentication failed for" と怒られる。 $ git push -u origin master Username for 'https://github.com': yoheia [core] Password for 'https://yoheia@github.com': remote: Invalid username or …

Hugo の Academic Template で Portfolio サイトを作って GitHub Pages で公開する

Hugo の Academic Template で Portfolio サイトを作って GitHub Pages で公開してみた。 https://yoheia.github.io/ インストール Go と Hugo をインストール $ brew install go $ brew install hugo Hugo の Academic Template をダウンロード GitHub - wo…