はじめに
今回は、SOA受験に役立つチートシートです。
このチートシートは、
- 全体概要の把握
- 勉強中に関連知識を確認する
- 試験直前の詰め込み
など、学習初期から試験直前まで幅広く活用できます。必要に応じて自分なりのチートシートにまとめ直してもいいと思います。適宜活用して知識を深めるのに役立てばうれしいです。
Aurora
データ復旧
- バックトラック機能
→ 上限72時間まで新しいDBクラスタを作成することなく過去のDBクラスタにバックトラックできる - ポイントタイムリカバリ機能
→ 新しいDBクラスタにデータ復元 - スナップショット活用
→ スナップショットは保存期間上限なし。新規クラスタを作成してコピーできる
CloudFormation
典型的なテンプレート
以下はCloudFormationのテンプレ要素を可能な限り詰め込んだもの。各部位の解説はコメントに表記
AWSTemplateFormatVersion: '2010-09-09'
#テンプレの目的を表記
Description: "EC2インスタンス、VPC、S3バケットを含むインフラストラクチャのテンプレート"
#外部からの入力を受け取るためのセクション。
Parameters:
InstanceType:
Description: "EC2インスタンスのタイプ"
Type: String
Default: t2.micro
AllowedValues:
- t2.micro
- t2.small
- t2.medium
ConstraintDescription: "有効なEC2インスタンスタイプを選択してください。"
KeyPairName:
Description: "EC2インスタンスにSSH接続するためのキーの名前"
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: "有効なEC2キーペアを指定してください。"
#リージョンに応じた値を設定できるセクション。AMIはリージョンごとに変える必要がある事に注意
Mappings:
RegionMap:
us-east-1:
AMI: "ami-0c55b159cbfafe1f0"
us-west-1:
AMI: "ami-0bdb828fd58c52235"
eu-west-1:
AMI: "ami-047bb4163c506cd98"
#特定の条件に基づいてリソースを作成するかどうかを制御。この例では、EnvTypeがprodの場合にのみリソースを作成するという条件を定義
Conditions:
CreateProdResources:
Fn::Equals:
- !Ref EnvType
- prod
#AWSリソースを定義
Resources:
MyVPC:
Type: "AWS::EC2::VPC"
Properties:
CidrBlock: "10.0.0.0/16"
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: "MyVPC"
MyPublicSubnet:
Type: "AWS::EC2::Subnet"
Properties:
VpcId: !Ref MyVPC
CidrBlock: "10.0.1.0/24"
MapPublicIpOnLaunch: true
AvailabilityZone: !Select [ 0, !GetAZs "" ]
Tags:
- Key: Name
Value: "MyPublicSubnet"
MySecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "Enable SSH and HTTP access"
VpcId: !Ref MyVPC
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
MyEC2Instance:
Type: "AWS::EC2::Instance"
Properties:
InstanceType: !Ref InstanceType
KeyName: !Ref KeyPairName
SecurityGroupIds:
- !Ref MySecurityGroup
SubnetId: !Ref MyPublicSubnet
ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", AMI ]
Tags:
- Key: Name
Value: "MyEC2Instance"
MyS3Bucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Sub "my-s3-bucket-${AWS::Region}-${AWS::AccountId}"
AccessControl: Private
DeletingPolicy: "Retain" #削除ポリシーはDelete(削除)、Retain(保持)、Snapshotが選べる
#スタック作成後に出力する情報を指定
Outputs:
VPCId:
Description: "作成されたVPCのID"
Value: !Ref MyVPC
InstancePublicIP:
Description: "EC2インスタンスのパブリックIPアドレス"
Value: !GetAtt MyEC2Instance.PublicIp
S3BucketName:
Description: "作成されたS3バケットの名前"
Value: !Ref MyS3Bucket
CloudFront
OAC(オリジンアクセスコントロール)
CroudFrontにOACというユーザを設定できる。S#のバケットポリシーでOACからのアクセスに限定することでCloudFrontからのアクセスに限定できる。
キャッシュヒット率の向上方法
1.TTL(Time To Live)値を延長してキャッシュを増やす
2.Origin Shieldを有効化することでオリジンへのリクエストを集約する
Cloud Trail
CloudTrail Insights
APIコールの異常なパターンを検出するなどセキュリティ分析に便利なツール。
CloudTrail Processing Library
ログ処理を支援するJavaライブラリ
CloudWatch
CloudWatchエージェント
EC2などにインストールすることでエージェントからCloudWatchにメトリクスを送信できる。メモリ使用率やディスク使用率などの監視はユーザの責任範囲内なのでカスタムメトリクスを使用するためエージェントが必要。
EC2
EC2ユーザーデータ
インスタンスの初回起動時にシェルスクリプト形式またはcloud-init形式でデータを提供しパッケージやソフトウェアのインストール/アップデートを実行させられる
大規模なインスタンス群にパッチを適用する
Lambdaで作成した関数をSystems ManagerのRun Commandで実行する。TargetsパラメータにOSのタグを指定することで適切なインスタントにコマンドを実行できる。
ELB(Elastic Load Balancer)
Network Load Balancerは作成時にElastic IPアドレスをアタッチ可能。API GatewayはGlobal Acceleratorと、Application Load BalancerはNetwork Load Balancerと組み合わせることで可能。
リージョンを跨いだ負荷分散には使用できない
Global Accelerator
IPアドレスを固定してアプリケーションへのトラフィックルーティングを最適化するサービス。ファイルのアップロードなど(S3)を速くするサービスではない→アップロードの高速化にはS3TransferAccelerationやマルチパートアップロードを用いる。
Organizations
グローバル条件キーのPrincipalOrgIDは、組織内のすべてのAWSアカウントのアカウントIDリストのように扱える。これにより効率よく指定する組織に属するアカウントのみアクセスできるようになる
RDS
RDS Proxyの活用事例
- lambdaからRDSに対してmax_connection値を超えるリクエストが来てtoo many connectionsエラー
→ RDS Proxyでコネクションプールを作成することでDB効率向上
暗号化について
暗号化オプションの有効化はRDSインスタンス作成時のみ可能
→ 既存のRDSを暗号化する際はスナップショットをコピーし、暗号化したものを新しいインスタンスとして復元する
S3
静的Webサイトのホスティング
以下の設定をする
- パブリックアクセスをオフ
- バケットポリシーでGETアクションを許可
- 静的Webサイトホスティングを有効化
- インデックスドキュメントの設定とアップロード
インターネットにアクセスすることなくS3に接続する
S3ゲートウェイエンドポイントを作成し、プライベートサブネットはアタッチする
※インターフェースエンドポイントは追加のコストがかかるので基本は無料のゲートウェイエンドポイント
※EC2インスタンスのようにインスタンス直接はアタッチできない。あくまでサブネット
VPC
ネットワークACL
サブネットに割り当てることで特定のIPアドレスのトラフィックをコントロールできる
セキュリティグループ
インスタンスに割り当てる。インスタンスへのアクセスを許可したり、トラフィックを制御できる
- インバウンド → デフォルトでは全て拒否。許可した通信のみ通過
- アウトバウンド → デフォルトで全て許可
VPC外部向きのインターネット通信のみ許可
Egress-OnlyInternet Gatewayを作成し、0.0.0.0/0(IPv6なら::/0)トラフィックをルーティング
WAF
WAFで保護できるリソースタイプ
- Amazon CloudFront ディストリビューション
- Amazon API Gateway REST API
- Application Load Balancer
- AWS AppSync GraphQL API
- Amazon Cognito ユーザープール
- AWS App Runner サービス
- AWS 検証済みアクセスインスタンス
ポート番号
80:HTTP
443:HTTPS