JAWS-UG 初心者支部#14「AWS Night school & LT」
無線LAN有り
AWS Night school 第二回:RDSとS3
AWSJ 亀田さん
Amazon S3
- インターネット対応のストレージ
- 常にオンライン、HTTPでアクセス
- ウェブ上どこからでも実行可能
- スケーラビリティ・信頼性・耐久性
- 保存した分のみの従量課金(EBSに比べて10倍以上の費用対効果)
S3は確保領域の設計が不要
※EBSでも10GBずつ容量を増やすことができる
EBSにはデータ耐久性の指標が設定されていないので、定期的なバックアップが必要
EBSのバックアップ先はS3が良い
S3ではファイルをデータオブジェクトとしてバケットに保存される
バケット名は全ユーザーでユニークである必要がある
※testというような名称のバケットは作成できない
ファイルの世代管理・保存に対応
無制限のオブジェクトを保存可能
(1つのオブジェクトは最大5TB)
99.999999999% のオブジェクト耐久性
99.99% のオブジェクト可用性
HTTPSのエンドポイントを提供可能
監査などのためにアクセスログを取得可能
標準ベースのRESTインターフェイスを提供
オブジェクトの暗号化をサポート
S3はOSから直接マウントできない
100GB保存した場合の費用
S3=283円
EBS=1,356円(シングルAZの場合)
EBS=2,712円(マルチAZの場合)
セキュリティー
以下でアクセスを制御
- アクセスコントロールリスト
- バケットポリシー
バージョニング
アップロードごとに新しいバージョンを生成
削除されたオブジェクトの取得や以前のバージョンへのロールバックが可能
複数バージョンをファイルを保存しておくため、課金額は増える
バケットの3種類の状態
- バージョニング無効(デフォルト)
- バージョニング有効
- バージョニング一時停止
バージョニングを有効にしている状態でファイルを削除すると
削除フラグが立つのみで実体は消えていない
削除フラグが立っているファイルにアクセスすると404
Amazon Glacier
S3より低コストのアーカイブサービス
低頻度アクセスのデータに最適
99.999999999%の耐久性
取り出し時間:3〜5時間
S3に比べ1/3のコスト
ストレージクラスの選択
リアルタイムアクセスが必要?→No→Glacier
↓
Yes
↓
アクセス頻度が高い?→No→S3標準低頻度アクセス(IA)
↓
YES
↓
S3標準
ライフサイクルポリシー
30日アクセスがないとS3低頻度へ
さらにアクセスがないとGlacierへ
S3とEC2、EBSの違い・使い分け
EC2のEBSで一時的にファイルを受付け、それをS3バケットへ転送
その後はS3にアクセスさせる
RDS
マネージド型サービス
ミドルウェアの設計が不要のため、アプリケーション開発に集中できる
RDSインスタンスのOSへログインはできない
OSレベルでチューニングしているようなケースでは利用NG
自動バックアップ
データベースを特定時点まで復元可能(5分間隔)
最大35日間まで保持期間を選択可能
手動スナップショット
ユーザーによって取得可能、AmazonS3に保存される
クロスリージョンスナップショットで別リージョンにも保存可能
セキュリティ
VPC内でDBインスタンスを実行
IAMポリシーでリソースへのアクセスを制限可能
セキュリティグループ使用
実行時・保存時のDBインスタンス・スナップショットを保護するにはRDSの暗号化を使用する
EC2との違い
スケーラビリティ
マスターは増えず、スレーブのみ増える
マルチAZの動作により別AZにレプリケーションされる
Aurora
Amazonが再設計したデータベース
(詳しくは過去のQiita記事を参照)
Auroraマルチマスターが発表されているのでそのうち使えるようになるらしい
第3回はVPCを予定
LT
LT1:AlexaスキルでDynamoDBを使った
日付を指定するとゴミ集日を教えてくれるスキル
NHKの記事に技術書典に出品した本が出ていた!
Alexaスキルで会話が終了した後にデータを保存したい場合DynamoDBが利用できる
なぜDynamoDBなのか?
- Lambdaと相性が良いため
- イベント駆動、お手軽
- RDSの場合、複数のコネクションによりコネクションプール不足が発生
- 複数のコネクションが来てもDynamoDBがスケールして対応できる
- 複雑ではないデータを扱うため
DynamoDBはキーとして設定できる列数が限定されている
プライマリキー1個 セカンダリインデックス5個
RDSとDynamoDBではテーブル設計が異なるため注意
LT2:IAM PolicyやRoleあたりの使い方の話
AWSアカウント(ルートアカウント)なんでもできる
↓作成
IAMユーザー
↑アタッチ
IAMポリシー(何をしてよいかの権限設定)
↓一時的に付与
IAMロール
AWS STSにより一時的な許可を受けIAMロールの権限を使えるようになる
IAMロールの信頼ポリシーに付与したいIAMユーザーを記載しておかないと権限が与えられない
LT3:サーバなしで立てるウェブサイト (S3+CloudFront)
AWSでWebサイトを立てたい場合
EC2、Lightsailが思いつく
構築・運用が大変…
S3+CloudFrontがオススメ!
月額料金
1ページあたり20ファイル
1ページ1MB
月間ページビュー5万
900円ぐらい
足りない機能は外部サービスで補う
LT4:IDaaSを用いた複数AWSアカウントへのログインで良かったこと困ったこと
アカウントを100弱管理している
oneloginを使用している
踏み台アカウント→スイッチロール
踏み台アカウントで作業している
別のサービスにログインするとき入り直す必要がある
↓
セレクトロールページを選択できるようになった
スイッチロール不要
oneloginで良かったこと
フリープランがある
ユーザー無制限
スイッチロール式ならこれでOK
ロールアドミン権限がある
OneLginでグループを作成し、そこに追加できる権限を各サービスのリーダーに付与
悪かったこと
自動化したいがAPIが足りない
バグがあったが3ヶ月程で直してくれた
LT5:怖くないクラウドインフラストラクチャサービス
EFS NFSv4.1
EC2間のファイル共有などに利用
LT6:MFA、失くした
MFACODEを入れる画面で、
「Troubleshoot MFA」をクリック
メール認証・電話認証を経て晴れてログインできる
LT7:Go言語と事例で学ぶAWS Lambda
Lambdaとは?
サーバレス・FaaS
関数はイベントに発火して実行可能
GO言語とは?
並列実行に強い 構文がシンプル
SlackBOTやクローラーに利用している
LT8:Lightsail 触ってみよう
Laightsailとは?
VPS
料金がわかりやすい
Laightsailコンソールから数手でサーバ構築可能
構築後、Web画面からコンソールにアクセス可能(SSMみたいな感じ)
デフォルトのキーペアが存在する
ロードバランサーの能力が不明
マネージドDBが使えるようになった
LT9:初心者だからこそ使いたいBeanstalkで本番環境
インフラ初心者が本番環境を作るのにBeanstalkがおすすめ
小規模から大規模まで対応可能
高度な知識がなくてもおまかせできる
デフォルト環境セットがある
Beanstalkが起動するEC2・RDSの費用のみ課金
LT10:TerraformではじめるInfrastructure as Code
IaCとは?
コードによるインフラ管理
手動だと大変
- 構築した人じゃないとわからない
- 担当者も記憶にない
- 障害で復旧できない
- 徹夜で0から構築
- 退職後も障害で呼び出される
コード化しておけば、
- インフラの設定が誰でもわかる
- 障害が発生してもコマンド1つですぐに復旧
- 作業ミスもおこらない
- インフラエンジニアがいなくても管理できる
Terraform
インフラストラクチャ定義ツール
事前にIAMユーザー作成 AWSCLIをインストールしておけばOK
コードで作ったものを手動で変更しないこと
複数人で作業する場合はftstateの管理に気をつけること
本番用のインフラは必ずコード化
LT11:JAWS初心者支部から「AWSをこれから始める方へ」
AWSの勉強方法
技術書典5で販売されていた「AWSをはじめよう」がオススメ
Boothで買えるよ
次回、AWS Night school#15は12月7日(金)予定