[AWS] EFSのマウント方法

EFSのルートを/etc/letsencryptをマウントする方法は、

1. パッケージのインストール (Ubuntuの場合)

# apt-get -y install nfs-common

2. 下記を/etc/fstabに記述する

YOUR_EFS.efs.ap-northeast-1.amazonaws.com:/ /etc/letsencrypt nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev 0 0

3. セキュリティグループの作成

EFSサイドは2049 inboundをオープン。EC2側は2049のoutboundをオープン(outboundは基本全オープンだと思う)

4. 該当ディレクトリを作成し、fstabのReload

# mkdir /etc/letsencrpyt 
# mount -a 

[Rails][JQuery]いつも忘れるDynamic select options

結構な頻度で書く依存型セレクトボックス。毎回自力で書いてるような気がするのでログしておく。

 <div class="field">
    <%= form.label :region %>
    <%= form.select :region, options_for_select([
      'us-west-2',
      'us-west-1',
      'us-east-2',
      'us-east-1',
      'ap-south-1',
      'ap-northeast-2',
      'ap-southeast-1',
      'ap-southeast-2',
      'ap-northeast-1',
      'ca-central-1',
      'cn-north-1',
      'eu-central-1',
      'eu-west-1',
      'eu-west-2',
      'eu-west-3',
      'sa-east-1'
    ]), {include_blank: true}, required: true %>
  </div>

  <div class="field">
    <%= form.label :availability_zone %>
    <%= form.select :availability_zone, {}, required: true %>
  </div>

<script>
 $("#storage_region").change(function(){
    var region = $(this).val();
    var $saz = $('#storage_availability_zone');
    $.get("/api/v1/aws_availability_zones?region="+region, function(zones){
      $saz.empty();
      zones.forEach(function(zone){
        $('<option>').val(zone).text(zone).appendTo($saz)
      })
    });
  })
</script>

ruby/railsでEBS volumeを作る方法

AWS version3でebs volumeを作るのはドキュメント通り。

  def create_volume
    begin
      resp = ec2_client.create_volume({
        availability_zone: self.availability_zone,
        size: self.size,
        volume_type: "gp2"
      })
      logger.debug resp
      self.update(volume_id: resp.volume_id)
    rescue => error
      logger.error error.inspect
      false
    end  end

  def delete_volume
    begin
      resp = ec2_client.delete_volume({
        volume_id: self.volume_id      })
      logger.debug resp
      self.destroy
    rescue => error      logger.error error.inspect
      false
    end
  end

  def ec2_client
    @client ||= Aws::EC2::Client.new(region: self.region) # "ap-northeast-1"
  end

  def region
    "ap-northeast-1"
  end

[Linux] rbenv listの更新方法

毎年クリスマスにrubyがでるので更新する。Linuxにbrewはないのでgitでpullする。

cd "$(rbenv root)"/plugins/ruby-build && git