SlideShare a Scribd company logo
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
James Saryerwinnie
October 2015
Automating AWS with the AWS CLI
DEV301
AWS Command Line Interface
Unified tool to manage your AWS services
$ git show 1.0.0
tag 1.0.0
Tagger: James Saryerwinnie <js@jamesls.com>
Date: Mon Sep 2 18:38:51 2013 -0700
Tagging 1.0.0 release.
commit 7fbdac0b19ea9dcc0380242068af20ef425ac5c3
Merge: 6f76721 469bab6
Author: James Saryerwinnie <js@jamesls.com>
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
Interactive
Shell scripts#!/bin/bash
import_key_pair() {
echo -n "Would you like to import ~/.ssh/id_rsa.pub? [y/N]: "
read confirmation
if [[ "$confirmation" != "y" ]]
then
return
fi
aws ec2 import-key-pair 
--key-name id_rsa 
--public-key-material file://~/.ssh/id_rsa.pub
}
create_instance_profile() {
echo -n "Would you like to create an IAM instance profile? [y/N]: "
read confirmation
if [[ "$confirmation" != "y" ]]; then
return
fi
aws iam create-role --role-name dev-ec2-instance 
--assume-role-policy-document "$TRUST_POLICY" || errexit "Could not create Role"
# Use a managed policy
policies=$(aws iam list-policies --scope AWS)
admin_policy_arn=$(jp -u 
"Policies[?PolicyName=='AdministratorAccess'].Arn | [0]" <<< "$policies")
aws iam attach-role-policy 
--role-name dev-ec2-instance 
--policy-arn "$admin_policy_arn" || errexit "Could not attach role policy"
# Then we need to create an instance profile from the role.
aws iam create-instance-profile 
--instance-profile-name dev-ec2-instance || 
errexit "Could not create instance profile."
# And add it to the role
aws iam add-role-to-instance-profile 
--role-name dev-ec2-instance 
--instance-profile-name dev-ec2-instance || 
errexit "Could not add role to instance profile."
}
compute_key_fingerprint() {
# Computes the fingerprint of a public SSH key given a private
# RSA key. This can be used to compare against the output given
# from aws ec2 describe-key-pair.
openssl pkey -in ~/.ssh/id_rsa -pubout -outform DER | 
openssl md5 -c | 
cut -d = -f 2 | 
tr -d '[:space:]'
}
do_setup() {
echo "Checking for required resources..."
echo ""
# 1. Check if a security group is found for
# both windows and non-windows tags.
# If not, we'll eventually give the option to
# configure this.
if resource_exists "aws ec2 describe-security-groups 
--filter Name=tag:dev-ec2-instance,Values=non-windows"; then
echo "Security groups exists."
else
echo "Security group not found."
fi
echo ""
# 2. Make sure the keypair is imported.
if [[ ! -f ~/.ssh/id_rsa ]]; then
echo "Missing ~/.ssh/id_rsa key pair."
elif has_new_enough_openssl; then
fingerprint=$(compute_key_fingerprint ~/.ssh/id_rsa)
if resource_exists "aws ec2 describe-key-pairs 
--filter Name=fingerprint,Values=$fingerprint"; then
echo "Key pair exists."
else
echo "~/.ssh/id_rsa key pair does not appear to be imported."
import_key_pair
fi
else
echo "Can't check if SSH key has been imported."
echo "You need at least openssl 1.0.0 that has a "pkey" command."
echo "Please upgrade your version of openssl."
fi
echo ""
# 3. Check that they have an IAM role called dev-ec2-instance.
# There is no server side filter for this like we have with the EC2
# APIs, so we have to manually use a --query option for us.
if resource_exists "aws iam list-instance-profiles" 
"length(InstanceProfiles[?InstanceProfileName=='dev-ec2-instance'])"; then
echo "Instance profile exists."
else
echo "Missing IAM instance profile 'dev-ec2-instance'"
create_instance_profile
fi
echo ""
}
do_setup
aws s3 ls
Application
with an AWS SDK
aws s3 ls
Application
with an AWS SDK
Shell Scripts – what we’ll cover
A good shell script
• < 100 SLOC
• Commands in sequence
• Piping input/output
• Simple domain logic
• Familiar with AWS CLI
• Familiar with bash
• Familiar with AWS
Prerequisites
$ aws ec2 describe-instances --filters Name=architecture,Values=x86_64
$ du $(ls | grep cli) | sort -nr | tail -2
Amazon S3Amazon EC2
Prerequisites
Getting up to speed
• Becoming a Command Line Expert with the AWS CLI
• Advanced Usage of the AWS CLI
• Installation
• Configuration
$
We will be in the terminal…
$
We will be in the terminal…a lot
Common patterns
Main patterns
• Single output to a single command
• Map list output to N AWS CLI commands
• Storing JSON documents and querying later
• Resource exists check
Main patterns
• Single output to a single command
• Map list output to N AWS CLI commands
• Storing JSON documents and querying later
• Resource exists check
Output to a single parameter
Output to a single parameter
$ aws ec2 describe…
{
"Reservations": [
{
"Groups": [
{
"GroupId": "sg-abc",
"GroupName": "Windows"
}
],
"Instances": [
{
"AmiLaunchIndex": 0,
"Architecture": "x86_64",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2015-01-29T21:22:17.000Z",
"DeleteOnTermination": true,
"Status": "attached",
$ aws ec2 run… --foo <here>
Output to a single parameter
aws ec2 create-tags --tags Key=purpose,Value=dev 
--resources $(aws ec2 run-instances 
--image-id ami-12345 
--query Instances[].InstanceId 
--output text)
Output to a single parameter
aws ec2 create-tags --tags Key=purpose,Value=dev 
--resources $(aws ec2 run-instances 
--image-id ami-12345 
--query Instances[].InstanceId 
--output text)
Error handling
Output to a single parameter
instance_ids=$(aws ec2 run-instances 
--image-id ami-12345 
--query Instances[].InstanceId 
--output text) || errexit "Could not run instance"
aws ec2 create-tags 
--tags Key=purpose,Value=dev 
--resources "$(instance_ids)" || errexit "<errmsg>"
Output to a single parameter
instance_ids=$(aws ec2 run-instances 
--image-id ami-12345 
--query Instances[].InstanceId 
--output text) || errexit "Could not run instance"
aws ec2 create-tags 
--tags Key=purpose,Value=dev 
--resources "$(instance_ids)" || errexit "<errmsg>"
Output to a single parameter
instance_ids=$(aws ec2 run-instances 
--image-id ami-12345 
--query Instances[].InstanceId 
--output text) || errexit "Could not run instance"
aws ec2 create-tags 
--tags Key=purpose,Value=dev 
--resources "$(instance_ids)" || errexit "<errmsg>"
Output to a single parameter
• Used to map one part of the output to one part of the input
• Use --query and --output text
• Make sure to handle the error case before using the value
Main Patterns
• Single output to a single command
• Map list output to N AWS CLI commands
• Storing JSON documents and querying later
• Resource exists check
Mapping one output to N AWS calls
Mapping one output to N AWS calls
$ aws iam list…
[
"a",
"b",
”c",
"d",
"e"
]
$ aws iam … --foo <here>
$ aws iam … --foo <here>
$ aws iam … --foo <here>
$ aws iam … --foo <here>
$ aws iam … --foo <here>
Mapping one output to N AWS calls
for name in $(aws iam list-users 
--query "Users[].[UserName]" --output text); do
aws iam delete-user --user-name "$name"
done
Mapping one output to N AWS calls
for name in $(aws iam list-users 
--query "Users[].[UserName]" --output text); do
aws iam delete-user --user-name "$name"
done
User1
User2
User3
User4
User5
Mapping one output to N AWS calls
for name in $(aws iam list-users 
--query "Users[].[UserName]" --output text); do
aws iam delete-user --user-name "$name"
done
Mapping one output to N AWS calls
aws iam list-users --query "Users[].[UserName]" --output text |
xargs -I {} -P 10 aws iam delete-user --user-name "{}"
Mapping one output to N AWS calls
aws iam list-users --query "Users[].[UserName]" --output text |
xargs -I {} -P 10 aws iam delete-user --user-name "{}"
Mapping one output to N AWS calls
aws iam list-users --query "Users[].[UserName]" --output text |
xargs -I {} -P 10 aws iam delete-user --user-name "{}"
Parallel
Mapping one output to N AWS calls
-+= 72730 james -bash
-+- 76343 james xargs -I {} –P 9 aws iam delete-user --user-name {}
|--- 76348 james aws iam delete-user --user-name user1
|--- 76349 james aws iam delete-user --user-name user2
|--- 76350 james aws iam delete-user --user-name user3
|--- 76351 james aws iam delete-user --user-name user4
|--- 76352 james aws iam delete-user --user-name user5
|--- 76353 james aws iam delete-user --user-name user6
|--- 76354 james aws iam delete-user --user-name user7
|--- 76355 james aws iam delete-user --user-name user8
--- 76356 james aws iam delete-user --user-name user9
Mapping one output to N AWS calls
• Use a for loop for functions
• If you’re using xargs, use -I {}
• Use xargs –P N parallel execution
• Use “.[UserName]” instead of “.UserName” to get
newline separated output..
• This works because nothing is written to stdout on error
Demo
Main patterns
 Single output to a single command
 Map list output to N AWS CLI commands
• Storing JSON documents and querying later
• Resource exists check
Saving the entire output for querying later
{
"AmiLaunchIndex": 0,
"Architecture": "x86_64",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2015-01-29T21:22:17.000Z",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-12345"
}
},
{
"DeviceName": "xvdg",
"Ebs": {
"AttachTime": "2015-09-17T19:14:27.000Z",
"DeleteOnTermination": false,
"Status": "attached",
"VolumeId": "vol-12345"
}
}
],
"ClientToken": "12345",
"EbsOptimized": false,
"Hypervisor": "xen",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::12345",
"Id": "12345"
},
"ImageId": "ami-12345",
"InstanceId": "i-12345",
"InstanceType": "m3.large",
"KeyName": "id_rsa",
"LaunchTime": "2015-09-17T17:24:13.000Z",
"Monitoring": {
"State": "disabled"
},
}
instance =
Saving the entire output for querying later
{
"AmiLaunchIndex": 0,
"Architecture": "x86_64",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2015-01-29T21:22:17.000Z",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-12345"
}
},
{
"DeviceName": "xvdg",
"Ebs": {
"AttachTime": "2015-09-17T19:14:27.000Z",
"DeleteOnTermination": false,
"Status": "attached",
"VolumeId": "vol-12345"
}
}
],
"ClientToken": "12345",
"EbsOptimized": false,
"Hypervisor": "xen",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::12345",
"Id": "12345"
},
"ImageId": "ami-12345",
"InstanceId": "i-12345",
"InstanceType": "m3.large",
"KeyName": "id_rsa",
"LaunchTime": "2015-09-17T17:24:13.000Z",
"Monitoring": {
"State": "disabled"
},
}
instance = query $instance 
BlockDeviceMappings[0].VolumeId
Saving the entire output for querying later
{
"AmiLaunchIndex": 0,
"Architecture": "x86_64",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2015-01-29T21:22:17.000Z",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-12345"
}
},
{
"DeviceName": "xvdg",
"Ebs": {
"AttachTime": "2015-09-17T19:14:27.000Z",
"DeleteOnTermination": false,
"Status": "attached",
"VolumeId": "vol-12345"
}
}
],
"ClientToken": "12345",
"EbsOptimized": false,
"Hypervisor": "xen",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::12345",
"Id": "12345"
},
"ImageId": "ami-12345",
"InstanceId": "i-12345",
"InstanceType": "m3.large",
"KeyName": "id_rsa",
"LaunchTime": "2015-09-17T17:24:13.000Z",
"Monitoring": {
"State": "disabled"
},
}
instance =
query $instance ImageId
query $instance 
BlockDeviceMappings[0].VolumeId
Saving the entire output for querying later
{
"AmiLaunchIndex": 0,
"Architecture": "x86_64",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2015-01-29T21:22:17.000Z",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-12345"
}
},
{
"DeviceName": "xvdg",
"Ebs": {
"AttachTime": "2015-09-17T19:14:27.000Z",
"DeleteOnTermination": false,
"Status": "attached",
"VolumeId": "vol-12345"
}
}
],
"ClientToken": "12345",
"EbsOptimized": false,
"Hypervisor": "xen",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::12345",
"Id": "12345"
},
"ImageId": "ami-12345",
"InstanceId": "i-12345",
"InstanceType": "m3.large",
"KeyName": "id_rsa",
"LaunchTime": "2015-09-17T17:24:13.000Z",
"Monitoring": {
"State": "disabled"
},
}
instance =
query $instance InstanceId
query $instance ImageId
query $instance 
BlockDeviceMappings[0].VolumeId
jp – The JMESPath CLI
• Same language as --query
• Cross platform executable
• https://github.com/jmespath/jp
jp – The JMESPath CLI
• Same language as --query
• Cross platform executable
• https://github.com/jmespath/jp
Mac OS X
brew tap jmespath/jmespath
brew install jp
Saving the entire output for querying later
instance=$(aws run-instance --image-id ami-1234 
--query Instances[0])
query() {
jp -u "$2" <<<"$1"
}
instance_id=$(query "$instance" InstanceId)
state_name=$(query "$instance" State.Name)
instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
Saving the entire output for querying later
instance=$(aws run-instance --image-id ami-1234 
--query Instances[0])
query() {
jp -u "$2" <<<"$1"
}
instance_id=$(query "$instance" InstanceId)
state_name=$(query "$instance" State.Name)
instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
instance=
{"InstanceId": ”i-12345", ... }
Saving the entire output for querying later
instance=$(aws run-instance --image-id ami-1234 
--query Instances[0])
query() {
jp -u "$2" <<<"$1"
}
instance_id=$(query "$instance" InstanceId)
state_name=$(query "$instance" State.Name)
instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
Saving the entire output for querying later
instance=$(aws run-instance --image-id ami-1234 
--query Instances[0])
query() {
jp -u "$2" <<<"$1"
}
instance_id=$(query "$instance" InstanceId)
state_name=$(query "$instance" State.Name)
instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
Saving the entire output for querying later
instance=$(aws run-instance --image-id ami-1234 
--query Instances[0])
query() {
jp -u "$2" <<<"$1"
}
instance_id=$(query "$instance" InstanceId)
state_name=$(query "$instance" State.Name)
instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
Saving the entire output for querying later
1. Use JSON output, not text, --output json
2. Store the entire thing as a variable, or write to a temp
file if output size is a concern.
3. Use the “jp” command to filter down results as needed.
Main Patterns
 Single output to a single command
 Map list output to N AWS CLI commands
 Storing JSON documents and querying later
• Resource exists check
resource_exists() {
}
1. Determine command to run with query
2. Run command and check errors
3. Check length of query result
resource_exists() {
local cmd
local num_matches
if [[ -z "$2" ]]; then
cmd="$1 --query length(*[0])"
else
cmd="$1 --query $2"
fi
}
2. Run command and check errors
3. Check length of query result
resource_exists() {
num_matches=$($command)
if [[ "$?" -ne 0 ]]; then
echo "Could not check if resource exists, exiting."
exit 2
fi
}
3. Check length of query result
1. Determine command to run with query
resource_exists() {
if [[ "$num_matches" -gt 0 ]]; then
# RC of 0 mean the resource exists, success.
return 0
else
return 1
fi
}
1. Determine command to run with query
2. Run command and check errors
Usage: Server-side filtering
describe_groups="aws ec2 describe-security-groups"
if resource_exists "$describe_groups 
--filter Name=tag:dev-ec2-instance,Values=linux"; then
echo "Security groups exists."
else
echo "Security group not found."
fi
Usage: Client-side filtering
list_profiles="aws iam list-instance-profiles"
if resource_exists "$list_profiles" 
"InstanceProfiles[?InstanceProfileName=='dev-ec2-instance']"
then
echo "Instance profile exists."
else
echo "Missing IAM instance profile 'dev-ec2-instance'"
create_instance_profile
fi
Resource exists
• Check if a resource exists by filtering down a list and
checking if the length is greater than 0.
• Use server side filtering when possible
• Use JMESPath query for client side filtering
Demo
Common Patterns
 Single output to a single command
 Map list output to N AWS CLI commands
 Storing JSON documents and querying later
 Resource exists check
Deployment tips
# * * * * * command to execute
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 – 6)
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)
Cron
$ whoami
$HOME/.aws/config
$HOME/.aws/credentials
export AWS_CONFIG_FILE
export AWS_SHARED_CREDENTIALS_FILE
$ whoami
$HOME/.aws/config
$HOME/.aws/credentials
export AWS_CONFIG_FILE
export AWS_SHARED_CREDENTIALS_FILE
• Explicitly set AWS_CONFIG_FILE/AWS_SHARED_CREDENTIALS_FILE
• Ensure user running cron job has ~/.aws/config ~/.aws/credentials
aws configure set region 
$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document 
| jp -u 'region')
Configure a region
Summary
• Common patterns
• Shell script examples
• Deployment
• Tools
Remember to complete
your evaluations!
Thank you!
• User guide: http://docs.aws.amazon.com/cli/latest/userguide/
• Reference docs: http://docs.aws.amazon.com/cli/latest/reference/
• JMESPath: http://jmespath.org/
• re:Invent 2014 - https://www.youtube.com/watch?v=vP56l7qThNs
• re:Invent 2013 - https://www.youtube.com/watch?v=qiPt1NoyZm0

More Related Content

What's hot

멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017
멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017
멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
DEV323_Introduction to the AWS CLI
DEV323_Introduction to the AWS CLIDEV323_Introduction to the AWS CLI
DEV323_Introduction to the AWS CLI
Amazon Web Services
 
Introduction to AWS IAM
Introduction to AWS IAMIntroduction to AWS IAM
Introduction to AWS IAM
Knoldus Inc.
 
Identity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS SecurityIdentity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS Security
Amazon Web Services
 
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
Amazon Web Services Korea
 
AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...
AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...
AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...
Amazon Web Services
 
IAM Deep Dive - Custom IAM Policies with Conditions
IAM Deep Dive - Custom IAM Policies with ConditionsIAM Deep Dive - Custom IAM Policies with Conditions
IAM Deep Dive - Custom IAM Policies with Conditions
Bryant Poush
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line Interface
Amazon Web Services
 
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
Amazon Web Services Korea
 
IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...
IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...
IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...
Amazon Web Services Korea
 
Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...
Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...
Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...
Amazon Web Services
 
Azure AD connect- Deep Dive Webinar PPT
Azure AD connect- Deep Dive Webinar PPTAzure AD connect- Deep Dive Webinar PPT
Azure AD connect- Deep Dive Webinar PPT
Radhakrishnan Govindan
 
Introduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best PracticesIntroduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best Practices
Gary Silverman
 
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
Amazon Web Services Korea
 
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018Amazon Web Services Korea
 
AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...
AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...
AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...
Amazon Web Services Korea
 
AWS CloudFormation Masterclass
AWS CloudFormation MasterclassAWS CloudFormation Masterclass
AWS CloudFormation Masterclass
Amazon Web Services
 
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
Amazon Web Services
 
IAM Introduction
IAM IntroductionIAM Introduction
IAM Introduction
Amazon Web Services
 
Amazon EC2 Masterclass
Amazon EC2 MasterclassAmazon EC2 Masterclass
Amazon EC2 Masterclass
Amazon Web Services
 

What's hot (20)

멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017
멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017
멀티 어카운트 환경의 보안과 가시성을 높이기 위한 전략 - AWS Summit Seoul 2017
 
DEV323_Introduction to the AWS CLI
DEV323_Introduction to the AWS CLIDEV323_Introduction to the AWS CLI
DEV323_Introduction to the AWS CLI
 
Introduction to AWS IAM
Introduction to AWS IAMIntroduction to AWS IAM
Introduction to AWS IAM
 
Identity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS SecurityIdentity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS Security
 
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
 
AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...
AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...
AWS Networking – Advanced Concepts and new capabilities | AWS Summit Tel Aviv...
 
IAM Deep Dive - Custom IAM Policies with Conditions
IAM Deep Dive - Custom IAM Policies with ConditionsIAM Deep Dive - Custom IAM Policies with Conditions
IAM Deep Dive - Custom IAM Policies with Conditions
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line Interface
 
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
 
IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...
IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...
IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트, AWS :: AWS Summit S...
 
Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...
Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...
Become an IAM Policy Master in 60 Minutes or Less (SEC316-R1) - AWS reInvent ...
 
Azure AD connect- Deep Dive Webinar PPT
Azure AD connect- Deep Dive Webinar PPTAzure AD connect- Deep Dive Webinar PPT
Azure AD connect- Deep Dive Webinar PPT
 
Introduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best PracticesIntroduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best Practices
 
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
 
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018
 
AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...
AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...
AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 - 정창훈, 당근마켓 / 김대권, ...
 
AWS CloudFormation Masterclass
AWS CloudFormation MasterclassAWS CloudFormation Masterclass
AWS CloudFormation Masterclass
 
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
 
IAM Introduction
IAM IntroductionIAM Introduction
IAM Introduction
 
Amazon EC2 Masterclass
Amazon EC2 MasterclassAmazon EC2 Masterclass
Amazon EC2 Masterclass
 

Viewers also liked

AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
Amazon Web Services
 
AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...
AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...
AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...
Amazon Web Services
 
Licensing Windows Workloads on AWS - AWS Online Tech Talks
Licensing Windows Workloads on AWS - AWS Online Tech TalksLicensing Windows Workloads on AWS - AWS Online Tech Talks
Licensing Windows Workloads on AWS - AWS Online Tech Talks
Amazon Web Services
 
Know Before You Go - AWS Online Tech Talks
Know Before You Go - AWS Online Tech TalksKnow Before You Go - AWS Online Tech Talks
Know Before You Go - AWS Online Tech Talks
Amazon Web Services
 
Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...
Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...
Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...
Amazon Web Services
 
Women in Big Data
Women in Big DataWomen in Big Data
Women in Big Data
Amazon Web Services
 
Disaster Recovery Options with AWS - AWS Online Tech Talks
Disaster Recovery Options with AWS - AWS Online Tech TalksDisaster Recovery Options with AWS - AWS Online Tech Talks
Disaster Recovery Options with AWS - AWS Online Tech Talks
Amazon Web Services
 
Hands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech Talks
Hands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech TalksHands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech Talks
Hands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech Talks
Amazon Web Services
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Amazon Web Services Japan
 
Sentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech Talks
Sentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech TalksSentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech Talks
Sentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech Talks
Amazon Web Services
 
AWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdfAWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdf
Amazon Web Services
 
Building Serverless Websites with Lambda@Edge - AWS Online Tech Talks
Building Serverless Websites with Lambda@Edge - AWS Online Tech TalksBuilding Serverless Websites with Lambda@Edge - AWS Online Tech Talks
Building Serverless Websites with Lambda@Edge - AWS Online Tech Talks
Amazon Web Services
 
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech TalksEssential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Amazon Web Services
 

Viewers also liked (13)

AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
 
AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...
AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...
AWS re:Invent 2016: Develop, Build, Deploy, and Manage Containerized Services...
 
Licensing Windows Workloads on AWS - AWS Online Tech Talks
Licensing Windows Workloads on AWS - AWS Online Tech TalksLicensing Windows Workloads on AWS - AWS Online Tech Talks
Licensing Windows Workloads on AWS - AWS Online Tech Talks
 
Know Before You Go - AWS Online Tech Talks
Know Before You Go - AWS Online Tech TalksKnow Before You Go - AWS Online Tech Talks
Know Before You Go - AWS Online Tech Talks
 
Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...
Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...
Bringing Characters to Life with Amazon Polly Text-to-Speech - AWS Online Tec...
 
Women in Big Data
Women in Big DataWomen in Big Data
Women in Big Data
 
Disaster Recovery Options with AWS - AWS Online Tech Talks
Disaster Recovery Options with AWS - AWS Online Tech TalksDisaster Recovery Options with AWS - AWS Online Tech Talks
Disaster Recovery Options with AWS - AWS Online Tech Talks
 
Hands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech Talks
Hands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech TalksHands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech Talks
Hands on Lab: Deploy .NET Code to AWS from Visual Studio - AWS Online Tech Talks
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
 
Sentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech Talks
Sentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech TalksSentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech Talks
Sentiment Analysis Using Apache MXNet and Gluon - AWS Online Tech Talks
 
AWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdfAWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdf
 
Building Serverless Websites with Lambda@Edge - AWS Online Tech Talks
Building Serverless Websites with Lambda@Edge - AWS Online Tech TalksBuilding Serverless Websites with Lambda@Edge - AWS Online Tech Talks
Building Serverless Websites with Lambda@Edge - AWS Online Tech Talks
 
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech TalksEssential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
 

Similar to (DEV301) Automating AWS with the AWS CLI

대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016
대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016
대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
Amazon Web Services for PHP Developers
Amazon Web Services for PHP DevelopersAmazon Web Services for PHP Developers
Amazon Web Services for PHP Developers
Jeremy Lindblom
 
Masterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIMasterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLI
Danilo Poccia
 
Amazon ECS Deep Dive
Amazon ECS Deep DiveAmazon ECS Deep Dive
Amazon ECS Deep Dive
Amazon Web Services
 
The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...
The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...
The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...
Amazon Web Services
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line Interface
Amazon Web Services
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia
 
Aws cli
Aws cliAws cli
Aws cli
Pham Anh Vu
 
Aws cli
Aws cliAws cli
Aws cli
Anh Vu Pham
 
Immutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsImmutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and Jenkins
Manish Pandit
 
(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014
(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014
(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014
Amazon Web Services
 
Immutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS LambdaImmutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS Lambda
AOE
 
DevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursDevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office Hours
Amazon Web Services
 
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-
sinsoku listy
 
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine YardHow I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
SV Ruby on Rails Meetup
 
AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...
AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...
AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...
QCloudMentor
 
AWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar Series
Amazon Web Services
 
Deep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interfaceDeep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interface
John Varghese
 
Streamline Hadoop DevOps with Apache Ambari
Streamline Hadoop DevOps with Apache AmbariStreamline Hadoop DevOps with Apache Ambari
Streamline Hadoop DevOps with Apache Ambari
Alejandro Fernandez
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line Interface
Amazon Web Services
 

Similar to (DEV301) Automating AWS with the AWS CLI (20)

대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016
대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016
대용량 데이타 쉽고 빠르게 분석하기 :: 김일호 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
Amazon Web Services for PHP Developers
Amazon Web Services for PHP DevelopersAmazon Web Services for PHP Developers
Amazon Web Services for PHP Developers
 
Masterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIMasterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLI
 
Amazon ECS Deep Dive
Amazon ECS Deep DiveAmazon ECS Deep Dive
Amazon ECS Deep Dive
 
The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...
The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...
The Best of Both Worlds: Implementing Hybrid IT with AWS (ENT218) | AWS re:In...
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line Interface
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
 
Aws cli
Aws cliAws cli
Aws cli
 
Aws cli
Aws cliAws cli
Aws cli
 
Immutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsImmutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and Jenkins
 
(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014
(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014
(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014
 
Immutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS LambdaImmutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS Lambda
 
DevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursDevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office Hours
 
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-
 
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine YardHow I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
 
AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...
AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...
AWS Study Group - Chapter 03 - Elasticity and Scalability Concepts [Solution ...
 
AWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar Series
 
Deep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interfaceDeep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interface
 
Streamline Hadoop DevOps with Apache Ambari
Streamline Hadoop DevOps with Apache AmbariStreamline Hadoop DevOps with Apache Ambari
Streamline Hadoop DevOps with Apache Ambari
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line Interface
 

More from Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
Amazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
Amazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
Amazon Web Services
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Amazon Web Services
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
Amazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
Amazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Amazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
Amazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Amazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
Amazon Web Services
 

More from Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 

(DEV301) Automating AWS with the AWS CLI

  • 1. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. James Saryerwinnie October 2015 Automating AWS with the AWS CLI DEV301
  • 2. AWS Command Line Interface Unified tool to manage your AWS services
  • 3. $ git show 1.0.0 tag 1.0.0 Tagger: James Saryerwinnie <js@jamesls.com> Date: Mon Sep 2 18:38:51 2013 -0700 Tagging 1.0.0 release. commit 7fbdac0b19ea9dcc0380242068af20ef425ac5c3 Merge: 6f76721 469bab6 Author: James Saryerwinnie <js@jamesls.com> 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
  • 5. Shell scripts#!/bin/bash import_key_pair() { echo -n "Would you like to import ~/.ssh/id_rsa.pub? [y/N]: " read confirmation if [[ "$confirmation" != "y" ]] then return fi aws ec2 import-key-pair --key-name id_rsa --public-key-material file://~/.ssh/id_rsa.pub } create_instance_profile() { echo -n "Would you like to create an IAM instance profile? [y/N]: " read confirmation if [[ "$confirmation" != "y" ]]; then return fi aws iam create-role --role-name dev-ec2-instance --assume-role-policy-document "$TRUST_POLICY" || errexit "Could not create Role" # Use a managed policy policies=$(aws iam list-policies --scope AWS) admin_policy_arn=$(jp -u "Policies[?PolicyName=='AdministratorAccess'].Arn | [0]" <<< "$policies") aws iam attach-role-policy --role-name dev-ec2-instance --policy-arn "$admin_policy_arn" || errexit "Could not attach role policy" # Then we need to create an instance profile from the role. aws iam create-instance-profile --instance-profile-name dev-ec2-instance || errexit "Could not create instance profile." # And add it to the role aws iam add-role-to-instance-profile --role-name dev-ec2-instance --instance-profile-name dev-ec2-instance || errexit "Could not add role to instance profile." } compute_key_fingerprint() { # Computes the fingerprint of a public SSH key given a private # RSA key. This can be used to compare against the output given # from aws ec2 describe-key-pair. openssl pkey -in ~/.ssh/id_rsa -pubout -outform DER | openssl md5 -c | cut -d = -f 2 | tr -d '[:space:]' } do_setup() { echo "Checking for required resources..." echo "" # 1. Check if a security group is found for # both windows and non-windows tags. # If not, we'll eventually give the option to # configure this. if resource_exists "aws ec2 describe-security-groups --filter Name=tag:dev-ec2-instance,Values=non-windows"; then echo "Security groups exists." else echo "Security group not found." fi echo "" # 2. Make sure the keypair is imported. if [[ ! -f ~/.ssh/id_rsa ]]; then echo "Missing ~/.ssh/id_rsa key pair." elif has_new_enough_openssl; then fingerprint=$(compute_key_fingerprint ~/.ssh/id_rsa) if resource_exists "aws ec2 describe-key-pairs --filter Name=fingerprint,Values=$fingerprint"; then echo "Key pair exists." else echo "~/.ssh/id_rsa key pair does not appear to be imported." import_key_pair fi else echo "Can't check if SSH key has been imported." echo "You need at least openssl 1.0.0 that has a "pkey" command." echo "Please upgrade your version of openssl." fi echo "" # 3. Check that they have an IAM role called dev-ec2-instance. # There is no server side filter for this like we have with the EC2 # APIs, so we have to manually use a --query option for us. if resource_exists "aws iam list-instance-profiles" "length(InstanceProfiles[?InstanceProfileName=='dev-ec2-instance'])"; then echo "Instance profile exists." else echo "Missing IAM instance profile 'dev-ec2-instance'" create_instance_profile fi echo "" } do_setup
  • 7. aws s3 ls Application with an AWS SDK Shell Scripts – what we’ll cover
  • 8. A good shell script • < 100 SLOC • Commands in sequence • Piping input/output • Simple domain logic
  • 9. • Familiar with AWS CLI • Familiar with bash • Familiar with AWS Prerequisites
  • 10. $ aws ec2 describe-instances --filters Name=architecture,Values=x86_64 $ du $(ls | grep cli) | sort -nr | tail -2 Amazon S3Amazon EC2 Prerequisites
  • 11. Getting up to speed • Becoming a Command Line Expert with the AWS CLI • Advanced Usage of the AWS CLI • Installation • Configuration
  • 12. $ We will be in the terminal…
  • 13. $ We will be in the terminal…a lot
  • 15. Main patterns • Single output to a single command • Map list output to N AWS CLI commands • Storing JSON documents and querying later • Resource exists check
  • 16. Main patterns • Single output to a single command • Map list output to N AWS CLI commands • Storing JSON documents and querying later • Resource exists check
  • 17. Output to a single parameter
  • 18. Output to a single parameter $ aws ec2 describe… { "Reservations": [ { "Groups": [ { "GroupId": "sg-abc", "GroupName": "Windows" } ], "Instances": [ { "AmiLaunchIndex": 0, "Architecture": "x86_64", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "2015-01-29T21:22:17.000Z", "DeleteOnTermination": true, "Status": "attached", $ aws ec2 run… --foo <here>
  • 19. Output to a single parameter aws ec2 create-tags --tags Key=purpose,Value=dev --resources $(aws ec2 run-instances --image-id ami-12345 --query Instances[].InstanceId --output text)
  • 20. Output to a single parameter aws ec2 create-tags --tags Key=purpose,Value=dev --resources $(aws ec2 run-instances --image-id ami-12345 --query Instances[].InstanceId --output text) Error handling
  • 21. Output to a single parameter instance_ids=$(aws ec2 run-instances --image-id ami-12345 --query Instances[].InstanceId --output text) || errexit "Could not run instance" aws ec2 create-tags --tags Key=purpose,Value=dev --resources "$(instance_ids)" || errexit "<errmsg>"
  • 22. Output to a single parameter instance_ids=$(aws ec2 run-instances --image-id ami-12345 --query Instances[].InstanceId --output text) || errexit "Could not run instance" aws ec2 create-tags --tags Key=purpose,Value=dev --resources "$(instance_ids)" || errexit "<errmsg>"
  • 23. Output to a single parameter instance_ids=$(aws ec2 run-instances --image-id ami-12345 --query Instances[].InstanceId --output text) || errexit "Could not run instance" aws ec2 create-tags --tags Key=purpose,Value=dev --resources "$(instance_ids)" || errexit "<errmsg>"
  • 24. Output to a single parameter • Used to map one part of the output to one part of the input • Use --query and --output text • Make sure to handle the error case before using the value
  • 25. Main Patterns • Single output to a single command • Map list output to N AWS CLI commands • Storing JSON documents and querying later • Resource exists check
  • 26. Mapping one output to N AWS calls
  • 27. Mapping one output to N AWS calls $ aws iam list… [ "a", "b", ”c", "d", "e" ] $ aws iam … --foo <here> $ aws iam … --foo <here> $ aws iam … --foo <here> $ aws iam … --foo <here> $ aws iam … --foo <here>
  • 28. Mapping one output to N AWS calls for name in $(aws iam list-users --query "Users[].[UserName]" --output text); do aws iam delete-user --user-name "$name" done
  • 29. Mapping one output to N AWS calls for name in $(aws iam list-users --query "Users[].[UserName]" --output text); do aws iam delete-user --user-name "$name" done User1 User2 User3 User4 User5
  • 30. Mapping one output to N AWS calls for name in $(aws iam list-users --query "Users[].[UserName]" --output text); do aws iam delete-user --user-name "$name" done
  • 31. Mapping one output to N AWS calls aws iam list-users --query "Users[].[UserName]" --output text | xargs -I {} -P 10 aws iam delete-user --user-name "{}"
  • 32. Mapping one output to N AWS calls aws iam list-users --query "Users[].[UserName]" --output text | xargs -I {} -P 10 aws iam delete-user --user-name "{}"
  • 33. Mapping one output to N AWS calls aws iam list-users --query "Users[].[UserName]" --output text | xargs -I {} -P 10 aws iam delete-user --user-name "{}" Parallel
  • 34. Mapping one output to N AWS calls -+= 72730 james -bash -+- 76343 james xargs -I {} –P 9 aws iam delete-user --user-name {} |--- 76348 james aws iam delete-user --user-name user1 |--- 76349 james aws iam delete-user --user-name user2 |--- 76350 james aws iam delete-user --user-name user3 |--- 76351 james aws iam delete-user --user-name user4 |--- 76352 james aws iam delete-user --user-name user5 |--- 76353 james aws iam delete-user --user-name user6 |--- 76354 james aws iam delete-user --user-name user7 |--- 76355 james aws iam delete-user --user-name user8 --- 76356 james aws iam delete-user --user-name user9
  • 35. Mapping one output to N AWS calls • Use a for loop for functions • If you’re using xargs, use -I {} • Use xargs –P N parallel execution • Use “.[UserName]” instead of “.UserName” to get newline separated output.. • This works because nothing is written to stdout on error
  • 36. Demo
  • 37. Main patterns  Single output to a single command  Map list output to N AWS CLI commands • Storing JSON documents and querying later • Resource exists check
  • 38. Saving the entire output for querying later { "AmiLaunchIndex": 0, "Architecture": "x86_64", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "2015-01-29T21:22:17.000Z", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-12345" } }, { "DeviceName": "xvdg", "Ebs": { "AttachTime": "2015-09-17T19:14:27.000Z", "DeleteOnTermination": false, "Status": "attached", "VolumeId": "vol-12345" } } ], "ClientToken": "12345", "EbsOptimized": false, "Hypervisor": "xen", "IamInstanceProfile": { "Arn": "arn:aws:iam::12345", "Id": "12345" }, "ImageId": "ami-12345", "InstanceId": "i-12345", "InstanceType": "m3.large", "KeyName": "id_rsa", "LaunchTime": "2015-09-17T17:24:13.000Z", "Monitoring": { "State": "disabled" }, } instance =
  • 39. Saving the entire output for querying later { "AmiLaunchIndex": 0, "Architecture": "x86_64", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "2015-01-29T21:22:17.000Z", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-12345" } }, { "DeviceName": "xvdg", "Ebs": { "AttachTime": "2015-09-17T19:14:27.000Z", "DeleteOnTermination": false, "Status": "attached", "VolumeId": "vol-12345" } } ], "ClientToken": "12345", "EbsOptimized": false, "Hypervisor": "xen", "IamInstanceProfile": { "Arn": "arn:aws:iam::12345", "Id": "12345" }, "ImageId": "ami-12345", "InstanceId": "i-12345", "InstanceType": "m3.large", "KeyName": "id_rsa", "LaunchTime": "2015-09-17T17:24:13.000Z", "Monitoring": { "State": "disabled" }, } instance = query $instance BlockDeviceMappings[0].VolumeId
  • 40. Saving the entire output for querying later { "AmiLaunchIndex": 0, "Architecture": "x86_64", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "2015-01-29T21:22:17.000Z", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-12345" } }, { "DeviceName": "xvdg", "Ebs": { "AttachTime": "2015-09-17T19:14:27.000Z", "DeleteOnTermination": false, "Status": "attached", "VolumeId": "vol-12345" } } ], "ClientToken": "12345", "EbsOptimized": false, "Hypervisor": "xen", "IamInstanceProfile": { "Arn": "arn:aws:iam::12345", "Id": "12345" }, "ImageId": "ami-12345", "InstanceId": "i-12345", "InstanceType": "m3.large", "KeyName": "id_rsa", "LaunchTime": "2015-09-17T17:24:13.000Z", "Monitoring": { "State": "disabled" }, } instance = query $instance ImageId query $instance BlockDeviceMappings[0].VolumeId
  • 41. Saving the entire output for querying later { "AmiLaunchIndex": 0, "Architecture": "x86_64", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "2015-01-29T21:22:17.000Z", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-12345" } }, { "DeviceName": "xvdg", "Ebs": { "AttachTime": "2015-09-17T19:14:27.000Z", "DeleteOnTermination": false, "Status": "attached", "VolumeId": "vol-12345" } } ], "ClientToken": "12345", "EbsOptimized": false, "Hypervisor": "xen", "IamInstanceProfile": { "Arn": "arn:aws:iam::12345", "Id": "12345" }, "ImageId": "ami-12345", "InstanceId": "i-12345", "InstanceType": "m3.large", "KeyName": "id_rsa", "LaunchTime": "2015-09-17T17:24:13.000Z", "Monitoring": { "State": "disabled" }, } instance = query $instance InstanceId query $instance ImageId query $instance BlockDeviceMappings[0].VolumeId
  • 42. jp – The JMESPath CLI • Same language as --query • Cross platform executable • https://github.com/jmespath/jp
  • 43. jp – The JMESPath CLI • Same language as --query • Cross platform executable • https://github.com/jmespath/jp Mac OS X brew tap jmespath/jmespath brew install jp
  • 44. Saving the entire output for querying later instance=$(aws run-instance --image-id ami-1234 --query Instances[0]) query() { jp -u "$2" <<<"$1" } instance_id=$(query "$instance" InstanceId) state_name=$(query "$instance" State.Name) instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
  • 45. Saving the entire output for querying later instance=$(aws run-instance --image-id ami-1234 --query Instances[0]) query() { jp -u "$2" <<<"$1" } instance_id=$(query "$instance" InstanceId) state_name=$(query "$instance" State.Name) instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]") instance= {"InstanceId": ”i-12345", ... }
  • 46. Saving the entire output for querying later instance=$(aws run-instance --image-id ami-1234 --query Instances[0]) query() { jp -u "$2" <<<"$1" } instance_id=$(query "$instance" InstanceId) state_name=$(query "$instance" State.Name) instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
  • 47. Saving the entire output for querying later instance=$(aws run-instance --image-id ami-1234 --query Instances[0]) query() { jp -u "$2" <<<"$1" } instance_id=$(query "$instance" InstanceId) state_name=$(query "$instance" State.Name) instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
  • 48. Saving the entire output for querying later instance=$(aws run-instance --image-id ami-1234 --query Instances[0]) query() { jp -u "$2" <<<"$1" } instance_id=$(query "$instance" InstanceId) state_name=$(query "$instance" State.Name) instance_name=$(query "$instance" "Tags[?Key=='Name'].Value | [0]")
  • 49. Saving the entire output for querying later 1. Use JSON output, not text, --output json 2. Store the entire thing as a variable, or write to a temp file if output size is a concern. 3. Use the “jp” command to filter down results as needed.
  • 50. Main Patterns  Single output to a single command  Map list output to N AWS CLI commands  Storing JSON documents and querying later • Resource exists check
  • 51. resource_exists() { } 1. Determine command to run with query 2. Run command and check errors 3. Check length of query result
  • 52. resource_exists() { local cmd local num_matches if [[ -z "$2" ]]; then cmd="$1 --query length(*[0])" else cmd="$1 --query $2" fi } 2. Run command and check errors 3. Check length of query result
  • 53. resource_exists() { num_matches=$($command) if [[ "$?" -ne 0 ]]; then echo "Could not check if resource exists, exiting." exit 2 fi } 3. Check length of query result 1. Determine command to run with query
  • 54. resource_exists() { if [[ "$num_matches" -gt 0 ]]; then # RC of 0 mean the resource exists, success. return 0 else return 1 fi } 1. Determine command to run with query 2. Run command and check errors
  • 55. Usage: Server-side filtering describe_groups="aws ec2 describe-security-groups" if resource_exists "$describe_groups --filter Name=tag:dev-ec2-instance,Values=linux"; then echo "Security groups exists." else echo "Security group not found." fi
  • 56. Usage: Client-side filtering list_profiles="aws iam list-instance-profiles" if resource_exists "$list_profiles" "InstanceProfiles[?InstanceProfileName=='dev-ec2-instance']" then echo "Instance profile exists." else echo "Missing IAM instance profile 'dev-ec2-instance'" create_instance_profile fi
  • 57. Resource exists • Check if a resource exists by filtering down a list and checking if the length is greater than 0. • Use server side filtering when possible • Use JMESPath query for client side filtering
  • 58. Demo
  • 59. Common Patterns  Single output to a single command  Map list output to N AWS CLI commands  Storing JSON documents and querying later  Resource exists check
  • 61. # * * * * * command to execute # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ └───── day of week (0 – 6) # │ │ │ └────────── month (1 - 12) # │ │ └─────────────── day of month (1 - 31) # │ └──────────────────── hour (0 - 23) # └───────────────────────── min (0 - 59) Cron
  • 63. $ whoami $HOME/.aws/config $HOME/.aws/credentials export AWS_CONFIG_FILE export AWS_SHARED_CREDENTIALS_FILE • Explicitly set AWS_CONFIG_FILE/AWS_SHARED_CREDENTIALS_FILE • Ensure user running cron job has ~/.aws/config ~/.aws/credentials
  • 64. aws configure set region $(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jp -u 'region') Configure a region
  • 65. Summary • Common patterns • Shell script examples • Deployment • Tools
  • 67. Thank you! • User guide: http://docs.aws.amazon.com/cli/latest/userguide/ • Reference docs: http://docs.aws.amazon.com/cli/latest/reference/ • JMESPath: http://jmespath.org/ • re:Invent 2014 - https://www.youtube.com/watch?v=vP56l7qThNs • re:Invent 2013 - https://www.youtube.com/watch?v=qiPt1NoyZm0