Category Archives: AWS

s3にACL設定

S3のバケットに対して、バケットポリシーを設定(S3の管理画面で設定できる)

 {
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::club-activities/report_formats/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "***.***.***.**/32",
                        "***.***.*.***/32",
                    ]
                }
            }
        }
    ]
}

AWS EC2, RDS作成

構成

VPC設定

  • VPC
    • サブネット
    • セキュリティグループ
    • インターネットゲートウェイ

EC2インスタンス作成

サブネット、セキュリティグループを指定して、
EC2インスタンスを作成

ネットワーク設定

  1. VPC作成
  2. VPCの中にサブネット作成(10.0.0.0/16)
    • ELB-Subnet(10.0.0.0/24)
    • Web-AP-Subnet(10.0.1.0/24)
    • RDS-Master-Subnet(10.0.100.0/24)
    • RDS-Slave-Subnet(10.0.200.0/24)
  3. RDS サブネットグループ作成
    前ステップで作成した2つのサブネットをグルーピング
  4. インタネットゲートウェイ設定
    VPCにアタッチする
  5. ルートテーブルをVPCに作成
    10.0.0.0/16 以外の宛先のパケットはインターネットゲートウェイへ中継する
  6. サブネットへのルーティングテーブルの設定
    全ステップで作成したルートテーブルをELB-Subnet(10.0.0.0/24)に関連づける
  7. セキュリティグループをVPCに作成
    EC2の画面から作成(VPCの画面から遷移できるセキュリティグループと同じ)

    • ELB-Sec(port: 8080, 送信元: 0.0.0.0/0(任意の場所))
    • WebAP-Sec (port: 8080, 送信元: 10.0.0.0/24(ロードバランサー))
    • RDS-Sec (port: 3306, 送信元: 10.0.1.0/24(Webアプリケーションサーバー))

インスタンス作成

参考

http://qiita.com/itouhi/items/3768f66d97b37b0d5473

eb

eb作成

EC2接続用のキーペア設定
VPC作成
サブネット作成(ELB, EC2, RDS用)

デプロイ

接続確認

  • rds

バッチサーバー作成

Elastic Beanstalk rails

アプリケーション作成(AWS管理画面)

EC2(ウェブサーバー)

  • プラットフォーム
    ruby
  • 環境タイプ
    オートスケーリング
  • 環境名
    任意に設定
  • この環境でRDSインスタンスを作成する
    チェックを入れる
  • インスタンスタイプ
    m1.medium

RDS

RDSも同時に作成する
* dbタイプ
mysql
* インスタンスクラス
t1.micro

手順

railsアプリ作成

  • アプリ作成
rails new {アプリ名} -d mysql
  • database.yml修正
production:
  adapter: mysql2
  encoding: utf8
  database: <%= ENV['RDS_DB_NAME'] %>
  username: <%= ENV['RDS_USERNAME'] %>
  password: <%= ENV['RDS_PASSWORD'] %>
  host: <%= ENV['RDS_HOSTNAME'] %>
  port: <%= ENV['RDS_PORT'] %>

IAM作成

以下を発番
1. アクセスキー
2. シークレットアクセスキー

ebコマンド

コマンド一覧
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb3-cmd-commands.html#eb3-cmd-options

// eb clientインストール
brew install awsebcli
eb --version

// アプリケーション作成
eb init // アプリケーション新規作成を選択。アクセスキー、シークレットアクセスキーを入力。 .elasticbeanstalkフォルダが作成される

// 環境作成 secret_key_baseも設定する
eb create {環境名}

// もしくは、下記(secret_keyも同時に設定できる)
eb create {環境名} --envvars SECRET_KEY_BASE=`rake secret`

// シークレットキー確認
// 設定状況を確認。 secret_keyが設定されていることを確認できる
eb printenv

// keyが設定されていない場合は以下で設定可能
eb setenv SECRET_KEY_BASE=`bundle exec rake secret`
eb printenv // secret_key_baseが設定されていることを確認できる

AWS管理画面

参考
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/java-rds.html

  • アプリケーション、環境が作成されていることを確認
  • RDS作成
  • RDSコントロールグループ設定変更
    my ip or 0.0.0.0/0
    を追加する。

  • 再度デプロイ

// secret_key設定後再度、デプロイ。DBやテーブルが作成される
eb deploy

mysql 接続

mysql -h {管理画面から確認したエンドポイント} -P 3306 -u {設定したID} -p {設定したパスワード}

ssh接続

appのフォルダに移動して、rails cもできる

参考

http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html

elastic beantalk rubyの単純なアプリケーションデプロイ

初期設定

// 基本設定 (ssh用のkeyも作成しておく。.ssh配下に配置される。)
eb init

// レポジトリ作成 (sinatraapp-devレポジトリが作成される)
eb create sinatraapp-dev --sample

// ページ確認
eb open

// ファイルを追加してコミット
eb deploy

// 再度デプロイされたページを確認
eb open

// ssh接続 .ssh配下に配置してあるkeyを自動で読みに行ってssh接続してくれる
eb ssh {レポジトリ名}

参考

http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby_sinatra.html

ec2 基本設定(インスタンス作成、イメージ作成、ロードバランサー)

ec2作成

  1. VPC
    デフォルト設定

  2. セキュリティグループ
    ssh 22ポート 0.0.0.0/0
    http 80ポート 0.0.0.0/0
    ※上記の設定を削除すると、ssh接続やhttp接続できなくなることを確認できた

ec2にサーバーインストール

sudo yum -y update
sudo yum install -y httpd
sudo service httpd start

ファイル配置

/var/www/html/index.html

インスタンス複製

  1. インスタンス停止
  2. イメージ作成
  3. 別々のネームタグで2つのインスタンス作成
  4. 各インスタンスに接続
ssh -i ~/.ssh/{pemファイル名} ec2-user@{インスタンスのipアドレス}
  1. ロードバランサー設定

RDS

VPC

作業

  1. VPC作成
  2. サブネットを異なるエリアで2つ作成しておく必要がある

参考

http://qiita.com/hiroshik1985/items/9de2dd02c9c2f6911f3b


RDS

  1. RDS用のセキュリティグループを作成する必要がある

参考

http://qiita.com/na0AaooQ/items/7c69a88c80f1efb4cad3

AWS Github設定

リモート

// キー作成
cd ~
mkdir .ssh
chmod 600 .ssh // 700だとエラーでる
cd .ssh
ssh-keygen -t rsa // キー生成
cat {上記で作成したキーの名称}.pub // キーを取得

Github

キーを登録

リモート

vi config

// 以下を追記
Host github
  Hostname github.com
  User git
  IdentityFile ~/.ssh/{作成したキーの名称} #秘密鍵の設定

リモート

cd /var/www/ruby
git clone git@github.com:YoheiMiyamoto/{対象のリポジトリ名}.git // クローン
cd {リポジトリ名} // クローンされていることを確認
git pull origin master // pull