カテゴリー: tech

  • EBS でパフォーマンスをあげるには

    ストライピングする

    EBS はストライピングすることができ、最大で 60,000 MB/s を出すことができる。

    ただし、パフォーマンスはボリュームサイズによって比例するとのこと。

    注意点

    SSD のボリュームに対してバースト機能は存在しない

    参考情報

    https://aws.amazon.com/jp/ebs/faqs/

  • EFS のバーストスループットについてまとめる

    EFS のファイルシステムは

    • バーストスループット
    • プロビジョニングされたスループット

    の 2 つある。それぞれの特徴をまとめる。

    バーストスループット

    EFS のスループットは、ストレージクラスのファイルシステムのサイズが大きくなるにつれて上昇する。

    100G使っているファイルシステムの場合、

    バーストスループットでは 1日あたり 72分間のみ 300M/s の読み込みをできる。

    (通常モードは 15M/s)

    プロビジョニングされたスループット

    保存されたデータ量とは別に、

    ファイルシステムのスループット (MiB/秒) を簡単にプロビジョンされる。

    1日1回動くバッチ処理などのような、瞬間的に使うような使われ方をする場合は、バーストスループットを選ぶとメリットを享受できそうだ。

    参考情報

    https://docs.aws.amazon.com/ja_jp/efs/latest/ug/performance.html

    https://docs.aws.amazon.com/ja_jp/efs/latest/ug/storage-classes.html

  • S3 のバケットを誤って公開した場合の検知方法

    S3 のバケットを誤って公開してしまった時、どのように検知するかをまとめた。

    案は2つ

    1. Lambda を呼び出して、 S3 バケットを保護する CloudWatch Events ルールを設定
    2. S3 のオブジェクトレベルのログを有効にして、 CloudTrail でパブリック読み取りアクセス許可を持つ PutObject API が検出されたとき、 SNS に通知するような CloudWatch イベントを作る。

    この2つの方法は取ることができるが、単純に案1 の s3 から Lambda をトリガーしてチェックを行うのは実装は簡単そう。

    しかし、やろうと思えば案2 の仕組みをつくることもできる。

  • AWS CLI で CloudWatch logs を見る

    CloudWatch logs を確認したいが、AWS コンソール に入らずとも CLI で確認することができる。

    $ aws --profile stg logs get-log-events --log-group-name /ecs/hogehoge --log-stream-name ecs/stream --output text
    
    EVENTS  1628662114657   COPY FROM S3.   1628662110415
    EVENTS  1628662114657   logs ......       1628662111623
    EVENTS  1628662404609   running...................................................................................................................................................................................................................................................................................................      1628662401927
    EVENTS  1628662404609   処理時間:289.469252秒  1628662401927
    

    1行目は EVENTS

    2行目は タイムスタンプ

    3行目にログが記載されている。

    https://docs.aws.amazon.com/cli/latest/reference/logs/get-log-events.html

  • s3 からファイルコピーする際の download: を表示させない

    大量のファイルをコピーしようとすると、標準出力が s3 からdownload しているという標準出力で埋め尽くされる

    % aws s3 cp s3://sumito-hoge/11.change.csv hogehoge
    download: s3://sumito-hoge/11.change.csv to ./hogehoge

    これを表示させないためには --quiet オプションを使う

    % aws s3 cp s3://sumito-hoge/11.change.csv hogehoge --quiet
    
    
    ファイルはきちんとコピーされている
    
    ls -l hogehoge*                                                                                                                        
    -rw-r--r--  1 sumito.tsukada  wheel  5774  8 11 12:40 hogehoge
    

  • 多数のクライアントから EFS を利用する際 性能劣化を回避する

    EFS は

    • 汎用 I/O パフォーマンスモード
    • 最大 I/O パフォーマンスモード

    という2種類のモードがある。

    それぞれ整理する。

    汎用 I/O パフォーマンスモード(General Purpose performance mode)

    EFS のデフォルト値

    レイテンシーが低く、ワークロードがレイテンシーの影響を受けやすい場合に適している。

    Webサーバ含め、一般的なファイルシステムなどレイテンシーに敏感なユースケースに最適。

    最大 I/O パフォーマンスモード(Max I/O performance mode)

    ファイルシステムオペレーションの制限はない。

    多数のクライアントから EFS を利用する際 性能劣化を回避する際はこちらを選ぶ。

    ただし、ファイルのメタデータを操作する際のレイテンシーが若干高くなるというトレードオフがある。

    ユースケースとして、高度に並列化されたアプリケーションやワークロードには、このモードが有効になる。

    参考情報

    https://docs.aws.amazon.com/efs/latest/ug/performance.html

  • S3 で自分の暗号化キーを使ってサーバーサイドエンクリプトをする

    Tips

    自分のキーを持ち込みたい場合、

    SSE-C を使うことで独自の暗号化キーを使うことが可能。

    参考情報

    https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html

  • DDoS 攻撃への対処

    さまざまな対処法がある。

    Amazon Route 53 による制御

    • シャッフルシャーディング
    • anycast ルーティング

    DDoS 攻撃を受けていても連携してエンドユーザーがアプリケーションにアクセスできるようにする2つの機能がある。 

    AWS Shield AdvancedとAWS WAF

    • DDoS攻撃の緩和
    • レイヤー7での保護

    AWS WAF

    カスタマイズ可能なウェブセキュリティルールを定義することで、ウェブアプリケーションに対するどのトラフィックを許可またはブロックするかを制御できる。

    SQL インジェクションまたはクロスサイトスクリプティングに加え、カスタマイズされたルールを使うことができる

    AWS Shield Advanced

    CloudWatch でのリアルタイムの通知によって、DDoS 攻撃に対する完全な可視性が可能になる。

    AWS Shield Standard

    レイヤー3/レイヤー4攻撃を軽減できるが、詳細なリアルタイム通知や可視化機能が提供していない。

  • 誤って割り当てた STS のアクセス権を剥奪するには

    一時認証によって付与されたアクセス権を取り消す方法を考える。

    STSによって間違った権限を付与してしまった場合、

    IAMダッシュボードにおいて、ユーザーに提供した特定のロールを選択し、取り消し設定を利用してSTSの許可ロールを取り消すことができる。

    STSなどの一時的な認証情報をユーザーに付与したとき、ユーザーが長いセッションの有効期間 (12 時間など) を使用して AWS マネジメントコンソール にアクセスできるようにすると、時間内であれば一時認証情報がすぐに期限切れになることはない。

    対処法

    IAMダッシュボードにおいて、ユーザーに提供した特定のロールを選択する。

    取り消し設定を利用して許可ロールを取り消す。

  • AWS Transit Gateway について

    概要

    AWS Transit Gateway を使うことで多数のVPCを管理することができるようになる。

    VPC ピアリングをする必要がなくなり、

    • VPC
    • オンプレのデータセンター
    • オフィス

    それぞれに単一の接続を構築して管理するだけで良くなる。

    Transit Gateway がハブの役割を果たし、トラフィックがスポークのように接続されたネットワーク間をどのようにルーティングするか等をすべて制御する。

    AWS Transit Gateway が提供するもの

    統計とログを VPC フローログ、 CloudWatch で参照できる。

    AWS Transit Gateway で VPC フローログを有効にすることができる。

    CloudWatch を使用してVPC <–> VPN 接続間の

    • 帯域幅の使用量
    • パケットフロー数
    • パケットドロップ数

    などが取得ができる。

    トランジットゲートウェイをファイアウォールまたは IPS(侵入防止システム)に接続したり、ネットワークのすべての入出力トラフィックを処理する単一の VPC を作成することもできる。

    AWS Transit Gateway network manager は、ネットワークトポロジーの変更、ルーティングの更新、接続ステータスの更新に関する組み込みのイベント通知を提供します。

    参考情報

    https://dev.classmethod.jp/articles/transit-gateway-vpc/