tarコマンド
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
【 tar 】コマンド――アーカイブファイルを作成する/展開する:Linux基本コマンドTips(40) - @IT
tarコマンド
tar -cvf 作成ファイル(.tar) 対象ファイル1 対象ファイル2
圧縮してアーカイブ
tar -czvf 作成ファイル(.tgz) 対象ファイル1 対象ファイル2
閲覧
tar -tf アーカイブファイル
解凍
tar -xzvf アーカイブファイル(圧縮ファイル)
以上!!!!!!!!!!!!!
ログを整形して表示
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
やりたいこと
本日は業務においてaccess_logを整形して表示する作業が必要だったので、その時に利用したコマンドを備忘録として残したいと思います。
作業の流れ
2.access_logの中で必要な箇所の位置を特定する
3.ログの必要な箇所を抜き出し、.logファイルにリダイレクトする
4..logファイルをffftpを使って実機に持ってきてサクラエディタでより細かく整形
実践
$ sudo su -
# mkdir /opt/work/log && cd /opt/work/log
# cp /var/log/httpd/access_log-20211116 /opt/work/log/access_log
access_logの中で必要な箇所の位置を特定する
(以下は16:00:00からのログが欲しいので
16:00:00の1つ目のログを抜き出し番号を確認している)
# head -n 1 /opt/work/log/access_log
# grep -n "16:00:00" access_log | head -n 1
ログの必要な箇所を抜き出し、.log.txtファイルにリダイレクトする
# tail -n +6275033 access_log | awk '{print $4 "" $7 "" $10} | awk -F ':' '{print $2 ":" $3 ":" $4}' > edit.log.txt
# tail -n +1111111 access_log | awk '{print $4 "" $7}' | awk -F ':' '{print $2 ":" $3 ":" $4}' | sort | uniq -c > accesscount.txt
.log.txtファイルをffftpを使って実機に持ってきてサクラエディタで細かく整形!!
以上!!!!!!!!!!!!!
ECサイト構築
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
EC2 インスタンスに、EC-CUBE4 を構築する - Qiita
本日のやりたいこと
今回はAmazonEC2のインスタンス上にECサイトを構築する。
使用環境
- サーバー
- Amazon EC2
- インスタンスタイプ: t2.micro (1台) (容量的にt2.mediumがいいかも)
- Amazon EC2
- ソフトウェア
構築の流れ
①サーバセットアップ(時刻合わせ & 文字コード統一)
②各種ソフトウェアインストール
③Composerインストール
④各種設定の変更
⑤データベースセットアップ
⑥EC-cubeインストール
いざ、構築!
サーバセットアップ
rootユーザに移行
sudo su -
時刻合わせ
timedatectl set-timezone Asia/Tokyo
文字コード統一
sed -i "s/en_US\.UTF-8/ja_JP\.UTF-8/g" /etc/sysconfig/i18n
各種ソフトウェアインストール
Apacheインストール
yum install -y httpd
AmazonLinuxの追加パッケージのphpをインストール
amazon-linux-extras install -y php7.2
php-fpmインストール
yum install -y php-mbstring php-xml php-intl
Gitインストール
yum install -y git
MariaDBインストール
yum install -y mariadb mariadb-server
usermod -a -G apache ec2-user
/var/www/ディレクトリの所有者と権限を変更
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;
ソフトウェアの自動起動設定をオンにして起動
systemctl enable httpd && systemctl start httpd
systemctl enable php-fpm && systemctl start php-fpm
systemctl enable mariadb && systemctl start mariadb
Composerインストール
Composerのインストール
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
rm composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
各種設定の変更
httpd.confを編集
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
vi /etc/httpd/conf/httpd.conf
--------------以下を編集---------------
<IfModule mime_module>
Addtype application/x-httpd-php .php ← 追加
</IfModule>
<Directory "/var/www/html">
AllowOverride None
↓
AllowOverride All
</Directory>
---------------------------------------
php.iniを編集
cp /etc/php.ini /etc/php.ini.org
vi /etc/php.ini
--------------以下を編集---------------
memory_limit = 128M
↓
memory_limit = 512M
---------------------------------------
※プラグインインストールでメモリが原因で失敗しないようにするため。
Apache再起動
systemctl restart httpd
データベースセットアップ
データベースの初期設定
mysql_secure_installation
⑴ Enter current password for root (enter for none):
データベースのrootユーザのパスワードはまだ設定されてないので
何も入力せずにenterを押す。
⑵ enter current password for root (enter for none):
データベースの root ユーザーのパスワードをこれから設定したいので
'Y' と入力して Enter を押す。
⑶ Set root password? [Y/n]
安全なパスワードを 2回入力
New password:
Re-enter new password:
Password updated successfully!
⑷ 以下全部 Y を入力
---以下MariaDB内での操作---
EC-cubeのデータベースを作成
CREATE DATABASE `ec_cube_database`;
EC-cube用ユーザを作成
CREATE USER 'ec_cube_user'@'localhost' IDENTIFIED BY '1234';
EC-cube用ユーザにEC-cubeデータベースの権限付与
GRANT ALL on ec_cube_database.* to 'ec_cube_user'@'localhost';
EC-cubeインストール
/var/www/htmlに移動
cd /var/www/html
EC-cubeのgitをインポート
git clone https://github.com/EC-CUBE/ec-cube.git
権限を変更
chmod 764 ec-cube/bin/console
/var/www/html/ec-cube/に移動
cd ec-cube/
Composerインストールを実行
composer install
各環境変数を設定
bin/console eccube:install
Database Url [sqlite://avr/eccube.db]:
> mysql://$ユーザ名:$パスワード@localhost/$データベース名
$ユーザ名 → 今回の場合は"ec_cube_user"
$パスワード → 今回の場合は"1234"
$データベース名 → 今回の場合は"ec_cube_database"
動作確認
以上!!!!!!!!!!!!!
AWSSAA取得した件について
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
先日、AWSソリューションアーキテクトアソシエイトの資格を受験に行きました。
結論から言うと、、、、
724点
でぎりっぎり合格することができました。
合格点が720点ということで4点ありがとう。。。。。
所感としてはやっぱり、めちゃくちゃ難しかったっていう印象が強い。。。
途中全然わからない部分があったが、もう半泣き状態で問題解いてました。
最近の傾向とかがあるのかもしれないけど、
S3とAWS LambdaとAWS WAFをしっかり学習することをオススメします!
自分の学習方法として、AWS JapanのYoutubeチャンネルでAWSのオンラインセミナーのアーカイブを見ました。
これめちゃくちゃ、構造の理解ができるのでオススメです!
以上!!!!!!!!!!!!!
AWSSAA~重要サービス~
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
AWS IAM(ユーザーアクセスと暗号化キーの管理)| AWS
今回のやりたいこと
AWSソリューションアーキテクトアソシエイトの学習のためにAWSのサービスで最重要の次に重要なサービスを簡単にまとめたいと思います。需要があればご覧ください。
Route53
Route53はAWSのDNSサービス。WebコンソールやAPIから、簡単にドメイン情報やゾーン情報を設定・管理できる。Route53は単にドメインやDNS情報を管理するだけでなく、ネットワークトラフィックのルーティングや接続先のシステム状況に応じた接続先の変更など、オプション機能も持っている。
ドメイン管理
ドメインの取得からゾーン情報の設定までRoute53で一貫した管理が可能。ドメインの年間利用料は通常のAWSの利用料の請求に含まれるため、別途支払いの手続きも不要です。自動更新機能もありドメインの更新漏れといったリスクも回避できる。
ホストゾーンとレコード情報
ホストゾーンとはレコード情報の管理単位を表す。通常はドメイン名。たとえば、「example.com」のレコード情報を管理する場合のホストゾーンは「example.com」となる。レコード情報は、ドメイン名とIPアドレスを変更するための情報。
レコード情報には、Aレコード、MXレコード、CNAMEレコードといった種類があるが、Route53で特徴的なレコードとしてAliasレコードがある。Aliasレコードはレコード情報に登録する値として、CloudFrontやELB、S3などのAWSリソースFQDNを指定できる。CNAMEとの違いとしてZone Apexも登録できる。Zone Apexとは、最上位ドメインのこと。
トラフィックルーティング
要件や構成に応じて適切なトラフィックルーティングを指定することで可用性や応答性の高いシステムを構築することができる。
・シンプルルーティングポリシー
標準的な1対1のルーティング
・フェイルオーバールーティングポリシー
アクティブ/スタンバイ方式で、アクティブのシステムのヘルスチェックが失敗したときにスタンバイに切り替えることができる。S3と連携させることで、本番システム障害時にSorryサーバの静的コンテンツを表示させることができる。
・位置情報ルーティングポリシー
日本からのアクセスは日本語のコンテンツが配置されたWebサーバに接続するといった制御ができる。
・地理的近接性ルーティングポリシー
リソースの場所に基づいてトラフィックをルーティングし、必要に応じてトラフィックをある場所のリソースから別の場所のリソースに移動する際に使用。
・レイテンシールーティングポリシー
複数箇所にサーバーが分散されて配置されている場合に、遅延がもっとも少ないサーバにリクエストをルーティングする。特定サーバだけ高負荷になった場合にリクエストを分散できる。
・複数値回答ルーティングポリシー
1つのレコードに異なるIPアドレスを複数登録して、ランダムに変換されたIPアドレスに接続する。ヘルスチェックがNGになったIPアドレスは返却されないため、正常に稼働しているサーバにのみアクセスを分散できる。
・加重ルーティングポリシー
指定した比率で複数のリソースにトラフィックをルーティングする際に使用。拠点をまたがってリソースの異なるサーバが配置されている場合にリクエスト比率を調整することができる。
CloudWatch
CloudWatchは運用監視を支援するマネージドサービス。リリース後安定した運用をすることで利用者の満足度を上げていくことが非常に重要。
概要
CloudWatchは各AWSリソースの状態を定期的に取得する。この状態をメトリクスという。AWSがあらかじめ定義しているメトリクスを標準メトリクスという。標準メトリクスにメモリ使用率がないことはよく知られている。そのため、カスタムメトリクスと呼ばれる利用者が独自に作成したメトリクスを利用することで使用が可能。
CloudWatch logs
CloudWatch logsはログをモニタリングするサービス。使用するには独自のエージェントをインストールする必要がある。このエージェントを介して各EC2ログをCloudWatch logsに収集する。CloudWatchと同様に、このアラームをトリガーにしてアクションを定義することが可能。
CloudWatch Events
CloudWatch Eventsは独自のトリガーと何かしらの後続アクションとの組み合わせを定義するサービス。独自のトリガーをイベントソース、後続アクションをターゲットと呼ぶ。ターゲットに既存のAWSリソースに対するアクションを定義する。
CloudTrail
CloudTrailはAWSに関する操作ログを自動的に取得するサービス。CLIやSDKを用いたAPI操作によって、AWSリソースを操作したり、AWSリソースから情報を取得できる。CloudWatch logsと連携させることで不正な操作を早期に発見できる。
CloudFormation
AWS CloudFormationはAWSリソースを自動構築するためのサービス。構築されるAWSリソースはスタックと呼ばれる。スタックは、テンプレートと呼ばれる設計図に基づいて構築される。
利用の流れ
①CloudFormationテンプレートを作成
②テンプレートを適用
③CloudFormationスタックが作成される
④③に紐づく形でAWSリソースが自動構築される
CloudFront
Amazon CloudFrontはHTMLファイルやCSS、画像、動画といった静的コンテンツをキャッシュし、オリジンサーバのかわりに配信するCDNサービス。
CloudFrontのバックエンド
CloudFrontはCDNのため、元となるコンテンツを保持するバックエンドサーバ(オリジンサーバ)が必要。オリジンサーバとして、EC2、ELB、S3の静的ホスティングを利用することができる。また、オンプレミスのサーバを指定することが可能なため今のシステム構成を変更することなくCloudFrontを導入することでイベント等のアクセス増に備えることができる。
ディストリビューション
CloudFrontは配信するコンテンツの内容によって異なる2つのディストリビューションがある。ダウンロードディストリビューションはHTTPやHTTPSを使いHTMLやCSS、画像などのデータの配信に利用。ストリーミングディストリビューションはRTMPを使って動画のストリーミング配信をする際に利用。RTMPは時代の変化とともに2020年12月をもってサポートを終了。
キャッシュルール
頻繁にアップロードされる静的コンテンツはキャッシュ期間を短くし、あまり変更されないコンテンツ(画像・動画)はキャッシュ期間を長くするといった設定が必要。
ElastiCache
Amazon ElatiCacheは、AWSが提供するインメモリ型データベースサービス。高頻度で参照するデータや検索に時間がかかるデータセットをメモリ上に保持することでシステムのパフォーマンス向上に寄与する。
種類
ElastiCacheは2種類のエンジンをサポートしている。
Memcached
スタンダードで広く使われるエンジンでデータ処理パフォーマンスの向上に特化したキャッシュシステム。
・マルチスレッド
・非永続化
・単純なデータアーカイブ(String,Objects)
・メンテナンスが簡単
Radis
Memcachedより多くのデータが使えて、キャッシュ用途だけでなく、メッセージブローカーやキューを構成する要素としても利用される。
・シングルスレッド
・永続化
・多数のデータベースアーカイブ
・Atomic処理
・Pub/sub メッセージング
・リードレプリカ/フェイルオーバ
SQS
Amazon Simple Queue ServiceはAWSが提供するフルマネージドなメッセージキューイングサービス。キューイングサービスを介すことで疎結合になる。
SQSの機能
SQSの機能として、キューの管理とメッセージの管理の2つがある。キューとは、メッセージを管理するための入れ物のようなもので、作成すれば管理する必要がなく、エンドポイントと呼ばれるURLを介して利用する形になる。
キューの種類
キューはStandardキューとFIFOキューの2種類ある
Standardキュー
メッセージの配信順序を保証せず、同一のメッセージが2回配信される可能性がある。
FIFOキュー
メッセージの配信順序を保証する。秒あたりの処理件数はStandardキューに劣る。
ロングポーリングとショートポーリング
キューのメッセージ取得方法として、ロングポーリングとショートポーリングがある。両者の違いは、SQSのキュー側がリクエストを受けた際の処理にある。デフォルトのショートポーリングの場合はリクエストを受けるとメッセージの有無にかかわらず即レスを返す。これに対しロングポーリングはメッセージがない場合は設定されたタイムアウトのギリギリまでレスポンスを返さない。ショートポーリングはAPIの呼び出し回数も多くコストがかかる。複数のキューを単一スレッドで処理するような例外的ケース以外はロングポーリングを利用する。
可視性タイムアウト
メッセージは受信しただけでは削除されない。クライアント側から削除指示を受けたときに削除される。SQSには同じメッセージの受信を防止する機能として可視性タイムアウトがある。デフォルト設定値は30秒で最大、12時間まで延長可能。
デッドレターキュー
デッドレターキューは処理できないメッセージを別のキューに移動する機能。指定された回数処理が失敗したメッセージを通常のキューから除外してデッドレターキューに移動する。デッドレターキューを上手く使うと、アプリケーション側の例外処理を大幅に簡素化できる
メッセージキュー
キューに格納できるメッセージの最大サイズは256KB。文字列の情報に十分なサイズだが、画像情報などを扱うには足りない。SQSでは大きなサイズのデータはS3やDynamoDBに格納し、そこへのパスやキーといったポインター情報を受け渡すことで対応する。
SNS
Amazon Simple Notification Serviceはプッシュ型の通知サービス。マルチプロトコルのため、複数のプロトコルに簡単に配信できる。利用できるプロトコルはSMS、email、HTTP/HTTPS、SQSに加え、iOSやAndroidなどのモバイル端末へのプッシュ通知、Lambdaとの連携などが利用できる。メッセージをプロトコルごとに変換する部分はSNSが行うので、通知する人(Publisher)はプロトコルの違いを意識することなく配信できる。SNSはSQSやCloudWatchなどと組み合わせてシステム間の連携や外部への通知などに利用する。
SNSの利用
SNSはトピックという単位で情報を管理する。システムの管理者は、メッセージを管理する単位でトピックを作成する。トピックの利用者には通知する人(Publisher)と通知される人(Subscriber)がいる。Subscriberは利用するトピックと受け取るプロトコルを登録する。これを購読という。
以上!!!!!
AWSSAA~最重要サービス~
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
AWS IAM(ユーザーアクセスと暗号化キーの管理)| AWS
今回のやりたいこと
AWSソリューションアーキテクトアソシエイトの学習のためにAWSのサービスで最重要なサービスを簡単にまとめたいと思います。需要があればご覧ください。
IAM
AWS Identify and Access Management(IAM)では、AWSのサービスやリソースへのアクセスを安全に管理できる。IAMを使用すると、AWSのユーザとグループを作成および管理し、アクセス権を使用してAWSリソースへのアクセスを許可および拒否できる。
ポイント
- 利用者ごとのIAMユーザ作成
- 最小権限の原則
- AWSリソースからのアクセスにはIAMロールを使う
利用者ごとのIAMユーザの作成
AWSにはアカウント作成時に作られたAWSルートアカウントがある。AWSルートアカウントは、利用者の追跡やアクセス制限が難しいため、原則として通常の運用には使わない。ユーザごとにIAMユーザを発行し、パスワードポリシーや多要素認証(MFA)を設定する。ユーザ本人しか利用できないようにすることで誰がリソースを操作したか追跡できるようになる。(操作の追跡にはCloudTrailを利用し、設定履歴の確認にはAWS Configを利用。)
最小権限の原則
IAMユーザやIAMロールは必要な操作権限を最小限に付与することが重要。たとえば、通常の開発者にはネットワークの操作権限は不要で、運用者にはインスタンスの起動停止のみで十分な場合が多い。業務で必要な権限以外を与えないことで、万が一アクセス権を奪われても被害を最小限に抑えることができる。
AWSリソースからのアクセスにはIAMロールを使う
IAMロールは、AWSリソースなどサービスに対して付与できる。たとえば、EC2インスタンスにロールを付与することでインスタンスのプログラムからAWSを操作できるようになる。プログラムにIAMユーザのアクセスキー・シークレットキーを付与すると、キー流出の危険性は高くなる。できる限りロールを使用する。
VPC
Amazon virtyual Private Cloud(VPC)は利用者ごとのプライベートなネットワークをAWS内に作成する。VPCはインターネットゲートウェイと呼ばれるインターネット側への出口を付けることで直接インターネットに出ていくことが可能。また、オンプレミスの各拠点へ繋げるために仮想プライベートゲートウェイを出口として、専用線のサービスであるDirect ConnectやVPN経由で直接的にインターネットに出ることなく各拠点と接続することも可能。(VPC内に配置できないサービスとしてS3やCloudWatch、DynamoDBなどがある。)
EC2(+EBS)
Amazon Elastic Conpute Cloud(EC2)は仮想サーバを提供するコンピューティングサービス。インスタンスという単位でサーバが管理され簡単にサーバを構築することが可能。そのため、オンプレミス環境に比べてサーバ調達のリードタイムを非常に短くできる。また、インスタンス性能を決めるほかの重要な要因として、ディスク機能であるElastic Block Store(EBS)がある。EC2では通常の通信で使用するネットワーク帯域とEBSで使用する帯域を共有している。そのため、ディスクI/O、外部とのリクエストともに多く発生する場合、帯域が足りなくなることがある。このようなときに利用できるのがEBS最適化インスタンス。
EBSのボリュームタイプ
EBSのボリュームタイプはSSDが2種類、HDDが2種類の4種類ある。
※旧世代のマグネティックと呼ばれるHDDのストレージタイプもあるが、新規で作成する際は現行のボリュームタイプから最適なものを選ぶ。また、各タイプの性能を最大限活かすにはEBSへのアクセスを最適化したEC2インスタンスの利用がおすすめ。
汎用SSD
「汎用」という名前が示すとおり、EBSの中で最も一般的な、SSDをベースとしたボリュームタイプ。EC2インスタンスを作成する際のデフォルトのボリュームタイプとしても利用される。性能の指標としてIOPSを用いて31IOPS/GBから最大16,000IOPS/ボリュームまで容量に応じたベースライン性能がある。1TB未満のボリュームには、一時的なIOPSの上昇に対応できるようにバースト機能が用意されており、容量に応じて一定期間3,000IOPSまで性能を向上させることができる。このベースライン性能やバースト機能を用いても必要なIOPSを満たすことができない場合は次のプロビジョンドIOPSの利用を検討する。
プロビジョンドIOPS SSD
プロビジョンドIOPSはEBSの中で最も高性能な、SSDをベースとしたボリュームタイプ。RDSやEC2インスタンスでデータベースサーバを構成する際など、高いIOPS性能が求められる際に利用する。IOPSの高いユースケースと高いスループットが必要なユースケースの両方に適したストレージタイプ。
スループット最適化 HDD
スループット最適化HDDはHDDをべーすとしたスループット重視のボリュームタイプ。ログデータに対する処理やバッチ処理のインプット用ファイルなど大容量ファイルを高速に読み取るようなユースケースに適している。スループットを性能指標として用いており、1TBあたり40MB/秒、最大で500MB/秒のベースライン性能がある。
Cold HDD
Cold HDDは4つのストレージタイプの中でストレージとしての性能はそれほど高くないが最も低コストなボリュームタイプ。利用頻度が少なく、アクセス時の性能もそれほど求められないデータをシーケンシャルにアクセスするようなユースケースやアーカイブ領域の用途に適している。1TBあたり12MB/秒、ボリュームあたり最大250MB/秒のベースライン性能がある。
ELB(+Auto Scaling)
Elasstic Load Balancing(ELB)は3タイプのロードバランサーがある。
- Classic Load Balancer(CLB)
- Application Load Balancer(ALB)
- Network Load Balancer(NLB)
ELBの特徴
マネージドサービスであるELBを用いるメリットとして、ELB自体のスケーリングが挙げられる。EC2インスタンス上にロードバランサーを導入する場合は、そのインスタンスがボトルネックにならないように設計する必要がある。それに対してELBを用いた場合、負荷に応じて自動的にスケールする設定になっている。だが、スケーリングは瞬時に完了するわけではないことに注意が必要。急激な負担増(スパイク)が予想できる場合は、事前にELBプレウォーミングの申請が必要。もう一つELBの大きな利点としてヘルスチェック機能がある。ヘルスチェックは、設定された間隔で配下にあるEC2にリクエストを送り、各インスタンスが正常に動作しているかを確認する機能。もし、異常なインスタンスが見つかったときは自動的に切り離し、その後正常になったタイミングで改めてインスタンスをELBに紐付ける。ヘルスチェックには下記の設定値がある。
Auto Scaling
Auto Scalingはシステムの利用状況に応じて自動的にELBに紐づくインスタンスの台数を増減させる機能。インフラリソースを簡単に調達でき、不要になれば、使い捨てできるクラウドならではの機能。Auto Scalingには下記の設定項目がある。
RDS(Aurora)
Relational Database Service(RDS)はAWSが提供するマネージドRDBサービス。MySQL,MariaDB,PostgreSQL,Oracle,Mycrosoft SQL Serverなどのオンプレミスでも使い慣れたデータベースエンジンから好きなものを選択できる。さらにAmazon Auroraという、AWSが独自に開発したクラウドのメリットを最大限活かした新しいアーキテクチャのRDSも提供されている。バックアップやハードウェアメンテナンスなどの運用作業、障害時の復旧作業はAWSが提供するマネージドサービスを利用することで複雑になりがちなデータベースの運用を、シンプルかつ低コストに実現できる。
マルチAZ構成
マルチAZ構成とは、1つのリージョン内の2つのAZにDBインスタンスをそれぞれ配置し、障害発生時やメンテナンス時のダウンタイムを短くすることで高可用性を実現するサービス。以下の2点は利用時に注意
- 書き込み速度が遅くなる
- フェイルオーバに60~120秒かかる
リードレプリカ
リードレプリカとは、通常のRDSとは別に、参照専用のDBインスタンスを作成することができるサービス。2021年現在、すべてのデータベースエンジンでリードレプリカを利用可能。読み込みが多いアプリケーションにおいてDBリソースのスケールアウトを容易に実現することが可能。
Aurora
AuroraではDBインスタンスを作成するとともにDBクラスタが作成される。DBクラスタは1つ以上のDBインスタンスと、各DBインスタンスから参照するデータストレージで構成される。データストレージは、SSDをベースとしたクラスタボリューム。各ストレージ間のデータは自動的に同期され、また、クラスタボリューム作成時に容量を指定する必要がなく、Aurora内に保存されるデータ量に応じて最大64TBまで自動的拡張される。Auroraは他のRDSと異なりマルチAZ構成オプションはない。しかし、Auroraクラスタ内に参照専用のレプリカインスタンスを作成することができる。Auroraは他のRDSのリードレプリカとの違いAuroraのプライマリインスタンスに障害が発生した場合にレプリカインスタンスがプライマリインスタンスに昇格することでフェイルオーバーが実現する。
S3+S3 Glacier
Amazon S3は非常に優れた耐久性を持つ、容量無制限のオブジェクトストレージサービス。ファイルストレージとの違いとしては、ディレクトリ構造を持たないフラットな構成であることや、ユーザが独自にデータに対して情報を付与できることが挙げられる。
S3 の各オブジェクトには、RESTやSOAPといったHTTPをベースとしたWeb APIを使ってアクセスする。利用者がデータを保存するために利用するだけでなく、EBSのスナップショットの保存場所として使われるなどAWSのバックエンドサービスにも使われる。
ストレージクラス
- S3標準
- S3標準-低頻度アクセス
- S3 1ゾーン-IA
- S3 Intelligent - Tiering
- S3 Glacier
- S3 Glacier Deep Archive
ライフサイクル管理
S3に保存されたオブジェクトはその利用頻度に応じてライフサイクルを定義することができる。以下の二つのアクションを選択できる。
- 移行アクション
- 有効期限アクション
バージョニング機能
バージョニング機能を有効にすると、1つのオブジェクトに対して複数のバージョンを管理することができる。バージョニングはバケット単位で有効/無効を指定できる。バー叙任うされたオブジェクトは差分管理されるのではなく、新・旧の両方が保存されバージョンIDで区別されるため、両バージョン分の保存容量が必要。
Webサイトホスティング機能
S3では静的なコンテンツに限って、Webサイトとしてホスティングする環境を作成できる。静的コンテンツのリソースは通常のS3の利用と同様に、S3バケットへ保存することで行える。
S3のアクセス管理
S3のアクセス管理にはバケットポリシー、ACL、IAMが使える。バケットポリシーはバケット単位でアクセスを制御する。そのバケットに保存されるオブジェクト全てに適用されるので、バケットの用途に応じた全体的なアクセス制御をするのに有効。ACLはオブジェクト単位で公開/非公開を制御する場合に使用。IAMでの制御はユーザ単位でS3のリソースを制御する場合に使用。
以上!!!!!!!!!!!!
シェルスクリプトで頻出コマンド~シェルの基礎~
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考記事>
uniqコマンドについて詳しくまとめました 【Linuxコマンド集】
date
dateコマンドはコマンドを実行することで現在の「西暦」「月」「日」「時間」「分」などを表す文字を出力することができる
date +%Y_%m%d_%a_%H:%M
→2021_1015_Fri_20:14
%Y 西暦 %m 月 %d 日
%H 時間 %M 分 %a 曜日
awk
awkはあるフィールドの文字列を抜き出す際に使用する。
標準出力を行うawkコマンド「print」を利用し、awkで指定したフィールドを取得
echo 1 2 3 4 | awk '{print $1}'
→1
上記の例ではechoで標準出力した”1 2 3 4”の中から空白で区切られた中で一番最初のフィールドの1のみを抜き出して出力している。
echo 1 2 3 4 | awk '{print $0}'
→0
※$0は「パイプやファイルから渡された、文字列全て」
区切り文字の指定
空白(スペース)以外を区切り文字に指定する際には -Fオプションを利用します。
echo 1-23-456-78910 | awk -F'[-]' '{print $2}'
→23
echo 1-23:456~78910 | awk -F'[-:~]' '{print $2,$4}'
→23 78910
※上記のように記入することでフィールド区切り文字・フィールドは複数指定できる
sed
sedは文字列の置換に利用する。
cat file | sed -e 's/:/,/g' file内の全行の":"を","に置換
sed -e '1d' file file内の1行目を削除
wc
wcはファイルの文字数・単語・行数を表示するプログラム。
cat /var/log/httpd/error_log |wc -l
-c データに含まれる文字数を数える
-w データに含まれる単語数を数える
-l データに含まれる行数を数える
cut
aukと同様にフィールドを抜き出す場合に利用する。
cat /etc/shadow | cut -d ":" -f 2
-f n(数字) 第nフィールドを抜き出す対象とする。引数はカンマ(,)で区切って複数、ハイフン(-)で繋いで範囲を指定できる.
-d "区切り文字" 区切り文字の指定が可能。
sort
sortは並び替えを行うフィルタープログラム。
cat /etc/passwd | sort 行先頭の文字コード順に並び替えて表示
-n 行頭の文字列を数字として評価し、昇順で並び替える。
+n 第nフィールドを並び替えの対象とする
uniq
重複する行になんらかの処理を行う。
uniq file fileから重複行を削除
uniq file1 file2 file1から重複した行を削除した結果をfile2に出力
-c 重複した行数もターミナル上に表示する
-d 重複した行のみをターミナル上に表示する
-D 重複した行をターミナル上にすべて表示する
-u 重複した行はターミナル上に一切表示しない
-f 指定した項目以降で重複を判断する
-w 指定した文字数までで重複を判断する
以上!!!!!!!!!