labunix's blog

labunixのラボUnix

jqとawscliを導入してみる。

■jqとawscliを導入してみる。
 python3.5.3を使うので、異常時にはpython2.7が呼び出されていないか確認する。

$ lsb_release -d
Description:	Debian GNU/Linux 9.5 (stretch)

$ apt-file search /bin/jq
jq: /usr/bin/jq

$ sudo apt-get install -y jq

$ jq --version
jq-1.5-1-a5b5cbe

$ apt-cache search awscli 
awscli - Universal Command Line Environment for AWS

$ sudo apt-get install -y awscli

$ python --version
Python 2.7.13

$ whereis -b python | tr ' ' '\n' | grep bin
/usr/bin/python2.7
/usr/bin/python3.5m-config
/usr/bin/python3.5
/usr/bin/python3.5-config
/usr/bin/python2.6
/usr/bin/python2.7-config
/usr/bin/python
/usr/bin/python3.5m

$ python3.5 --version
Python 3.5.3

$ aws --version
aws-cli/1.11.13 Python/3.5.3 Linux/4.9.0-8-amd64 botocore/1.4.70

■AWSコンソールに接続出来るように設定する。

$ aws configure help | grep -B 1 -A 3 " accesskey"
          $ aws configure
          AWS Access Key ID [None]: accesskey
          AWS Secret Access Key [None]: secretkey
          Default region name [None]: us-west-2
          Default output format [None]:

$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************XXXX shared-credentials-file    
secret_key     ****************ZZZZ shared-credentials-file    
    region                us-east-1      config-file    ~/.aws/config

■awsのサブコマンドのために、TAB補完を有効にする。

$ complete -C '/usr/bin/aws_completer' aws

$ aws [tab]
acm                            deploy                         firehose                       route53domains 
apigateway                     devicefarm                     gamelift                       s3 
application-autoscaling        directconnect                  glacier                        s3api 
autoscaling                    discovery                      iam                            sdb 
budgets                        dms                            importexport                   servicecatalog 
cloudformation                 ds                             inspector                      ses 
cloudfront                     dynamodb                       iot                            sms 
cloudhsm                       dynamodbstreams                iot-data                       snowball 
cloudsearch                    ec2                            kinesis                        sns 
cloudsearchdomain              ecr                            kinesisanalytics               sqs 
cloudtrail                     ecs                            kms                            ssm 
cloudwatch                     efs                            lambda                         storagegateway 
codecommit                     elasticache                    logs                           sts 
codepipeline                   elasticbeanstalk               machinelearning                support 
cognito-identity               elastictranscoder              marketplacecommerceanalytics   swf 
cognito-idp                    elb                            meteringmarketplace            waf 
cognito-sync                   elbv2                          opsworks                       workspaces 
configservice                  emr                            rds                            
configure                      es                             redshift                       
datapipeline                   events                         route53                        

■awsコマンドをプロキシ環境で使う場合は以下の設定を追加。

$ echo "export NO_PROXY=169.254.169.254" | sudo tee -a /etc/profile.d/proxy.sh 
export NO_PROXY=169.254.169.254

$ export NO_PROXY=169.254.169.254
$ echo $NO_PROXY
169.254.169.254

■例えばプロキシログへの通信量を集計してみる。
 UserAgentは空「"-"」になる。

$ sudo awk '(/.amazonaws.com/ && $12 ~ /\042-\042/){a[$7]+=$10}END{for(n in a){print a[n],n}}' /var/log/squid/access.log
3619 mybucket.s3.amazonaws.com:443
5996 events.us-east-1.amazonaws.com:443
38362779 ec2.us-east-1.amazonaws.com:443
1752721 iam.amazonaws.com:443
5902 apigateway.us-east-1.amazonaws.com:443

■リージョンの一覧を取得

$ aws ec2 describe-regions | awk '/RegionName/'
            "RegionName": "ap-south-1"
            "RegionName": "eu-west-3"
            "RegionName": "eu-west-2"
            "RegionName": "eu-west-1"
            "RegionName": "ap-northeast-2"
            "RegionName": "ap-northeast-1"
            "RegionName": "sa-east-1"
            "RegionName": "ca-central-1"
            "RegionName": "ap-southeast-1"
            "RegionName": "ap-southeast-2"
            "RegionName": "eu-central-1"
            "RegionName": "us-east-1"
            "RegionName": "us-east-2"
            "RegionName": "us-west-1"
            "RegionName": "us-west-2"

$ aws ec2 describe-regions | jq -r '.Regions[] | .RegionName'
ap-south-1
eu-west-3
eu-west-2
eu-west-1
ap-northeast-2
ap-northeast-1
sa-east-1
ca-central-1
ap-southeast-1
ap-southeast-2
eu-central-1
us-east-1
us-east-2
us-west-1
us-west-2

■グループ、ユーザのリスト表示
 コンソールから[AdministratorAccess]が許可されているグループに所属するユーザが出来て入ればOK。

$ aws iam list-groups | awk '/Groups/{print "ok"}'
ok

$ aws iam list-users | awk '/Users/{print "ok"}'
ok

$ aws iam list-groups | jq -r '.Groups[] | .CreateDate,.Path'
2018-09-16T13:18:54Z
/

$ aws iam list-users | jq -r '.Users[] | .CreateDate,.Path'
2018-09-16T11:36:09Z
/

■グループに紐付けるポリシーの表示

$ grep output .aws/config 
output = text

$ aws iam list-policies --scope AWS | awk '/AdministratorAccess/{print $2}'
arn:aws:iam::aws:policy/AdministratorAccess

$ grep output .aws/config
output = json

$ aws iam list-policies --scope AWS | jq -r '.Policies[] | select(.PolicyName == "AdministratorAccess") | .Arn'
arn:aws:iam::aws:policy/AdministratorAccess

■Amazon Linux AMIの検索を作成日時とともに一覧してみる。

 Linux AMI の検索
 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/finding-an-ami.html

$ aws ec2 describe-images --owners amazon \
    --filters 'Name=name,Values=amzn-???-hvm-????.??.?.x86_64-gp2' 'Name=state,Values=available' | \
      jq -r '.Images[] | [ .Name , .CreationDate ] | @csv'
"amzn-ami-hvm-2016.03.0.x86_64-gp2","2016-03-16T23:48:08.000Z"
"amzn-ami-hvm-2015.03.1.x86_64-gp2","2015-08-18T18:20:06.000Z"
"amzn-ami-hvm-2015.03.0.x86_64-gp2","2015-03-18T16:29:38.000Z"
"amzn-ami-hvm-2014.09.0.x86_64-gp2","2014-09-18T22:13:28.000Z"
"amzn-ami-hvm-2015.09.1.x86_64-gp2","2015-10-29T18:17:23.000Z"
"amzn-ami-hvm-2016.03.3.x86_64-gp2","2016-06-22T06:10:37.000Z"
"amzn-ami-hvm-2014.09.1.x86_64-gp2","2014-10-08T02:07:39.000Z"
"amzn-ami-hvm-2015.09.2.x86_64-gp2","2016-02-10T23:44:07.000Z"
"amzn-ami-hvm-2016.03.2.x86_64-gp2","2016-06-04T00:21:51.000Z"
"amzn-ami-hvm-2014.03.2.x86_64-gp2","2014-06-13T16:15:39.000Z"
"amzn-ami-hvm-2015.09.0.x86_64-gp2","2015-09-16T17:00:21.000Z"
"amzn-ami-hvm-2014.09.2.x86_64-gp2","2015-01-27T23:24:00.000Z"
"amzn-ami-hvm-2016.03.1.x86_64-gp2","2016-04-30T00:59:44.000Z"

■AWS におけるシステム構築のベストプラクティス

 • スケーラビリティを確保する
 • 環境を自動化する
 • 使い捨て可能なリソースを使用する
 • コンポーネントを疎結合化する
 • サーバーではなくサービスで設計する
 • 適切なデータベースソリューションを選択する
 • 単一障害点をなくす
 • コストを最適化する
 • キャッシュを使用する
 • インフラストラクチャのすべての場所でセキュリティを確保する

■アカウントを作成してコンソールにログインする。

 はじめてのアマゾンクラウド①[Amazon Web Services(AWS)のアカウントを開設する]
 https://www.slideshare.net/kentamagawa/3aws

■以下で料金を確認する。

 AWS 無料利用枠
 https://aws.amazon.com/jp/free/

■firefox+html5(推奨環境)を使用した学習

 ご利用開始のためのリソースセンター
 https://aws.amazon.com/jp/getting-started/

$ w3m -dump https://aws.amazon.com/jp/getting-started/ | \
    awk 'BEGIN{f=0}{if($0 ~ /無料のデジタルト レーニング/){f+=1}else{if(f>0 && f<15 && $0 !~ /━━/){print $0;f+=1}}}'

AWS の基礎を学んだり、専門知識を深めたりする必要がありますか? 無料のデジタルト
レーニングでは、いつでもどこでも、自分のやり方で AWS クラウドのスキルを学習でき
ます。
1. AWS クラウドプラクティショナーの基礎知識
2. AWS Machine Learning サービスの概要
3. AWS 責任共有モデル
4. AWS のコンピューティングサービスの概要
5. Amazon EC2 のご紹介
6. AWS IAM を使用した認証と許可
7. AWS のデータベースサービスの概要
8. AWS の分析サービスの概要
9. AWS のアプリケーションサービスの概要
10. AWS の開発者用ツールサービスの概要

■1. AWS クラウドプラクティショナーの基礎知識

AWS Cloud Practitioner Essentials: はじめに 5 分

AWS Cloud Concepts Essentials 30 分

    クラウドの紹介
    AWS クラウドの紹介

AWS Core Services Essentials 3 時間

    サービスとカテゴリの概要
    AWS グローバルインフラストラクチャの紹介
    Amazon VPC の紹介
    セキュリティグループの紹介
    コンピューティングサービスの紹介
    AWS ストレージサービスの紹介
    AWS データベースソリューションの紹介

AWS Security Essentials 1 時間

    AWS セキュリティの紹介
    AWS の責任共有モデル
    AWS のアクセスコントロールとアクセス管理
    AWS のセキュリティコンプライアンスプログラム
    AWS のセキュリティリソース

AWS Architecting Essentials 45 分

    Well-Architected Framework の紹介
    リファレンスアーキテクチャ: 耐障害性と高可用性
    リファレンスアーキテクチャ: ウェブホスティング

AWS Pricing and Support Essentials 45 分

    料金の基礎
    料金に関する詳細情報
    TCO 計算ツールの概要
    AWS サポートプランの概要

AWS Cloud Practitioner Essentials: 補足資料 1 時間

    AWS Cloud Practitioner Essentials のモジュールで学習した概念の理解を深めるための補足動画

AWS Cloud Practitioner Essentials: コースのまとめ 5