Help us understand the problem. What is going on with this article?

(自分にとって)ちょっと便利なTips(随時追記)

ここにはちょっとした自分用のTipsを記載していきます。
少しでも誰かのお役に立てば幸いです!


  • ntpq -pをchronyで実現したい時
    chronyc sources

  • terraformでどうしてもピンポイントで更新がしたい時(本当は有っちゃいけないけれども!)
    terraform plan -target=resource / terraform apply -target=resource
$ terraform plan -target=aws_instance.test
$ terraform apply -target=aws_instance.test

  • linuxやmacでファイルの文字コード情報を手軽に知りたいとき
    file --mime ファイル名 (--mimeオプションでMIME typeとMIME encodingがわかる)
$ file --mime test.yaml
test.yaml: text/plain; charset=utf-8
$ file --mime test.txt
test.txt: text/plain; charset=us-ascii
$ file --mime test.md
test.md: text/plain; charset=utf-8

  • Powershellコマンドでwgetと同様の内容を実現する
    invoke-webrequest -Uri "ゲットしたいオブジェクトのパス" -outfile 出力するファイル名
    curl "url" -o 出力ファイル と同じですね。
    Powershellからの戻り値はないので、出力ファイルのディレクトリでファイルの存在確認をしましょう。
PS C:\Users\Administrator> echo "list volume" | diskpart

Microsoft DiskPart version 10.0.17763.1

Copyright (C) Microsoft Corporation.
On computer: DAERPAPL1

DISKPART>
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     C   OS           NTFS   Partition     79 GB  Healthy    System
  Volume 1     D   APP          NTFS   Partition    119 GB  Healthy
  Volume 2     W   Work         NTFS   Partition     99 GB  Healthy

DISKPART>
PS C:\Users\Administrator>
  • Powershellコマンドでwgetと同様の内容を実現する
    invoke-webrequest -Uri "ゲットしたいオブジェクトのパス" -outfile 出力するファイル名
    curl "url" -o 出力ファイル と同じですね。
    Powershellからの戻り値はないので、出力ファイルのディレクトリでファイルの存在確認をしましょう。
PS C:\Users\hoge\Desktop\dl_files> invoke-webrequest -Uri "https://aws-quickstart.s3.amazonaws.com/quickstart-sap-s4-hana/submodules/quickstart-aws-vpc/templates/aws-vpc.template" -outfile aws-vpc.template

PS C:\Users\hoge\Desktop\dl_files> pwd

Path
----
C:\Users\hoge\Desktop\dl_files

PS C:\Users\hoge\Desktop\dl_files> get-childitem

    ディレクトリ: C:\Users\hoge\Desktop\dl_files

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2019/12/01     10:17         138098 aws-vpc.template

  • インスタンスにアタッチされたセキュリティグループと"Name"タグをtext形式で取得
    aws ec2 describe-instances --query Reservations[].Instances[*].{SG:SecurityGroups[*].GroupName,NAME:Tags[?Key==Name].Value} --output text
sample
$ aws ec2 describe-instances --query "Reservations[].Instances[*].{SG:SecurityGroups[*].GroupName,NAME:Tags[?Key==`Name`].Value}" --output text
NAME    EC2-01
SG      admin-sg
SG      user-sg
NAME    EC2-02
SG      user-sg
SG      bastion-sg
・  
・  
・  


  • 指定したインスタンスIDの稼働状況及びステータスチェック状態を取得
    aws ec2 describe-instance-status --instance-ids インスタンスID1 インスタンスID2 ... --query "InstanceStatuses[].{InstanceId:InstanceId,Status:InstanceState.Name,SystemStatusChecks:SystemStatus.Details[].Status,InstanceStatusChecks:InstanceStatus.Details[].Status}"
sample
$ aws ec2 describe-instance-status --instance-ids Instance_id1 Instance_id2 --query "InstanceStatuses[].{InstanceId:InstanceId,Status:InstanceState.Name,SystemStatusChecks:SystemStatus.Details[].Status,InstanceStatusChecks:InstanceStatus.Details[].Status}"
[
    {
        "InstanceId": "Instance_id1",
        "Status": "running",
        "InstanceStatusChecks": [
            "passed"
        ],
        "SystemStatusChecks": [
            "passed"
        ]
    },
    {
        "InstanceId": "Instance_id2",
        "Status": "running",
        "InstanceStatusChecks": [
            "passed"
        ],
        "SystemStatusChecks": [
            "passed"
        ]
    }
]

  • サブネットIDを複数指定した形でインスタンスのタグ(Name)とプライベートアドレスを取得
    aws ec2 describe-instances --filters "Name=network-interface.subnet-id,Values=サブネットID1,サブネットID2....." --query 'Reservations[].Instances[*].{IP:PrivateIpAddress,NAME:Tags[?Key==Name].Value}'
sample
$ aws ec2 describe-instances --filters "Name=network-interface.subnet-id,Values=subnet-1,subnet-2,subnet-3,subnet-4" --query 'Reservations[].Instances[*].{IP:PrivateIpAddress,NAME:Tags[?Key==`Name`].Value}'
[
    [
        {
            "IP": "10.0.2.100",
            "NAME": [
                "Instance Name0"
            ]
        }
    ],
    [
        {
            "IP": "10.0.2.109",
            "NAME": [
                "Instance Name1"
            ]
        }
    ],
    [
        {
            "IP": "10.0.4.29",
            "NAME": [
                "Instance Name2"
            ]
        }
    ],
    [
        {
            "IP": "10.0.1.89",
            "NAME": [
                "Instance Name3"
            ]
        }
    ],
    [
        {
            "IP": "10.0.1.248",
            "NAME": [
                "Instance Name4"
            ]
        }
    ],
    [
        {
            "IP": "10.0.3.211",
            "NAME": [
                "Instance Name5"
            ]
        }
    ]
]

  • セキュリティグループへのルール設定一括変更
sample
# for文用のリスト
list='XXX.XXX.XXX.XXX/32
XXX.XXX.XXX.XXX/32
XXX.XXX.XXX.XXX/32
XXX.XXX.XXX.XXX/32
XXX.XXX.XXX.XXX/32
XXX.XXX.XXX.XXX/32'

# セキュリティグループへの許可ルールの追加
for x in $list; 
do echo "==== $x ===="; 
aws ec2 authorize-security-group-ingress --group-id sg-xxxxxx --protocol tcp --port XX --cidr $x; 
echo ; 
done

# セキュリティグループからの許可ルールの削除
for x in $list; 
do echo "==== $x ===="; 
aws ec2 revoke-security-group-ingress --group-id sg-xxxxxx --protocol tcp --port XX --cidr $x; 
echo ; 
done

# まとめてセキュリティグループにルール(説明付き)で登録する場合
# 区切り文字を改行のみに設定
IFS=$'\n' 

# for文用のリスト
list='CidrIp=XXX.XXX.XXX.XXX/32,Description="XXXXXXX"
CidrIp=XXX.XXX.XXX.XXX/32,Description="XXXXXXX"
CidrIp=XXX.XXX.XXX.XXX/32,Description="XXXXXXX"
CidrIp=XXX.XXX.XXX.XXX/32,Description="XXXXXXX"
CidrIp=XXX.XXX.XXX.XXX/32,Description="XXXXXXX"'

# セキュリティグループへの許可ルールの追加(説明付き)
for x in $list; 
do echo "==== $x ===="; 
aws ec2 authorize-security-group-ingress --group-id sg-xxxxxx --ip-permissions IpProtocol=tcp,FromPort=XX,ToPort=XX,IpRanges="[{$x}]" --profile XXXXXX; 
echo ; 
done

  • Amazon Linux 2 の最新AMI取得ワンライナー

    • ebs/gp2混在で一番最新なAMIを取得
      aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn2-ami-hvm-2.0.20*' --query 'Images[].[Name, ImageId]' --output text | sort -nr | head -n 1
    • ebsで一番最新なAMIを取得
      aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn2-ami-hvm-2.0.20*-ebs' --query 'Images[].[Name, ImageId]' --output text | sort -nr | head -n 1
    • gp2で一番最新なAMIを取得
      aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn2-ami-hvm-2.0.20*-gp2' --query 'Images[].[Name, ImageId]' --output text | sort -nr | head -n 1
sample
$ aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn2-am
i-hvm-2.0.20*'  --query 'Images[].[Name, ImageId]' --output text | sort -nr | head -n 1
amzn2-ami-hvm-2.0.20190115-x86_64-gp2   ami-0d7ed3ddb85b521a6

$ aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn2-am
i-hvm-2.0.20*-ebs'  --query 'Images[].[Name, ImageId]' --output text | sort -nr | head -n 1
amzn2-ami-hvm-2.0.20190115-x86_64-ebs   ami-08a596b640f31f62c

$ aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn2-ami-hvm-2.0.20*-gp2'  --query 'Images[].[Name, ImageId]' --output text | sort -nr | head -n 1
amzn2-ami-hvm-2.0.20190115-x86_64-gp2   ami-0d7ed3ddb85b521a6
kwsmkn
kwsmです
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away