Open11

AWS CLI

haseyuyhaseyuy

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
haseyuyhaseyuy

RDS起動

$ aws rds start-db-instance --db-instance-identifier インスタンス名

RDS停止

$ aws rds stop-db-instance --db-instance-identifier インスタンス名
haseyuyhaseyuy

AWS CLI 出力フォーマットの設定

  • 以下の出力形式がある
    • json
    • yaml
    • yaml-stream
    • text
    • table
  • コマンドラインで--outputオプションを使用すれば変更できる
haseyuyhaseyuy

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からDBInstanceStatusavailableものを抽出
  • 抽出した対象のDB_InstanceDBInstanceStatusを表示
フィルター条件
$ 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"
.
.
.
haseyuyhaseyuy

簡易的に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
haseyuyhaseyuy
$ aws rds modify-db-cluster --db-cluster-identifier rdsname --master-user-password "12345678"
haseyuyhaseyuy

EC2の設定

インスタンスの設定

ストレージの追加

VolumeType

  • 以下の3種類
  • IOPS
タイプ 用途
汎用SSD デフォルトのやつ
Provisioned IOPS (SSD) 一定以上のIOPSを保証するクリティカルな大規模向けDB
マグネティック IOPSは低いが、安価

セキュティグループ

  • リソース(EC2, ロードバランサー, RDS等)にた対して設定する仮想FW
  • inboundとoutboundを制御する
  • ステートフルに機能する(インスタンスからリクセストを送信すると、そのリクエストに対するレスポンストラフィックは流入できる)

(参考)ネットワークACL

  • サブネットに対して設定、サブネットに含まれるリソース全てに適用される
haseyuyhaseyuy

CloudWatch

メトリクス(Metrics)

  • メトリクスは、CloudWatch に発行された時系列のデータポイントのセット
  • 監視対象の変数のようなもの
  • 例:EC2 CPU使用率はメトリクスの一つ

ネームスペース(Namespaces)

  • 複数のメトリクスをまとめたコンテナ
  • ネームスペースによってメトリクスは分離される

Log gruop名一覧を取得

$ aws logs describe-log-groups | jq .logGroups[].logGroupName
haseyuyhaseyuy

VPC

設定項目

  • 名前タグ
  • IPv4 CIDRブロック:VPCで使用するプライベートネットワークのIPv4アドレス範囲
  • IPv6 CIDRブロック:VPCで使用するプライベートネットワークのIPv6アドレス範囲
  • テナンシー:VPC上のリソースをハードウェア上で実行するかどうか