aws cli conference 2016
TRANSCRIPT
-
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