Upload
tomoaki-sakatoku
View
2.348
Download
1
Embed Size (px)
Citation preview
AWS CLI CONFERENCE 2016Amazon Web Services JapanPartner Solutions Architect- Tomoaki Sakatoku- Takashi Koyanagawa
sakatoku$ aws-shellaws> aws sa describe-presenter{
Myself: [{
Name: Tomoaki Sakatoku ( ),Role: Partner Solutions Architect ( ),AWS Service SME: [
{AWS Service: Amazon CloudWatch (),AWS Service: AWS CloudTrail (),AWS Service: AWS Config ()
},Book: Amazon Web Services ,URL: http://amzn.to/2a2UTNV,Family: [
{Wife(): 1,Kids(): 2
}]
}]
$
EVERYONE CLI
$ git show 1.0.0tag 1.0.0Tagger: James Saryerwinnie Date: Mon Sep 2 18:38:51 2013 -0700
Tagging 1.0.0 release.
commit 7fbdac0b19ea9dcc0380242068af20ef425ac5c3Merge: 6f76721 469bab6Author: James Saryerwinnie Date: Mon Sep 2 18:38:51 2013 -0700
Merge branch 'release-1.0.0'
* release-1.0.0:Bumping version to 1.0.0
aws configure
aws configure
AWS access key ID [**ABCD]: AWS secret access key [****************EFGH]: Default region name [us-west-2]: Default output format [None]:
$ aws ec2 describe-instances
Service (command)
Operation(Subcommand)
json text
PLACES Seattle WAPLACES Las Vegas NV
table--------------------------| SomeOperationName | +------------------------+ || Places || |+------------+---------+| || City | State || |+------------+---------+| || Seattle | WA || || Las Vegas | NV || |+------------+---------+|
{"Places": [
{ "City": "Seattle", "State": "WA"
}, {
"City": "Las Vegas","State": "NV"
} ]
}
aws configure get region
$ aws configure get regionap-northeast-1
Query Waiters Others
Query
aws ec2 ...
parse params
HTTP request
parse response
display response
format response
Retry Pagination
aws ec2 ...
parse params
HTTP request
parse response
display response
format response
Pagination
parse response
parse response body
apply --query
userid/sakatokuarn:aws:iam::..:user/sakatoku2013-03-09T23:36:32Z
{"Users": [{"Arn":
"arn:aws:iam::...:user/sakatoku","UserId": "userid","CreateDate": "2013-03-09T23:36:32Z","Path": "/","UserName": "sakatoku"
}]
}
{"Users": [{"Arn":
"arn:aws:iam::...:user/sakatoku","UserId": "userid","CreateDate": "2013-03-09T23:36:32Z","Path": "/","UserName": "sakatoku"
}]
}
--query Users[*].[UserName,Path,UserId]
[[
"sakatoku", "/", "id"],
]
--query Users[*].[UserName,Path,UserId]
http://jmespath.org
A Query Language for JSON
Waiters
Amazon EC2 instance state transitionspending
running
shutting-down
terminated
stopping stoppedrebooting Stop
Terminate
Reboot
Terminate
Start
#!/bin/bashinstance_id=$(aws ec2 run-instances --image-id ami-12345
--query Instances[].InstanceId --output text)
instance_state=$(aws ec2 describe-instances --instance-ids $instance_id --query 'Reservations[].Instances[].State.Name')
while [ "$instance_state" != "running" ]do
sleep 1instance_state=$(aws ec2 describe-instances --instance-ids $instance_id
--query 'Reservations[].Instances[].State.Name')done
#!/bin/bashinstance_id=$(aws ec2 run-instances --image-id ami-12345
--query Instances[].InstanceId --output text)
instance_state=$(aws ec2 describe-instances --instance-ids $instance_id --query 'Reservations[].Instances[].State.Name')
while [ "$instance_state" != "running" ]do
sleep 1instance_state=$(aws ec2 describe-instances --instance-ids $instance_id
--query 'Reservations[].Instances[].State.Name')done
#!/bin/bashinstance_id=$(aws ec2 run-instances --image-id ami-12345
--query Instances[].InstanceId --output text)
instance_state=$(aws ec2 describe-instances --instance-ids $instance_id --query 'Reservations[].Instances[].State.Name')
while [ "$instance_state" != "running" ]do
sleep 1instance_state=$(aws ec2 describe-instances --instance-ids $instance_id
--query 'Reservations[].Instances[].State.Name')done
#!/bin/bashinstance_id=$(aws ec2 run-instances --image-id ami-12345
--query Instances[].InstanceId --output text)
instance_state=$(aws ec2 describe-instances --instance-ids $instance_id --query 'Reservations[].Instances[].State.Name')
while [ "$instance_state" != "running" ]do
sleep 1instance_state=$(aws ec2 describe-instances --instance-ids $instance_id
--query 'Reservations[].Instances[].State.Name')done
#!/bin/bashinstance_id=$(aws ec2 run-instances --image-id ami-12345
--query Instances[].InstanceId --output text)
instance_state=$(aws ec2 describe-instances --instance-ids $instance_id --query 'Reservations[].Instances[].State.Name')
while [ "$instance_state" != "running" ]do
sleep 1instance_state=$(aws ec2 describe-instances --instance-ids $instance_id
--query 'Reservations[].Instances[].State.Name')done
ec2-instance-running.sh
#!/bin/bashinstance_id=$(aws ec2 run-instances --image-id ami-12345
--query Instances[].InstanceId --output text)
instance_state=$(aws ec2 describe-instances --instance-ids $instance_id --query 'Reservations[].Instances[].State.Name')
while [ "$instance_state" != "running" ]do
sleep 1instance_state=$(aws ec2 describe-instances --instance-ids $instance_id
--query 'Reservations[].Instances[].State.Name')done
instance_id=$(aws ec2 run-instances --image-id ami-12345 --query Instances[].InstanceId --output text)
aws ec2 wait instance-running --instance-ids $instance_id
describe-instances optionsWaiter NameSubcommand
CloudWatch
CloudWatch Logs
CloudWatch Events
Amazon CloudWacth
Event Source
EC2 Instance states change notification Pending/Running/Shutting down/Stopped/Stopping/Terminated
Schedule AWS API call AWS console sign-in Auto Scaling
Launch Successful/Launch Unsuccessful/Terminate Successful/Terminate Unsuccessful
Target
Lambda Function SNS Topic Kinesis Stream Built-in target
EBS EC2 EC2 EC2
Others Templates aws ec2 run-instances --generate-cli-skeleton
Errors aws ec2 create-tags --tags Key=purpose,Value=dev --
resources "$(instance_ids)" || errexit "" Pararel aws iam list-users --query "Users[].[UserName]" --output
text | xargs -I {} -P 10 aws iam delete-user --user-name "{}"
CLIMy AWS user Experience
koyanagawa$ aws-shellaws> aws sa describe-presenter{
Myself: [{
Name: Takashi Koyanagawa( ),Role: Partner Solutions Architect ( ),AWS Service: AWS IoT,Previse position: [
AWS user,Project Manager/Leader, Infra/system-operation Leader]Favorite region:us-west-2URL: http://www.slideshare.net/AmazonWebServices/dvo312-sony-building-atscale-
services-with-aws-elastic-beanstalk,Family: [
{null
}]
}]
Ninfra/sysopedev N,Stg 1Prod 1Stgsysope
dev dev dev dev
Infra-sysope India 24h/7day
sysopeInstancedev/stg/prod1,000temp1devsysope
tier1
Excel[d/s/p][3][4]daws0001ExcelExcelPuppet
AWS/maintenanceAWSInstance-IDtagmaintenance
describe-xxxxDB(8h3/1day)Instance-ID tag:Servername - IP -EBS
DBOpenDBtagredmine
tier-1
OpenDBAWS priceregion/costCloudwatchDB
EC2
ELB SG
EBS
EIP
price
mainte
AWS/AWS
AWS CloudTrail
AWS CloudTrail
API
AWS
CloudTrailAPI
AWS Config
AWS Config AWS
Am I safe? Where is the evidence? What will this change affect? What has changed? What resources exist?
(ex. 2014-11-05)
AWS Config
OpsJAWS
DoorKeeper https://opsjaws.doorkeeper.jp/
Twitter @opsjaws #opsjaws
UG SaaS
Lets build your CLI program,Its easy and first!!
WE All CLI