Open11
AWS CLI
Linux で AWS CLI バージョン 2 をインストール
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.4.13 Python/3.8.8 Linux/4.18.0-348.2.1.el8_5.x86_64 exe/x86_64.rocky.8 prompt/o
認証情報の設定
$ aws configure
AWS Access Key ID [None]: ABCDEFGHIJKLMNOPQRST
AWS Secret Access Key [None]: 12345678901234/AAAAAAA/AAAAAAAAAEXAMPLEKEY
Default region name [None]: AA-BBB-1
Default output format [None]: json
アクセスキーの取得方法
RDS起動
$ aws rds start-db-instance --db-instance-identifier インスタンス名
RDS停止
$ aws rds stop-db-instance --db-instance-identifier インスタンス名
AWS CLI 出力フォーマットの設定
- 以下の出力形式がある
- json
- yaml
- yaml-stream
- text
- table
- コマンドラインで
--output
オプションを使用すれば変更できる
AWS CLI & jq
RDSインスタンスの情報取得からDBInstanceIdentifierとDBInstanceStatusを取得
- DBInstancesはDBInstanceインスタンスのリスト
RDSインスタンスの情報取得からDBInstanceIdentifierとDBInstanceStatusを取得
# rds describe-db-instances : RDSインスタンスの情報取得
# -cオプション : Using this option will result in more compact output by instead putting each JSON object on a single line.
# DBInstances配列からパイプして、DBInstanceIdentifierとDBInstanceStatusを取得する例
$ aws rds describe-db-instances | jq -c '.DBInstances[] | [.DBInstanceIdentifier, .DBInstanceStatus]'
["rdsxxx1","stopped"]
["rdsxxx2","stopped"]
["rdsxxx3","available"]
値だけ取る
値だけ取る
$ cat aws.txt | jq -c '.DBInstances[].DBInstanceStatus'
"stopped"
"stopped"
"available"
-rオプションでダブルクオートを外す
ダブルクオートを外す
$ cat aws.txt | jq -r '.DBInstances[].DBInstanceIdentifier'
stopped
stopped
available
フィルター条件
-
DBInstances
からDBInstanceStatus
がavailable
ものを抽出 - 抽出した対象の
DB_Instance
とDBInstanceStatus
を表示
フィルター条件
$ cat aws.txt | jq '.DBInstances[] | select(.DBInstanceStatus == "available") | {DB_Instance: .DBInstanceIdentifier, Status: .DBInstanceStatus}'
{
"DB_Instance": "rdsxxx1,
"Status": "available"
}
RDSログファイルの確認
- ログファイルの確認は
describe-db-log-files
コマンドを使う
$ aws rds describe-db-log-files --db-instance-identifier DBインスタンス識別子 | jq .DescribeDBLogFiles[].LogFileName
"error/postgres.log"
"error/postgresql.log.2022-02-02-0816"
"error/postgresql.log.2022-02-02-0900"
"error/postgresql.log.2022-02-02-1000"
"error/postgresql.log.2022-02-02-1100"
"error/postgresql.log.2022-02-02-1200"
"error/postgresql.log.2022-02-02-1300"
.
.
.
RDSログファイルの出力
- エラーログは
download-db-log-file-portion
コマンドを使う -
--output text
として通常ログと同じように出力
aws rds download-db-log-file-portion --db-instance-identifier DBインスタンス識別子 --log-file-name error/postgres.log --output text
2022-02-02 08:16:23.017 GMT [6994] LOG: skipping missing configuration file "/rdsdbdata/config/recovery.conf"
2022-02-02 08:16:23.017 GMT [6994] LOG: skipping missing configuration file "/rdsdbdata/config/recovery.conf"
2022-02-02 08:16:23.017 GMT [6994] LOG: skipping missing configuration file "/rdsdbdata/db/postgresql.auto.conf"
.
.
.
簡易的にEC2の情報を表示するスクリプト
#!/bin/bash
(
if ! type aws > /dev/null 2>&1; then
echo "aws cli is not installed."
exit 1
fi
if ! type jq > /dev/null 2>&1; then
echo "jq is not installed."
exit 1
fi
echo "InstanceId,Name,Status,PublicIP,PrivateIP,InstanceType,AvailabilityZone,LaunchTime"
aws ec2 describe-instances | \
jq -r '.[][].Instances[] | [.InstanceId,
[.Tags[] | select(.Key == "Name").Value][],
.State.Name, .PublicIpAddress,
.PrivateIpAddress,
.InstanceType,
.Placement.AvailabilityZone,
.LaunchTime] |@csv' | \
sed -e 's/,,/,-,/g' -e 's/"//g'
) | column -s, -t
$ aws rds modify-db-cluster --db-cluster-identifier rdsname --master-user-password "12345678"
EC2の設定
インスタンスの設定
ストレージの追加
VolumeType
- 以下の3種類
- IOPS
タイプ | 用途 |
---|---|
汎用SSD | デフォルトのやつ |
Provisioned IOPS (SSD) | 一定以上のIOPSを保証するクリティカルな大規模向けDB |
マグネティック | IOPSは低いが、安価 |
セキュティグループ
- リソース(EC2, ロードバランサー, RDS等)にた対して設定する仮想FW
- inboundとoutboundを制御する
- ステートフルに機能する(インスタンスからリクセストを送信すると、そのリクエストに対するレスポンストラフィックは流入できる)
(参考)ネットワークACL
- サブネットに対して設定、サブネットに含まれるリソース全てに適用される
CloudWatch
メトリクス(Metrics)
- メトリクスは、CloudWatch に発行された時系列のデータポイントのセット
- 監視対象の変数のようなもの
- 例:EC2 CPU使用率はメトリクスの一つ
ネームスペース(Namespaces)
- 複数のメトリクスをまとめたコンテナ
- ネームスペースによってメトリクスは分離される
Log gruop名一覧を取得
$ aws logs describe-log-groups | jq .logGroups[].logGroupName
VPC
設定項目
- 名前タグ
- IPv4 CIDRブロック:VPCで使用するプライベートネットワークのIPv4アドレス範囲
- IPv6 CIDRブロック:VPCで使用するプライベートネットワークのIPv6アドレス範囲
- テナンシー:VPC上のリソースをハードウェア上で実行するかどうか