概要
メディアサイトで記事ページへアクセス数ランキングを実装しました。
- Rails 5.1
- Redis (AWS ElastiCache 3.2.10)
その際にマルチスレッド環境を考慮してスレッドセーフな実装を心がけました。
メディアサイトで記事ページへアクセス数ランキングを実装しました。
その際にマルチスレッド環境を考慮してスレッドセーフな実装を心がけました。
完全な備忘録です。
6月に入って数日、
ecs-cli の latest をインストールすると latest が 1.6.0 となりecs-cli compose ...
を実行すると以下のようなエラーが出るようになりました。
1 | level=error msg="Unable to open ECS Compose Project" error="Volume driver is not supported" |
1.4.0 では問題なかったタスク定義でしたが
1.6.0 では Volume driver is not supported
となったそうで処理がこけるようになりました。
その対応として 1.4.0 にバージョン固定した設定です。
AWS Vault は IAM の認証情報 (Access Key Id, Secret Access Key) を安全に OS のキーストアに保存しアクセスできる仕組みを提供するツールです。
Vault = 金庫 というだけあって
PC 落としても秘匿情報が漏れにくい仕組みにしてくれます。
AWS Vault で複数アカウントのコンソールログインを簡単にしたいと思います。
前回 ECR への Docker イメージをプッシュする際の認証コマンドを実行せずにプッシュできる様にしました。
ECR にログイン(aws ecr get-login)無しでプッシュする
ですが、
設定が手間というのがあり、CircleCI, AWS CodeBuild 等でワンライナーでささっと書きたいときには不便です。
awscli profile
で設定した profile を利用し ecs-cli を利用することで認証をよろしくやってくれます。
1 | ecs-cli push <image> --aws-profile <profile> --region <region> |
1 | aws configure set --profile hogehoge aws_access_key_id $ACCESS_KEY_ID |
1 | ecs-cli push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/stg-mogemoge-rails:latest \ |
以上で aws ecr get-login
を使用せず、ECR へプッシュができる様になりました♪
Dockerfile 内に以下のように shell の実行を記述していました。
1 | RUN chmod +x hoge.sh \ |
上記記述のある状態で docker build
実行した所、以下のようなエラーに遭遇しました。
1 | /bin/sh: hoge.sh: Text file busy |
書き込みのために現在開いている手続きのみの (共用テキスト) ファイルを実行しようとした場合や、実行中の手続きのみのファイルを書き込みのために開こうとしたり、削除しようとしたりする場合に発生します。
上記鑑みるとchmod +x hoge.sh
実行中に hoge.sh
を実行しようとしたが為に発生しているということ??
と推測。
以下 sync 処理を追加し無事問題解決できました。
1 | RUN chmod +x hoge.sh \ |
以下コマンドで FTPS 接続確認ができます。
1 | curl -u <user> --ftp-ssl -k ftp://<ftp domain>/ |
備忘録記事です。
社外向けに FTPS で接続許可をする必要があり設定しました。
単純に作成・更新した user, password で認証をパスできるか、
の確認だけができれば良いので、その確認方法を模索している時に
程よいコマンドがありました。
その接続確認を FileZilla, Cyberduck でしましたが
どうもうまくいかず。。
改めて、 lftp
とか色々 ftp だけでもコマンドは多々あるんだなと実感しました。
サーバの ruby のバージョンが古かった為、
rbenv で ruby のバージョンを切り替える様にした際の設定メモです。
1 | $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv |
1 | $ rbenv install 2.5.0 |
Docker version 1.11 で実装された credential-helper を利用し
ECR へのプッシュを安全に簡易的に行う仕組みを実装します。
1 | $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D |
1 | $ docker pull pottava/amazon-ecr-credential-helper |
以下 3 つの中から 1 つ利用ください。
EC2 であれば、1. インスタンスロールで認証
が一番すっきりしていてコードの見通しが良いです。
1 | docker run --rm \ |
1 | sudo sh -c 'cat << EOF > /usr/bin/docker-credential-ecr-login |
1 | docker run --rm \ |
1 | sudo sh -c 'cat << EOF > /usr/bin/docker-credential-ecr-login |
1 | export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE |
1 | docker run --rm \ |
1 | sudo sh -c 'cat << EOF > /usr/bin/docker-credential-ecr-login |
1 | mv $HOME/.docker/config.json $HOME/.docker/config.json.org |
これで aws ecr get-login
から解放されます ♪