Carrierwave から ActiveStrage に乗り換えたときに、予想外だったこと

route の一番下に、404用のアクションを定義していると、画像が表示されない $ config/route.rb # ... get '*path', to: 'application#error_404' これは、active storage が定義する 以下よりも先に、上記が処理されているため。 get "/rails/active_storag…

Alexa 開発時、スキルの呼び出し名の変更が反映されない

2018/09/21現在、スキルの呼び出し名を変更しても、それだけでは反映されない。 ストアに公開するための認定時にも、古い呼び出し名のまま動作確認が行われてしまう。これを反映させるには、一度テストを無効にして、再度有効にすることで反映される。それに…

Mysql8 に接続できないとき

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) MariaDBと同じく、ログイン認証プラグインがかわり、現在のユーザーとmysqlにログインしようとしているユーザーが異なるとログインできない状態になっている。 そのま…

UPS Eaton IPP を利用する

Daitron の製品、無停電電源装置(UPS) イートン を CentOS 7 で利用するときの設定方法です。 Lenovo UPS 1000VA、UPS 1500VA は、EATON社製UPSです。CentOS 7.4 インストール手順 | 無停電電源装置(UPS) | イートン ここの説明で大体は大丈夫ですが、もっと…

Serverless Framework で、functions block に定義した 関数名を参照する

$ serverless.yml service: aws-nodejs # NOTE: update this with your service name provider: name: aws runtime: nodejs8.10 region: ap-northeast-1 stage: ${opt:stage, 'development'} ... functions: webApp: handler: 'handler.main' #name を指定し…

AWS 利用時に、HTTPS 通信する方法いくつか

ドメイン認証でよいのであれば、https で通信する時は、AWS Certificate Managerで証明書を取得し、CloudFront で選択すれば良いが、いろんな条件でそれが出来ないことがあるため、そのときの対処方法と問題点です。 AWS Certificate Manager で、CNAME を利…

AWS Mysql に IAM Role で接続する

MySQL 5.6 マイナーバージョン 5.6.34 以降、MySQL 5.7 マイナーバージョン 5.7.16 以降、Amazon Aurora 1.10 以降 で対応している。ただし、1秒間あたりの接続開始の認証回数が20回と少ないため、アクセスの多いシステムでは採用できない。 IAM データベー…

最近 Apple の審査でリジェクトされた時の対応方法

Guideline 2.1 - Information NeededWe have started the review of your app, but we are not able to continue because we need access to a video that demonstrates Audio on background your app in use on a physical iOS device.Please ensure the vi…

CloudFront の CNAME は、サブドメインであれば実質2個まで同じドメインが指定可能

CloudFront の CNAME の設定は、全CloudFrontでユニークにしなければなりませんが、 CloudFront の CNAME には、ワイルドカードでも指定できるため、 *.testdomain.test と www.testdomain.test で 2つ登録すれば、実質、同じドメインが指定できます。ただし…

一般提供された CloudFront lambda@Edge で、Basic認証を設定する

preview と 仕様が変わっています。nodejsは6.10を選ぶ必要があり、headers の構造も変わっていました。 Cloudfrontのarn指定に、lambda を version がなければいけないのも、なかなかめんどくさい変更です。 あとは、role の設定も面倒ですが、一旦書きませ…

CloudFront にCloudFront を入れるときの注意点

CloudFront は、Request header に含まれる Hostの値が、CloudFrontに設定されたCNAMEと一致していないとレスポンスを返さない。 CloudFrontに設定されたCNAMEは、すべてのCloudFrontで2つ同じCNAMEを設定できない。Behavior の Forward Headers は、Host を…

mysql5.7 の 注意点 (< 5.7.11)

RDS 上で mysql 5.7 を使うときに覚えておかなければならないことは一つで、default_password_lifetime この値が、5.7.10 以下の時、360 になっています。 SELECT @@default_password_lifetime; つまり360日で期限切れになりログインできなくなります。RDS …

Route53 で Domain name status code がブランクな場合

jp や、io のドメインで確認しましたが、Domain name status code がブランクのままになるドメインがあります。 whois コマンドで、 [状態] Active となっていれば、気にせず安心して良いと、AWSに回答いただきました。

CloudFront lambda@Edge で、Basic認証を設定する

S3+CloudFrontなど、サーバーレスでBasic認証をかける方法を何年も検討していたのですが、CloudFrontにLambdaを割り当てられるようになり、試したところ実装することがで来ました。まだPreview版ですが、フォームから申請することで、数日で許可が得られます…

SES でメール送信時にリジェクトされる

Net::SMTPFatalError: 554 Message rejected: Email address is not verified. The following identities failed the check in region US-EAST-1 ActionMailer で送信した例だが、このようにメール送信がデフォルト状態だと出来ない。 Your Amazon SES accou…

Lambda@Edge を利用し、Cloudfrontに設定ようとしたとき、エラーが表示される

There was an error creating the trigger: Completing this action would cause the maximum number of distributions with Lambda function associations per owner to be exceeded (maximum allowed is 0). Lambda@Edge は現在プレビュー版となっており、…

AWS SSM で、EC2に任意のコマンドを実行する

ssm は、ssh で接続することなく、 必要な role があれば、特定の EC2 上へコマンドを送ることが出来ます。 Amazon Linux に対しても、実行できます。EC2の自動セットアップを行いながらも、ssh キーの登録をしたくないようなときに役立ちます。 実行するリ…

Rails5 では、production 時、config.autoload_paths が機能しない

こちらに変更点が書かれていますが、A Guide for Upgrading Ruby on Rails — Ruby on Rails Guides Autoloadを有効にする $ vi config/environments/production.rb config.enable_dependency_loading = true 起動時にロードする config.eager_load_paths += …

Twitter Card の申請が通った場合、同一ドメインすべてでTwitterカードが有効になる

https://appspot.info/share/11111の審査が通った場合、ドメイン単位で承認されるため、ほかのパスも有効になります。https://appspot.info/hoge/2222

Rails5 ActiveRecord で select をする時の高速化便利関数

select 高速化のヒント class Parent has_many :childs end class Child belongs_to :parent end has_many の配列データ側を絞り込む。なければ parent も返らない。 Parent.includes(:childs).where("childs.age > ?", 20).references(:childs) belongs_to …

AWS Elastic Beanstalk x Ruby on Rails で構築する

セットアップする環境 Ruby on Rails5 RDS (Mysql) Puma CloudFront を用いて起動させる。アプリケーション名は {app name} とする。 手順 RDS を起動 eb コマンドで、同時にRDS を起動させることも可能だが、アプリケーションの削除と同時に、RDSも消えてし…

AWS Lambda で、 python から mysql に接続する

aws lambda で python から mysql が使いたい場合は、 $ pip install mysql-python -t . $ vi lambda_function.py ...さらに、`libmysqlclient.so.*` がないと起動できない。http://www.filewatcher.com/ ここなどで適当なファイルをダウンロードし、同じフ…

MiniJSON で text の Json.Deserialize が null になる場合

Json のフォーマットがおかしいことが考えられるが、 textは見かけ上問題ない場合がある。そんな場合によくあるのが、BOM (バイトオーダーマーク)という情報がテキストデータの先頭に含まれている場合。windows 標準のメモ帳など、UTF-8には、通常はつけるべ…

Certificate Manager で取得した証明書が、CloudFront で選択できない

Certificate Manager が 東京リージョンでも取得できるようになりましたが、 CloudFrontは、バージニア北部 (us-east-1) で取得した証明書でないと設定できません。よくある質問 - AWS Certificate Manager(簡単に SSL/TLS 証明書を作成、管理、配置) | AW…

Lineのメッセージで、URLが展開されない

Line の チャット画面上で、 OG情報を展開させるには、 http または、httpsのプロトコルsslv3(脆弱性があり利用停止が推奨されている)に対応させるひつようがあり、 httpsのプロトコルTLSだと表示されません。おそらく数年以内に改善されるはずです。

NginxでUnicornが別Portへリダイレクトしてしまう

$http_host は ポート含む $host は、ポート含まないたとえば、このような経路でサイトを表示させるとき、 ブラウザ =(80)=> Cloud Front =(8000)=> ELB =(80)=> Nginx =(socket)=> Unicorn このようにポート8000にして通過させると、Unicorn 側に 8000ポー…

Rails で Base64 エンコードされた文字を Carrierwave で保存する最も良い方法

File クラスを使うと、ストレージの読み書きが発生し、速度が落ちるため、メモリ上だけで処理を行う方針。 File クラスと同じ処理をするため、メソッドを定義する。 class StringFileIO < StringIO def self.create_from_canvas_base64 str return nil if st…

Wordpress で visual editor の タブが表示されないとき

原因不明だが、'wp-includes/js/tinymce' フォルダを、再ダウンロードしたファイルで置き換える User > Your Profile ページの Visual Editor にチェックが入っている nginx などで、user agent に、empty の文字列を渡している というのありえるようだ。

CloudFront 使用時、scheme を取得する

CloudFront を使用時、https での通信でも、nginx の $scheme に http が入ってしまっている。CloudFront-Forwarded-Proto ヘッダーに、original の scheme が入っているので、それを利用する。 CloudFront Whitelist Headers に、CloudFront-Forwarded-Prot…

ActiveAdmin で、belongs_to, accepts_nested_attributes_for を設定したmodelも同時に表示・編集する

ActiveAdmin で、belongs_to, accepts_nested_attributes_for を設定したmodelも同時に表示・編集する ActiveAdmin.register UserLogin do # ... form do |f| f.inputs nil, for: [:user, f.object.user || User.new] do |fc| fc.input :icon fc.input :full…