AWS SAP

AWS SAPをベースにサービスを実際に触ってみながら勉強するよ。

S3のアクセス管理の話
ACLを有効にするかどうかはバケットに対して設定できる。
無効な場合、バケットに対するアクセス許可設定がオブジェクトに適用される。
バケットに対して設定できる基本的なアクセス許可は
- ブロックパブリックアクセス
- オブジェクト所有者
- バケットポリシー
- アクセスコントロールリスト
など。
この辺何となくで触っているので整理する。
オブジェクト所有者 と ACL
S3オブジェクトの余裕権を誰が持つか(持つとアクセス権を設定できる)に関する設定。
通常は困らないが、例えばS3バケットに誰でも書き込める設定だった時、別AWSアカウントからアップロードされたオブジェクトは誰のものなのか(アップロードした人が所有権を持ってアクセス権を制御する権限をもつのか、それともそのバケットが存在するアカウントが所有権を持つのか)の管理が必要になる。
それがオブジェクト所有者。デフォルトでは ACL無効(推奨)
が設定されていて、この状態であればオブジェクト所有者は「バケット所有者の強制」が選択される。この場合、オブジェクト所有者はバケット所有者 = このAWSアカウント に強制され、仮に別アカウントのユーザがこのS3にオブジェクトをアップロードしてもそれを制御する所有権を持たない。
ACL有効
を選ぶと、ACLに従ってオブジェクトの所有者が設定される。
先ほどまではオブジェクトの所有者はこのAWSアカウントだったが、ACLでは5つのグループに従ってオブジェクトの所有権を設定できるようになる。
- バケット所有者
- このAWSアカウントのこと。つまりここだけにしか権限を設定しなければ先ほどの「バケット所有者の強制」と同じ状況
- 全員
- AWSを持たないユーザも
- Authenticated Users
- AWSアカウントは持つすべてのユーザ
- S3ログ配信グループ
- これよくわからないね。
ちなみに、ACLを設定していた後にACLを無効化してバケット所有者の強制状態にすると、ACLは無視される。その後ACLを有効化すると復活する。ACLの有効無効でACL設定記述自体が消えるわけではなく、優先されるかどうかの設定にとどまるということ。
プロックパブリックアクセス
先ほどまでACLの話があったが、このパブリックアクセスブロックを使えばパブリックアクセスに関する設定を上書きすることができるというややこしい存在。
ただしありがたい。
公開するつもりがないならとりあえず全ブロックがよい。
有効だと、たとえACLで「全員」に「読み取り」を与えようとしてもブロックされる。
バケットポリシー
ACLとかブロックパブリックアクセスよりも高度なアクセス制御を加える時はこれを使う。
使用例
- 特定IPからのアクセスのみ許可する
- HTTPSアクセスを強制する
- 特定のタグが付いたオブジェクトだけアクセスを拒否する
など。
似たような概念としてIAMポリシーによる制御がある。結局これは主語をどこにするか。IAMリソースに対して権限を管理したいのであればバケットポリシーではなくIAMポリシーを使うべきだし、S3バケットやオブジェクトに対して特殊なアクセス管理をしたい場合はバケットポリシーを使ったほうが良いと思う。
IAMによる権限管理の例
- 特定のグループに対し、特定のパスに対してのみアクセスを付与する
- AWSリソースに対してアクセス権限を設定する(IAM Role)
静的ウェブサイトホスティング
アクセス許可タブではなくプロパティタブにある設定。
これを設定すると公開になるわけではなく、ホスティング用のURLを発行してくれるイメージ。
ブロックパブリックアクセスが有効になっていたりすると、たとえこのURLにアクセスしても 403
が返る。

IAMのアクセス境界
IAMにはアクセス境界という便利な機能がある。
ようは、「最大この範囲であれば〇〇していいよ」という許可範囲を定義する機能。
例えば IAM RoleやPolicy を作成する権限を与えつつ、そのポリシーの中で特定の権限を許可するのは拒否する、というようなときに使う。
※SCPとの違いは、SCPはアカウント全体に制御が行き渡るのに対し、IAMのアクセス境界はその名の通りIAMをアタッチするエンティティに対してのみ制御が行き渡るので、柔軟。
注意点としては、これはあくまで境界であり、実際に権限が付与されるわけではない。
ドキュメントがあった。
アクセス境界は使える場合は、委任を行う時。
特にIAMが1番ユースケースとしてありそう。
「IAMユーザを作成する権限を渡したいけど、どんな権限でもアタッチされるのは困る。特定の権限内に収まるユーザのみを作成する」
これを普通に実現するのは無理。

DynamoDB Accelerator について
通称DAX。
DynamoDBから大量の読み込み処理が必要な際に検討される。
VPC内にキャッシュサーバを立てて、それを例えばEC2などから利用するイメージ。

X-Ray
マイクロサービスのトレーシングサービス。何だかんだ使ったことないので使ってみる。
使ってみた(後で)
"""

リージョン障害時の別リージョン構築
基本的なアプリケーションの構成の場合くらいは押さえておくべきか。大体復元する時はデータをどうするかが問題であって、その他の基盤はTerraformとかCFnでなんとかなる。
EC2について
AMIやEBSをどうやってクロスリージョンでレプリケーションするか。
RDSについて
DynamoDBについて
S3について
バケットの管理のところに「レプリケーションルール」が存在する。
押してみると色々設定できるようだが、バージョニングを有効化していないと使えない。
やってみる
S3 RTCなるものが存在するらしい。

Amazon Transfer Family
全然認知していなかった。軽く調べる。
SFTP, AS2, FTPS, FTPについて。

Athena
S3とAthenaは定番だけどちゃんと触ったことがない。なにかやってみたい。
今日はAthenaを攻めるぞ
Athenaがどういうサービスなのかは何となく知っているので、ハンズオンをやってみる。
ハンズオンやってみたけどあんまり意味を感じなかった。(ひたすら用意されたクエリを投げるだけで何が起きているのか、そして何をやっているのかがわかりにくい。)
なので自分で触っていくよ。
巨大データは用意しにくいけど、まずは小規模にAthenaを使っていく。
ドキュメントを読もう。Athenaには3つの概念があるみたい。
- データソース
- データベースの集合
- データベース
- テーブルの集合
- テーブル
- いわゆるDBのテーブル形式に整理されたデータ
データソース = 生データか!?と思ったけど違うかもしれない。現状ではなんとも言えない。
CREATE EXTERNAL TABLE
コマンドでテーブルを作成していく。EXTERNALが気になるので調べてみると、この iceburg
テーブルを作る時以外は全部 EXTERNAL をつけるらしい。
実行。
The bucket specified in the ddl statement does not exist
エラーが出た。コピペしたから失敗。my-region
の部分を自分のリージョンにする。成功!
テーブルは作成できたが、このテーブルに対してのクエリは失敗した。 403 Access Denied なので、AWSが用意したバケットに対してアクセスできないエラー。
どうしようもない。ドキュメント綺麗にしておいてください…。
そういえば、Glue Data Catalogというのがデータソースとして指定されている。
これはAWS Glue
の機能(?)で、データのメタデータを管理する機能。

EC2サーバーに対するトラフィックを調査する方法について
どんな方法がある?

EC2インスタンスのリタイアの話

SSM RunCommand

EC2専有ホスト・専有インスタンス・アフィニティ

S3リクエスト支払い

RDSやAuroraのデータのクロスアカウントコピーの手段
KMSとか信頼ポリシーが関係するやつ

Elastic IP
自社で使用しているIPをElastic IPに割り当てることも可能っぽい?
Network Load BalancerならEIP割当可能なのことも調べる。

AWS SCT
聞いたこともない

オンプレのサーバーやその他構成をAWSに移行する
CART
AWS SMS
Server Migration Connector
意外と、オンプレサーバーをAWSに移行するのが多いのかもしれない。

不正アクセスをブロックする話
WAF
ACL
Shieldなどのサービスを整理する

Kinesisシリーズの話
Data Firehose
Data Analytics
Data Stream
プライベートサブネットでコンシュームしたい場合のInterface Endpoint

ElastiCacheの話
Redis と Memcached

予算の着地見込みの話
AWS Budgetの使い方

Control Towerの使い方

複数のAWSアカウントに同じリソースを作る方法

オンプレミスとAWSのハイブリット構成で名前解決を行う
オンプレ→AWS
と
AWS→オンプレ
の2種類を考える。

IPv6とEgress-Onlyゲートウェイについて

複数のAWSアカウントのVPCを接続したい
Transit Gatewayを使ってみる
Enable Accelerationについて

API Gateway
Lambda オーソライザー
Cognito オーソライザー
IAM認証
VPCデプロイ

Direct Connectについて
VPN接続との違いなど

SCPとService Catalogについて

ダイレクトメールの開封率やもろもろを調べたい
というユースケース。ありそう。ドキュメントを読む。
SESを使うと「オープン率」や「リンクのクリック率」を取れる。凄いな。リンクはともかく、オープン率をどうやってやって収集しているかというと、なんとメール本文に超小型の透明画像を配置して、メールを開くとその画像のDLが行われるので分かる、というやり方。凄いなおい。
試しにやってみる。
まずはSESでメールを送れるようにする。
東京リージョンに行き、メールIDを登録する。ドメインは取っているので、DKIMを利用する。
DKIMについてよく分かっていない。また今度調べる。

Lambda Layerを使ってみる

Global Accelerator

大容量のデータを転送したいユースケースについて
まとめておくと良さそう
- Transfer Acceleration
- Snowball