Aws-cli: рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдлрд╝рд░ре░ 2016  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: aws/aws-cli

рдореИрдВ рдЕрдкрдиреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рд╕реЗ рдХреНрд▓реА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреНрд╖реЗрддреНрд░ рдХреЗ рднреАрддрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд░реВрдВ, рдЪрд╛рд╣реЗ рдХреЛрдИ рднреА рдХреНрд╖реЗрддреНрд░ рд╣реЛ? рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рднреА ec2 рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдХрд░ рд╕рдХреВрдВ (рдпрд╛рдиреА aws ec2 list-regions рдЬреИрд╕рд╛ рдХреБрдЫ)ред

рдпрд╣ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд┐ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдХреЗ рд▓рд┐рдП, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдг "us-west-2" (рдХрдо рд╕реЗ рдХрдо рдЕрдм рддрдХ) рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдореЗрдВ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реБрдП рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рдЖрджреЗрд╢ рд╣реИ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

Google рд╕реЗ рдпрд╣рд╛рдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ (рдЙрдкрд░реЛрдХреНрдд рдЪрд░реНрдЪрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреЗ рд╕рд╛рде рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

for region in `aws ec2 describe-regions --output text | cut -f3`
do
     echo -e "\nListing Instances in region:'$region'..."
     aws ec2 describe-instances --region $region
done

рд╕рднреА 17 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрдВрд╕реЛрд▓ рдЖрдкрдХреЛ рдХреНрд╖реЗрддреНрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрд╖реЗрддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд░реНрдгрдирд╛рддреНрдордХ рдкрд╛рда рдХреЗ рд╕рд╛рде рдЫреБрдкрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, us-west-2 рдУрд░реЗрдЧрди рдореЗрдВ рд╕реНрдерд┐рдд рдбреЗрдЯрд╛рд╕реЗрдВрдЯрд░ рд╣реИред рдХрдВрд╕реЛрд▓ рдкреЗрдЬ рдХреЗ рдКрдкрд░ рджрд╛рдИрдВ рдУрд░ рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдХреНрд╖реЗрддреНрд░ (рдиреАрдЪреЗ рдЪрд┐рддреНрд░рд┐рдд) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдХреНрд╖реЗрддреНрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, EC2 рдЕрдкрд╡рд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ describe-regions рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕реАрдПрд▓рдЖрдИ рд╕реЗрд╡рд╛ рдПрдкреАрдЖрдИ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рд╣рдо рдмрд╣реБ-рдХреНрд╖реЗрддреНрд░реАрдп рдЦреЛрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╕реЗрд╡рд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕ 3, рдЬреНрдпрд╛рджрд╛рддрд░ рдХреНрд╖реЗрддреНрд░-рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реИ)ред рдЖрдкрдХреЛ рдХрд┐рд╕реА рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХреЛ --region рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдкрдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╖реЗрддреНрд░ рдЖрдкрдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ ( ~/.aws/config UNIX рд╕рд┐рд╕реНрдЯрдо рдкрд░) рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рдЗрд╕реЗ aws configure рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдпрд╛ рдФрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

regions

Google рд╕реЗ рдпрд╣рд╛рдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ (рдЙрдкрд░реЛрдХреНрдд рдЪрд░реНрдЪрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреЗ рд╕рд╛рде рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

for region in `aws ec2 describe-regions --output text | cut -f3`
do
     echo -e "\nListing Instances in region:'$region'..."
     aws ec2 describe-instances --region $region
done

рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬреЗрдПрд╕рдУрдПрди рдХреЛ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрд▓рдЧреНрди рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ-рд╕реЗ-рдмрд┐рдВрджреБ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП jq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

for region in `aws ec2 describe-regions --output text | cut -f3`
do
     echo -e "\nListing Instances in region:'$region'..."
     aws ec2 describe-instances --region $region | jq '.Reservations[] | ( .Instances[] | {state: .State.Name, name: .KeyName, type: .InstanceType, key: .KeyName})'
done

рдЙрджрд╛рд╣рд░рдг рдЖрдЙрдЯрдкреБрдЯ:

Listing Instances in region:'us-west-1'...
{
  "state": "stopped",
  "name": "scanner-1",
  "type": "t2.micro",
  "key": "scan1"
}
{
  "state": "stopped",
  "name": "cors",
  "type": "t2.micro",
  "key": "cors"
}
{
  "state": "stopped",
  "name": "scanner-2",
  "type": "t2.medium",
  "key": "scan2"
}

@рдиреЙрдирдмреАрдЗрдВрдЧ рдирд╛рдЗрд╕! рдпрджрд┐ рдЖрдк рдЕрдХреНрд╕рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рдЙрдкрдирд╛рдо рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд╛рд╡рд░рд╢реЗрд▓ .NET рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдирдХреНрд╕, рдореИрдХ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред

foreach ($Region in (Get-AWSRegion)) {
  Get-EC2Instance -Region $Region.Region
}

рдкрд░рд┐рдгрд╛рдо

GroupNames    : {}
Groups        : {}
Instances     : {asdf}
OwnerId       : 123
RequesterId   : 123
ReservationId : r-asdf

GroupNames    : {}
Groups        : {}
Instances     : {asdf}
OwnerId       : 123
RequesterId   : 123
ReservationId : r-asdf

GroupNames    : {}
Groups        : {}
Instances     : {asdf}
OwnerId       : 123
RequesterId   : 123
ReservationId : r-asdf

рдкреНрд░рд╛рд░реВрдк-рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЖрдЙрдЯрдкреБрдЯ

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдИрд╕реА 2 рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкрд╛рд╡рд░рд╢реЗрд▓ "рд╕реВрдЪреА" рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, Format-Table рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд╛рд░рдгреАрдмрджреНрдз рд╕реНрд╡рд░реВрдкрдг рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

$InstanceList = @()
foreach ($Region in (Get-AWSRegion)) {
  $InstanceList += Get-EC2Instance -Region $Region.Region -ProfileName CIDBTest
}
$InstanceList | Format-Table

рдкрд░рд┐рдгрд╛рдо

GroupNames Groups Instances   OwnerId      RequesterId  ReservationId       RunningInstance
---------- ------ ---------   -------      -----------  -------------       ---------------
{}         {}     {asdf222}   123          123                  r-123               {asdf222}
{}         {}     {asdf222}   123          123                  r-123               {asdf222}
{}         {}     {asdf222}   123          123                  r-123               {asdf222}

рдЖрдк jq рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд --query рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
aws --profile whatever ec2 describe-instances --query 'Reservations[].Instances[].[State.Name,InstanceType]' [ [ "running", "t2.small" ], [ "running", "t2.small" ], [ "running", "m3.medium" ] ]

рдкрдврд╝рддреЗ рд╕рдордп -rr ; рдЗрдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХреНрд╖реЗрддреНрд░: $r; рдкрдврд╝рддреЗ рд╕рдордп рдХрд░реЗрдВ -ri ; рдЗрдХреЛ рдЗрдВрд╕реНрдЯреЗрдВрд╕-рдЖрдИрдбреА рдХрд░реЗрдВ: $i 2>&1 ; рдХрд┐рдпрд╛ рдЧрдпрд╛ < '); рдЧреВрдВрдЬ "рд░реЛрдХреЗрдВ рдХреНрд╖реЗрддреНрд░: $r"; рдХрд┐рдпрд╛ <<(aws ec2 рд╡рд░реНрдгрди-рдХреНрд╖реЗрддреНрд░ --рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ --рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреАрдЖрд░рдбреА|рдХрдЯ-рдПрдл 3)


for region in `aws ec2 describe-regions --output text | cut -f3`
do
     echo -e "\nListing Instances in region:'$region'..."
     aws ec2 describe-instances --region $region | jq '.Reservations[] | ( .Instances[] | {state: .State.Name, name: .KeyName, Tag_Name: .Tags[].Value,type: .InstanceType, key: .KeyName})'
done

рдореИрдВрдиреЗ рдЕрднреА рд▓рд┐рдЦрд╛ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди!
рдпрд╣ рдЫреЛрдЯреА рд▓рд┐рдкрд┐ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
sudo ./aws-x.sh ec2 рд╡рд░реНрдгрди-рдЙрджрд╛рд╣рд░рдг
sudo ./aws-x.sh ec2 рд╡рд░реНрдгрди-рдЙрджрд╛рд╣рд░рдг | grep PrivateDnsName

!/рдмрд┐рди/рдмрд╛рд╢

рдЧреВрдВрдЬ "рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдЙрдкрд▓рдмреНрдз рдХреНрд╖реЗрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛:"
sudo aws ec2 рд╡рд░реНрдгрди-рдХреНрд╖реЗрддреНрд░ --region eu-west-2 |grep RegionName |cut -d '"' -f 4 > /tmp/regions.txt
рдмрд┐рд▓реНрд▓реА /tmp/regions.txt

рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ

рдХреНрд╖реЗрддреНрд░ рдкрдврд╝рддреЗ рд╕рдордп; рдХрд░рдирд╛
рдЧреВрдВрдЬ "рдирд┐рд╖реНрдкрд╛рджрд┐рдд" $@ " рдкрд░ " $ рдХреНрд╖реЗрддреНрд░ ":"
рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ --рдХреНрд╖реЗрддреНрд░ $рдХреНрд╖реЗрддреНрд░ $@
рдХрд┐рдпрд╛ рд╣реБрдЖ

рд╕рд╛рдл - рд╕рдлрд╛рдИ

рдЖрд░рдПрдо /tmp/regions.txt

!/рдмрд┐рди/рдмрд╛рд╢

рдЗрдХреЛ рдЧреНрд░реИрдмрд┐рдВрдЧ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ, рдХреГрдкрдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ..
рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП aws ec2 describe-regions --output text | cut -f3
рдХрд░рдирд╛
aws ec2 рд╡рд░реНрдгрди-рдЙрджрд╛рд╣рд░рдг --рдХреНрд╖реЗрддреНрд░ $рдХреНрд╖реЗрддреНрд░ --рдХреНрд╡реЗрд░реА 'рдЖрд░рдХреНрд╖рдг []ред рдЙрджрд╛рд╣рд░рдг []ред [State.Name,InstanceType,PublicIpAddress,placement.AvailabilityZone]' --рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ
рдХрд┐рдпрд╛ рд╣реБрдЖ

------рдЖрдЙрдЯрдкреБрдЯ----------

./get-instances.sh

рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдорд╛рдорд▓реЗ рдкрдХрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ..

рдЪрд▓ рд░рд╣рд╛ t2.micro 54.93.120.174 eu-central-1b

рдЪрд▓ рд░рд╣рд╛ t2.micro 54.86.91.202 us-east-1d

рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬреЗрдПрд╕рдУрдПрди рдХреЛ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрд▓рдЧреНрди рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ-рд╕реЗ-рдмрд┐рдВрджреБ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП jq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреНрд▓реА "рдХреНрд╡реЗрд░реА" рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ , рдЬреЛ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ рдмрд┐рд▓реНрдб-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж рдУрдмрд┐рдЬрд╛рди! II рдиреЗ рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ jq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░рд╛ рдЬреАрд╡рди рдмрджрд▓ рджрд┐рдпрд╛ :)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреНрд▓реА рдбреЙрдХреНрд╕ рдЕрднреА рднреА рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬреЗрдХреНрдпреВ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ --query рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рддреЛ рдЖрдк jq, рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди JSON рдкреНрд░реЛрд╕реЗрд╕рд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ http://stedolan.github.io/jq/ рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

IMHO, --query рдЕрднреА рднреА рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдХреНрд╡реЗрд░реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ AWS CLI рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк aws cli v. 1.2.0 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ 2013/10/18 рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ CLI рдХрд╛ рдкреНрд░рд╛рдЪреАрди рд╕рдВрд╕реНрдХрд░рдг рди рд╣реЛред

рдпрджрд┐ рдЖрдк --query рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ JMESPath рдХреЛ рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рд╣реЛрдо рдкреЗрдЬ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрд╡ JMESPath рдкрд░реАрдХреНрд╖рдХ рд╣реИ)ред рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдПрдХ рдЬреЗрдВрдбрд░ рдХреЗ рд▓рд╛рдпрдХ рднреА рд╣реИред


рд╕рдорд╛рди рдХреНрд╡реЗрд░реА рдХрд╛ рдирдореВрдирд╛ рддреБрд▓рдирд╛

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрд░рдбреАрдПрд╕ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреНрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ, рдЬреЗрдХреНрдпреВ рдФрд░ рдЬреЗрдПрдордИрдПрд╕рдкреАрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЗрд╕рди рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдорд╛рди рдХреНрд╡реЗрд░реА JMESPath рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкрдардиреАрдп OOTB рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ:

# Using Jquery
aws  rds describe-db-instances --output json | jq -r '.DBInstances[] | "\(.DBInstanceIdentifier) -> \(.DBInstanceStatus) ( \(.DBInstanceClass), \(.Endpoint.Address):\(.Endpoint.Port)  ) "  '

## Outputs
someinstancename -> available ( db.t2.small, xxxxx.rds.amazonaws.com:1234 )
## Show a list of properties for DBInstances which have a status containing the word 'avail' 
aws rds describe-db-instances --output json --query "DBInstances[?contains(DBInstanceStatus, 'avail')].[DBInstanceIdentifier, DBInstanceClass, DBInstanceStatus, Endpoint.[Address, Port]]"

## Outputs
[
    [
        "someinstancename",
        "db.t2.small",
        "available",
        [
            "xxxxx.rds.amazonaws.com",
            1234
        ]
    ]
]

рдпрджрд┐ opt-in-not-required рдЬрдм рдЖрдк aws ec2 describe-regions --output text рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рддреАрд╕рд░рд╛ рдХреЙрд▓рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк cut -f3 рд╕реЗ cut -f4 рддрд░рд╣ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

for region in `aws ec2 describe-regions --output text | cut -f4`
do

done

JMESPath рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрднрд╡рддрдГ рдПрдХ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рддрд░реАрдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

for region in $(aws ec2 describe-regions --query "Regions[*].RegionName" --output text)
do

done

рдЖрдк grep рд╕рд╛рде рдЗрдЪреНрдЫрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, awscli-aliases рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ ~/.aws/cli/alias :

list-instances =
  !f() {
    echo "Filtering by \`$1\`"
    for region in $(aws ec2 describe-regions --query "Regions[*].RegionName" --output text | tr "\t" "\n" | grep "$1")
      do
        echo "\nListing Instances in region:'$region'..."
        aws ec2 describe-instances --region $region \
          --output table \
          --query "Reservations[*].Instances[*].{
                    Instance:InstanceId,
                    Type:InstanceType,
                    AZ:Placement.AvailabilityZone,
                    KeyName:KeyName,
                    Name:Tags[?Key==\`Name\`]|[0].Value,
                    Project:Tags[?Key==\`project\`]|[0].Value,
                    IP:PublicIpAddress,
                    State:State.Name,
                    CPUcores:CpuOptions.CoreCount,
                    CPUThreads:CpuOptions.ThreadsPerCore
                }"
      done
  }; f

рдЙрдкрдпреЛрдЧ:

$ aws list-instances

рдХреНрд╖реЗрддреНрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпреВрдПрд╕ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП us :

$ aws list-instances 'us'

рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП aws ec2 describe-regions --output text | cut -f3
рдХрд░рдирд╛
рдЗрдХреЛ-рдИ "\nрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛:'$рдХреНрд╖реЗрддреНрд░'..."
рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ ec2 рд╡рд░реНрдгрди-рдЙрджрд╛рд╣рд░рдг --region $region | grep рдЪрд▓ рд░рд╣рд╛ рд╣реИ > file.txt
рдмрд┐рд▓реНрд▓реА file.txt | рдбрдмреНрд▓реНрдпреВрд╕реА-рдПрд▓
рдХрд┐рдпрд╛ рд╣реБрдЖ

image

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

maanbsat picture maanbsat  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vadimkim picture vadimkim  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pawelkilian picture pawelkilian  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

brettswift picture brettswift  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

schams-net picture schams-net  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ