aws cli conference 2016

45
AWS CLI CONFERENCE 2016 Amazon Web Services Japan Partner Solutions Architect Tomoaki Sakatoku Takashi Koyanagawa

Upload: tomoaki-sakatoku

Post on 16-Apr-2017

2.349 views

Category:

Technology


1 download

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