LocalStackを試した
手元で AWS のサービスを動かしたかったので試しました。
やっていくぞ!
- tl;dr
- 参考URL
- 環境
- 対応している AWS サービス一覧とエンドポイント
- 利用方法
- 事前準備
- aws profile の設定
- pip でローカルにインストール
- git clone後にDockerで起動
- 事前準備
- 使用例
- Lambda 関数作成と実行
- 適当なディレクトリで test.py 作成
- zipに纏めて LocalStack に Lambda 関数作成
- Lambda 関数実行
- Lambda 関数の一覧取得
- Lambda 関数更新と削除
- 更新
- 削除
- Lambda 関数作成と実行
tl;dr
LocalStack を使うと、AWS のサービスをローカルで使用出来る。
aws-cli でエンドポイントを指定するだけ。
簡単!
参考URL
GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and test your cloud apps offline! qiita.com
環境
- macOS Sierra
- Python 3.6
- Docker version 18.03.1-ce, build 9ee9f40
- docker-compose version 1.21.2, build a133471
- aws-cli/1.15.30
AWS SAM CLI を macOS (with fish shell) に導入する際のメモ
業務中に AWS SAM(Serverless Application Model) CLI が必要になったので導入したのですが、
シェル力が低くて手こずったのでメモに残します。
原因を先に書いておきますが、僕が fish shell 独自の記法に慣れていなかっただけです。
環境
- macOS Sierra Ver 10.12.6
- fish shell Ver 2.7.1
- AWS SAM CLI Ver 0.4.0
Let's Encryptを導入し、nginxをTLSおよびHTTP/2化する
目次
今回の目的
- Webサーバ(nginx)のHTTPSおよびHTTP/2化
- Let’s Encryptの証明書自動更新
作業環境
さくらのVPS 1G
CentOS release 6.8 (Final)
nginx 1.9.5以上
新しいバージョンのnginxを導入
nginxをhttp/2化する際、1.9.5以上のバージョンを要求されます。
作業時点のyumリポジトリでは、stable versionとして1.8.2が公開されていたので、
mainline versionからより新しいバージョンを取得します。
リポジトリの編集
$ sudo vim /etc/yum.repo.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/rhel/$releasever/$basearch/ # この行を変更 gpgcheck=0 enabled=1
nginxのアップデート
アップデート前にnginxを停止し、yum updateを実行します。
$ sudo yum service nginx stop Stopping nginx: [ OK ] $ sudo yum update nginx
バージョンの確認とnginx起動
特に問題が無ければmainline版のnginxがインストールされているので、
バージョン確認の後にnginxを起動しましょう。
$ nginx -v nginx version: nginx/1.9.15 $ sudo service nginx start Starting nginx: [ OK ]
Let's Encryptセットアップ
Let's Encryptのインストール
Let's Encryptのファイル自体はGitHubにて公開されているので、
任意のディレクトリに移動してgit cloneを行います。
今回は /usr/local にて作業を行いました。
$ git clone https://github.com/letsencrypt/letsencrypt
git cloneが完了したら"letsencrypt"ディレクトリに移動し、
パッケージインストールのコマンドを実行します。
$ cd letsencrypt/ $ ./letsencrypt-auto --help
Let's Encryptのクライアントを実行し、証明書取得
Let's Encryptでは証明書取得の手段が複数用意されていますが、
今回はwebrootプラグインを利用して更新を行います。
$ ./letsencrypt-auto certonly --webroot --webroot-path /var/www/html -d y4shiro.net
途中でメールアドレス入力と利用規約への同意を求められるので、適宜入力していきます。
証明書取得が完了すると、下記のようなファイルが作成されます。
$ sudo tree /etc/letsencrypt /etc/letsencrypt ├── accounts │ └── acme-v01.api.letsencrypt.org │ └── directory │ └── ******** │ ├── meta.json │ ├── private_key.json │ └── regr.json ├── archive │ └── y4shiro.net │ ├── cert1.pem │ ├── chain1.pem │ ├── fullchain1.pem │ ├── privkey1.pem ├── csr │ ├── 0000_csr-certbot.pem ├── keys │ ├── 0000_key-certbot.pem ├── live │ └── y4shiro.net │ ├── cert.pem -> ../../archive/y4shiro.net/cert1.pem │ ├── chain.pem -> ../../archive/y4shiro.net/chain1.pem │ ├── fullchain.pem -> ../../archive/y4shiro.net/fullchain1.pem │ └── privkey.pem -> ../../archive/y4shiro.net/privkey1.pem └── renewal └── y4shiro.net.conf
/etc/letsencrypt/live/y4shiro.net に証明書が発行されます。
証明書自動取得
Let's Encryptで発行される証明書は期限が90日と短いので、 自動更新を行うよう設定します。
Crontabにて "毎月1日 00:00" の更新とnginxのreloadを設定しました。
$ sudo crontab -e 00 00 01 * * /usr/local/letsencrypt/letsencrypt-auto certonly --renew-by-default --webroot -w /var/www/html -d y4shiro.net && service nginx reload
nginxの設定
発行した証明書をnginxで読み込み、HTTPSとHTTP/2化を行うためにConfigファイルを編集しましょう。
HTTPSではポート443を使用するので、事前にiptableで開放しています。
Configファイル編集
qiita.com
上記記事を参考に、Configファイルの編集を行いました。
SSLv3.0に脆弱性が発見されているので、"ssl_protocols"、"ssl_ciphers"に関しては必ず設定を行って下さい。
"ssl_dhparam"(Perfect Forward Security)に関してはお好みで。
# redirect to 443 server { listen 80; server_name y4shiro.net; rewrite ^ https://$server_name$request_uri? permanent; } # server setting server { listen 443 ssl http2; server_name y4shiro.net; access_log /var/log/nginx/y4shiro.net/access.log main; error_log /var/log/nginx/y4shiro.net/error.log; ssl_certificate /etc/letsencrypt/live/y4shiro.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/y4shiro.net/privkey.pem; ssl_session_timeout 5m; ssl_session_cache shared:SSL:50m; ssl_session_tickets on; ssl_dhparam /etc/ssl/private/dhparam.pem ssl on; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AESGCM:HIGH:!aNULL:!MD5; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/y4shiro.net/fullchain.pem; resolver 8.8.8.8; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;'; client_max_body_size 10M; location / { root /var/www/html; index index.html index.htm; } }
https化の確認
nginxの再起動およびリロードを行ったのち、
Webページにアクセスしてhttps化されていることを確認してください。
以上です。
参考文献
Let's Encryptの証明書をnginxに設定してhttps化した | tsuchikazu blog 光の速さのWEBサーバー(nginx)をlet's encryptでSSL化及びHTTP/2化。ついでにセキュリティ評価をA+にする。 - Qiita
CentOSにnginxを導入
目次
はじめに
現在運用しているVPS(CentOS)では、WebサーバとしてApacheを稼働させていたのですが、
勉強も兼ねてnginxに置換してみることにしました。
環境
さくらVPS 1GB
CentOS 6.5
Apacheはyumでインストール済み
sudo権限が不要な環境では適宜読み替えてください。
※2016年5月時点の内容なので、バージョン等の表記が古い可能性があります。
Apacheの停止・アンインストール
今回、Apacheとの共存はせずnginxへ完全移行するため、
Apacheの停止・アンインストールを行います。
Apacheの停止
$ sudo service httpd stop
サービス自動起動から削除
$ sudo chkconfig httpd off
Apacheのアンインストール
$ sudo yum remove httpd
yum経由でnginxインストール
リポジトリ登録
nginxはCentOSデフォルトのリポジトリに提供されていないため、
nginx公式のリポジトリを登録します。
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
nginxインストール
$ sudo yum -y install nginx
バージョンを確認
$ nginx -v nginx version: nginx/1.8.1
nginxを起動
$ nginx
もしくは
$ sudo service nginx start
Webページにアクセスし確認
動作確認のため、サーバのIPアドレスをブラウザに打ち込みアクセスします。
特に問題が無ければ"Welcome to nginx!"のページが表示されます。
Webページ公開
元々Apacheで公開していたページをnginxでも公開するため、
nginx.confの内容を変更します。
Configファイル編集
yumでインストールした場合、特に指定をしなければ/etc/nginx/に各種ファイルが設置されます。
$ sudo vim /etc/nginx/nginx.conf
今回は下記項目を編集しました。
ポート変更を行った場合はファイアウォールのポート開放も忘れずに行いましょう。
server { listen 80; # ポートを指定 server_name y4shiro.net; # サーバネームを指定 access_log /var/log/nginx/localhost.access.log; location / { root /var/www/html; # ルートディレクトリを指定 index index.html index.htm; } }
nginxの再起動もしくはConfigファイル再読み込みを行い、
指定したルートディレクトリの内容が表示されていることを確認してください。
$ sudo service nginx restart nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful Stopping nginx: [ OK ] Starting nginx: [ OK ]
もしくは
$ sudo service nginx nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful Reloading nginx: [ OK ]
おわりに
今回はyumを利用してインストールを行ったため、特に問題もなくすんなりと進めることが出来ました。
Configの設定はほぼデフォルトの状態なので、気になる方は各位ググって設定を煮詰めましょう。
以上です。
GitHubのContributionsが反映されない
GitHubで草を生やしてモチベーションを向上させよう
これまではBitbucketでprivateリポジトリを立てて開発していたのですが、今後は開発状況を可視化させて行きたい、という理由で公開して問題ないコードは積極的にGitHubへ投げていく事にしました。
GitHubでは何らかの活動を行うとContributionsに反映されますが、これが結構なモチベーション向上へと繋がります。😄
PushしてもContributionsに反映されない…?
ある程度masterブランチで環境を整えたので、devブランチを作成してコミットを行っていたのですが、devブランチでの作業分がContributionsに反映されていないことに気がつきました。
Contributionsにカウントされる条件
Contributionsに関しては、GitHub公式のドキュメントが存在しています。
また、Qiitaにて言及された記事があったので引用させていだたきました。
Why are my contributions not showing up on my profile? - User Documentation
qiita.com
まとめ
GitHubでContributionsを反映させたければ、デフォルトブランチに。コッミットしましょう