雑記
最終出社!
ALBAWSAWS BatchAWS Certificate ManagerAWS CodebuildAWS CodepipelineAWS ECRAWS ECSAWS LambdaCloudFrontCloudSearchCloudWatchCloudWatch LogsData pipelineDynamoDBEC2ElastiCacheIAMKinesisRDS Aurora For MySQLRoute 53S3SQSVPC

今日11/9が現職での最終出社でした。
12/1まで在職となります。

  • AWSでインフラ構築
  • Docker+PHPでAPI開発
  • Swiftでちょっとアプリの機能を実装

AWSだけなら、これだけ使いました。
職務経歴書に載せてるから、まあ大丈夫でしょう。

  • EC2
  • S3
  • RDS Aurora For MySQL
  • ElastiCache
  • IAM
  • ALB
  • VPC
  • AWS Lambda
  • CloudWatch
  • CloudWatch Logs
  • CloudFront
  • CloudSearch
  • AWS Certificate Manager
  • SQS
  • Kinesis
  • Route 53
  • AWS Codebuild
  • AWS Codepipeline
  • AWS ECS
  • AWS ECR
  • AWS Batch
  • DynamoDB
  • Data pipeline

まだ、あったかどうかは思い出せないです。(汗)

トータルで7ヶ月でしたが、次に向かいます!!!

AWS
EC2(Amazon Linux)にJMeterをセットアップする方法
AWSAmazon LinuxEC2JMeter

はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
業務で、EC2(Amazon Linux)にJMeterをインストールしたのでその方法をご紹介します。

openjdkのインストールをします

[root@ip-10-0-0-98 ~]# yum -y install java-1.8.0-openjdk.x86_64

JMeterのセットアップをします

http://jmeter.apache.org/
にアクセスしまして
http://jmeter.apache.org/download_jmeter.cgi
よりダウンロードしてセットアップします。

[root@ip-10-0-0-98 ~]$ cd /opt
[root@ip-10-0-0-98 opt]$ curl -O http://ftp.jaist.ac.jp/pub/apache/jmeter/binaries/apache-jmeter-2.13.tgz
[root@ip-10-0-0-98 opt]$ tar vxzf apache-jmeter-2.13.tgz
[root@ip-10-0-0-98 opt]$ mv apache-jmeter-2.13 apache-jmeter

JMeterのパスを通します

[root@ip-10-0-0-98 ~]# echo 'export PATH=$PATH:/opt/apache-jmeter/bin/' >> /etc/profile.d/jmeter.sh
[root@ip-10-0-0-98 ~]# cat /etc/profile.d/jmeter.sh
export PATH=$PATH:/opt/apache-jmeter/bin/
[root@ip-10-0-0-98 ~]# source /etc/profile.d/jmeter.sh

サンプルの実行をしてみます

[root@ip-10-0-0-98 ~]# jmeter -n -t /opt/apache-jmeter/bin/examples/CSVSample.jmx -l /opt/apache-jmeter/bin/examples/CSVSample.jtl
Creating summariser <summary>
Created the tree successfully using /opt/apache-jmeter/bin/examples/CSVSample.jmx
Starting the test @ Sun Apr 12 01:50:42 UTC 2015 (1428803442571)
Waiting for possible shutdown message on port 4445
summary =     12 in   3.2s =    3.7/s Avg:   252 Min:   147 Max:   336 Err:     0 (0.00%)
Tidying up ...    @ Sun Apr 12 01:50:45 UTC 2015 (1428803445895)
... end of run
[root@ip-10-0-0-98 ~]# jmeter -n -t /opt/apache-jmeter/bin/examples/PerformanceTestPlanMemoryThread.jmx
Creating summariser <summary>
Created the tree successfully using /opt/apache-jmeter/bin/examples/PerformanceTestPlanMemoryThread.jmx
Starting the test @ Sun Apr 12 02:24:55 UTC 2015 (1428805495733)
Waiting for possible shutdown message on port 4445
summary +      2 in     7s =    0.3/s Avg:    25 Min:     1 Max:    49 Err:     2 (100.00%) Active: 1 Started: 1 Finished: 0
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     12 in    37s =    0.3/s Avg:     4 Min:     0 Max:    49 Err:    12 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     1 Min:     0 Max:     4 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     22 in    67s =    0.3/s Avg:     2 Min:     0 Max:    49 Err:    22 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     32 in    97s =    0.3/s Avg:     2 Min:     0 Max:    49 Err:    32 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     42 in   127s =    0.3/s Avg:     1 Min:     0 Max:    49 Err:    42 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     52 in   157s =    0.3/s Avg:     1 Min:     0 Max:    49 Err:    52 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     62 in   187s =    0.3/s Avg:     1 Min:     0 Max:    49 Err:    62 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     72 in   217s =    0.3/s Avg:     1 Min:     0 Max:    49 Err:    72 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     82 in   247s =    0.3/s Avg:     1 Min:     0 Max:    49 Err:    82 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =     92 in   277s =    0.3/s Avg:     1 Min:     0 Max:    49 Err:    92 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     0 Min:     0 Max:     1 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =    102 in   307s =    0.3/s Avg:     0 Min:     0 Max:    49 Err:   102 (100.00%)
summary +     10 in    30s =    0.3/s Avg:     1 Min:     0 Max:     6 Err:    10 (100.00%) Active: 1 Started: 1 Finished: 0
summary =    112 in   337s =    0.3/s Avg:     1 Min:     0 Max:    49 Err:   112 (100.00%)
summary +      9 in    24s =    0.4/s Avg: 40098 Min:     0 Max: 360877 Err:     9 (100.00%) Active: 0 Started: 1 Finished: 1
summary =    121 in   361s =    0.3/s Avg:  2983 Min:     0 Max: 360877 Err:   121 (100.00%)
Tidying up ...    @ Sun Apr 12 02:30:56 UTC 2015 (1428805856717)
... end of run

まとめ

今回のセットアップはここまでです。
jmxはGUIで作ったほうが良さそうですね。
前は、windows3台とmac1台からjmeterを回した記憶があります。懐かしい。

参考資料・リンク

http://jmeter.apache.org/

AWS
EC2の一覧表を作るAWS CLI秘伝のコマンド
AWSAWS CLIEC2jq

はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
業務でよくAWS CLIを使用しております。
AWS CLIとjqを組み合わせてEC2の一覧表を作るAWS CLI秘伝のコマンドを紹介します。

EC2の一覧表を作るAWS CLI秘伝のコマンド

[f_prg@Documents] $ aws ec2 describe-instances \
--profile=default \
--region=us-east-1\
|jq -r '.Reservations[].Instances[]
|{PublicDnsName, PublicIpAddress, PrivateIpAddress, 
 InstanceType, AZ: .Placement.AvailabilityZone, 
 State: .State.Name, KeyName, 
 TagName: .Tags|map(select(.Key == "Name"))[0]|.Value, 
 EC2Role: .IamInstanceProfile.Arn}
|@text "|\(.TagName)|\(.InstanceType)|
\(.AZ)|\(.PublicDnsName)|
\(.PublicIpAddress)|\(.PrivateIpAddress)|\(.EC2Role)|"'
|my-blog - nodejs-app1|t2.micro|us-east-1a|ec2-XX-XX-XX-XX.compute-1.amazonaws.com|YY.YY.YY.YY|ZZ.ZZ.ZZ.ZZ|arn:aws:iam::ZZZZZZZ:instance-profile/hogehoge-role|

ちょっと見やすくするため改行しております。
jqのところはバックスラッシュはいらないようですね。
結果ですがマスクが多くてすいません。

まとめ

|Name|InstanceType|AZ|PublicDnsName|PublicIpAddress/ElasticIP|PrivateIpAddress|EC2Role|
|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|

と組み合わせますと

Name InstanceType AZ PublicDnsName PublicIpAddress/ElasticIP PrivateIpAddress EC2Role
my-blog - nodejs-app1 t2.micro us-east-1a ec2-XX-XX-XX-XX.compute-1.amazonaws.com YY.YY.YY.YY ZZ.ZZ.ZZ.ZZ arn:aws:iam::ZZZZZZZ:instance-profile/hogehoge-role

となります。

補足、おまけ

JAWS-UG CLI専門支部には、まだ行けてないので頑張っていけるようにしたい。

参考資料・リンク

http://stedolan.github.io/jq/
http://stedolan.github.io/jq/manual/

AWS
EC2インスタンスからメール送信のための準備
AWSAWS申請EC2メール送信

はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
業務上において、EC2インスタンスからメール送信をしたいとお客様よりご要望を受けることが多々あります。
SES使うということも考えますが、EC2にPostfixにてメール送信サーバー構築をすることもあります。
EC2からメール送信については制限があり、申請をする必要があります。

EC2からのメール送信について

AWSのスライドがありますので、そちらで紹介いたします。

http://www.slideshare.net/AmazonWebServicesJapan/aws-30934799

申請について

ログインした状態で下記のURLで申請をします。
https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

申請方法

申請の方法についてもスライドがありましたので、そちらも紹介します。

手順は4つになります。

  1. Amazon EC2 Eメール上限緩和申請手順
  2. 逆引き(rDNS)設定申請手順
  3. Amazon EC2 Eメール上限緩和 + 逆引き(rDNS)設定申請手順
  4. 逆引き(rDNS)設定解除申請手順

手順を区分けします。

申請

  1. Amazon EC2 Eメール上限緩和申請手順
  2. 逆引き(rDNS)設定申請手順
  3. Amazon EC2 Eメール上限緩和 + 逆引き(rDNS)設定申請手順

解除

  1. 逆引き(rDNS)設定解除申請手順

まとめ

申請は、3のAmazon EC2 Eメール上限緩和 + 逆引き(rDNS)設定申請手順だけではありません。
1と2の2回でもよいということです。解除もできます。
間違って申請した場合も、訂正して正確な情報をAWSに申請しましょう。
そして、使わなくなった場合も4の解除申請を忘れずに。

AWS
EC2の一覧表を作るAWS CLI秘伝のコマンド
AWSAWS CLIEC2jq

はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
業務でよくAWS CLIを使用しております。
AWS CLIとjqを組み合わせてEC2の一覧表を作るAWS CLI秘伝のコマンドを紹介します。

EC2の一覧表を作るAWS CLI秘伝のコマンド

[f_prg@Documents] $ aws ec2 describe-instances \
--profile=default \
--region=us-east-1\
|jq -r '.Reservations[].Instances[]
|{PublicDnsName, PublicIpAddress, PrivateIpAddress, 
 InstanceType, AZ: .Placement.AvailabilityZone, 
 State: .State.Name, KeyName, 
 TagName: .Tags|map(select(.Key == "Name"))[0]|.Value, 
 EC2Role: .IamInstanceProfile.Arn}
|@text "|\(.TagName)|\(.InstanceType)|
\(.AZ)|\(.PublicDnsName)|
\(.PublicIpAddress)|\(.PrivateIpAddress)|\(.EC2Role)|"'
|my-blog - nodejs-app1|t2.micro|us-east-1a|ec2-XX-XX-XX-XX.compute-1.amazonaws.com|YY.YY.YY.YY|ZZ.ZZ.ZZ.ZZ|arn:aws:iam::ZZZZZZZ:instance-profile/hogehoge-role|

ちょっと見やすくするため改行しております。
jqのところはバックスラッシュはいらないようですね。
結果ですがマスクが多くてすいません。

まとめ

|Name|InstanceType|AZ|PublicDnsName|PublicIpAddress/ElasticIP|PrivateIpAddress|EC2Role|
|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|

と組み合わせますと

Name InstanceType AZ PublicDnsName PublicIpAddress/ElasticIP PrivateIpAddress EC2Role
my-blog - nodejs-app1 t2.micro us-east-1a ec2-XX-XX-XX-XX.compute-1.amazonaws.com YY.YY.YY.YY ZZ.ZZ.ZZ.ZZ arn:aws:iam::ZZZZZZZ:instance-profile/hogehoge-role

となります。

補足、おまけ

JAWS-UG CLI専門支部には、まだ行けてないので頑張っていけるようにしたい。

参考資料・リンク

http://stedolan.github.io/jq/
http://stedolan.github.io/jq/manual/

AWS
AWS Advent Calendar 2014
AWSAdvent CalendarEC2EIPTerraformVPC

AWS Advent Calendar 2014

今回の投稿内容は、AWS Advent Calendar 2014
になります。

AWS Advent Calendar 2014

今回の取り上げるテーマ

今回はEIPを取り上げます。EIPを付ける際はどうされてますか?
私は先ほど仕事で10個EC2インスタンスにEIPをつけようとしました。
yumによるインストールするによりリポジトリと通信を行うためです。
Managment Consoleでの選択してEIPを設定するのは正直手間がかかりました。

Managment Consoleでの作業

VPC_Management_Console.png

発行されたEIPで接続するために、sshのconfigを作成したり
EC2へのインストール作業後にEIPを外す作業もなかなか手間がかかるものです。

Terraformによるeipのオーケストレーション

最近Terraformを覚えたので、もしかしたらそちらでできるのではないかと思いつきました。
すると調べたところ、作業が簡単になる見込みがありました。
HashicoprのTerraformにより、一斉設定を行います。

Terraformファイルの準備

[01:41:52][f_prg@mba:eip]# cat eip.tf
provider "aws" {
    access_key = "XXXXXXXXXXXXXXXXXXXX"
    secret_key = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
    region = "ap-northeast-1"
}

resource "aws_eip" "hoge" {
    instance = "i-AAAAAAAAA"
    vpc = true
}

resource “aws_eip”
の4行を複数記述すれば、複数のインスタンスに実行ができるようになります。

Terraformの実行

[01:41:53][f_prg@mba:eip]# terraform plan
Refreshing Terraform state prior to plan...


The Terraform execution plan has been generated and is shown below.
Resources are shown in alphabetical order for quick scanning. Green resources
will be created (or destroyed and then created if an existing resource
exists), yellow resources are being changed in-place, and red resources
will be destroyed.

Note: You didn't specify an "-out" parameter to save this plan, so when
"apply" is called, Terraform can't guarantee this is what will execute.

+ aws_eip.hoge
    allocation_id:  "" => "<computed>"
    association_id: "" => "<computed>"
    domain:         "" => "<computed>"
    instance:       "" => "i-AAAAAAAAA"
    private_ip:     "" => "<computed>"
    public_ip:      "" => "<computed>"
    vpc:            "" => "1"


[01:41:58][f_prg@mba:eip]# terraform apply
aws_eip.hoge: Creating...
  allocation_id:  "" => "<computed>"
  association_id: "" => "<computed>"
  domain:         "" => "<computed>"
  instance:       "" => "i-AAAAAAAAA"
  private_ip:     "" => "<computed>"
  public_ip:      "" => "<computed>"
  vpc:            "" => "1"
aws_eip.hoge: Creation complete

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

The state of your infrastructure has been saved to the path
below. This state is required to modify and destroy your
infrastructure, so keep it safe. To inspect the complete state
use the `terraform show` command.

State path: terraform.tfstate

各々のインストールはchefやansibleで行います。

今回は割愛します。
EIPが付いているので、packageやyumによる
パッケージインストールができるようになります。

Terraform destroyの破棄

EIPが解放されます。

[01:48:18][f_prg@mba:eip]# terraform destroy
Do you really want to destroy?
  Terraform will delete all your managed infrastructure.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

aws_eip.hoge: Refreshing state... (ID: eipalloc-AAAAAAAAA)
aws_eip.hoge: Destroying...
aws_eip.hoge: Destruction complete

Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

まとめ

-public ipを付与できないEC2インスタンスには有効です。
-EC2インスタンスIDを入力するのはまだ手間がかかりました。
-プライベートサブネット配下のEC2インスタンスにインストール作業するときに大変便利だなぁと思いました。
-Terraformファイルを作成する工夫でもっと簡単になるのかとも思いました。

AWS
VagrantでAWSのEC2インスタンス起動
AWSEC2Vagrant

VagrantでAWSのEC2インスタンス起動

はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
VagrantでAWSのEC2インスタンスを起動することになったので、その手順メモです。

Vagrantの初期化をする

[13:53:25][f_prg@mba:~]# cd "/Users/f_prg/Documents/project/f_prg_packer/aws"
[13:53:25][f_prg@mba:aws]# vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Vagrantの準備をする

vagrant-awsプラグインのインストール

[13:53:31][f_prg@mba:aws]# vagrant plugin install vagrant-aws
Installing the 'vagrant-aws' plugin. This can take a few minutes...
Installed the plugin 'vagrant-aws (0.5.0)'!

VagrantのAWSのEC2インスタンスを起動するためのboxを追加する

[13:55:43][f_prg@mba:aws]# vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
==> box: Adding box 'dummy' (v0) for provider:
box: Downloading: https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
==> box: Successfully added box 'dummy' (v0) for 'aws'!

Vagrantfileの編集

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "dummy"

  config.vm.provider :aws do |aws, override|
    aws.access_key_id     = "AAAAAAAAAAAAAAAAAAAA"
    aws.secret_access_key = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    aws.keypair_name = 'CCCCCCCC'
    aws.instance_type = "t2.micro"
    aws.region = "ap-northeast-1"
    aws.availability_zone =  "ap-northeast-1a"
    aws.ami = "ami-4985b048"
    aws.tags = {
      'Name' => 'vagrant'
    }

    aws.security_groups = ['sg-DDDDDDDD']
    aws.subnet_id = 'subnet-EEEEEEEE'
    aws.elastic_ip = true

    override.ssh.username = "ec2-user"
    override.ssh.private_key_path = "FFFFFFFF.pem"
  end
end

vagrant を起動します

vagrant up --provider=aws

まとめ

久々に起動したので、まとめてみました。

参考資料・リンク

今回はございません。