aws lambda で python から mysql が使いたい場合は、
$ pip install mysql-python -t . $ vi lambda_function.py ...
さらに、`libmysqlclient.so.*` がないと起動できない。
http://www.filewatcher.com/ ここなどで適当なファイルをダウンロードし、同じフォルダに保存すれば、利用できます。
aws lambda で python から mysql が使いたい場合は、
$ pip install mysql-python -t . $ vi lambda_function.py ...
さらに、`libmysqlclient.so.*` がないと起動できない。
http://www.filewatcher.com/ ここなどで適当なファイルをダウンロードし、同じフォルダに保存すれば、利用できます。
Json のフォーマットがおかしいことが考えられるが、
textは見かけ上問題ない場合がある。
そんな場合によくあるのが、BOM (バイトオーダーマーク)という情報がテキストデータの先頭に含まれている場合。
windows 標準のメモ帳など、UTF-8には、通常はつけるべきでないとされている、BOMがついてしまう。
この BOM が原因で、読み込みエラーが起きている可能性がある。
json ファイル自体を別のエディタで作りなおすか、プログラム側で、先頭の無駄な文字を消すと、読み込めるようになる。
WWW www = new WWW ("https://xxx/sample.json"); yield return www; string v = www.text; v = v.Trim(); var o = Json.Deserialize (v);
プログラムに関わるテキストは、メモ帳で開かないようにしましょう。
Certificate Manager が 東京リージョンでも取得できるようになりましたが、
CloudFrontは、バージニア北部 (us-east-1) で取得した証明書でないと設定できません。
よくある質問 - AWS Certificate Manager(簡単に SSL/TLS 証明書を作成、管理、配置) | AWS
米国東部 (バージニア北部) リージョンでプロビジョンされ、Amazon CloudFront ディストリビューションに関連付けられた証明書が、お客様のディストリビューションに設定された地理的場所に配信されます。
$http_host は ポート含む
$host は、ポート含まない
たとえば、このような経路でサイトを表示させるとき、
ブラウザ =(80)=> Cloud Front =(8000)=> ELB =(80)=> Nginx =(socket)=> Unicorn
このようにポート8000にして通過させると、Unicorn 側に 8000ポートでアクセスしたことになってしまう。
location @unicorn { set $proto $scheme; if ($http_cloudfront_forwarded_proto = "https") { set $proto "https"; } proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $proto; proxy_set_header Host $host; # proxy_set_header Host $http_host; proxy_pass http://app_sock; }
File クラスを使うと、ストレージの読み書きが発生し、速度が落ちるため、メモリ上だけで処理を行う方針。
File クラスと同じ処理をするため、メソッドを定義する。
class StringFileIO < StringIO def self.create_from_canvas_base64 str return nil if str.nil? head, data = str.split ",", 2 return nil if data.nil? _, mime_type = head.split /:|;/ bin = Base64.decode64 data self.new bin, mime_type end def initialize blob, content_type super(blob) @content_type = content_type self end def original_filename "image" end def content_type @content_type end end
あとは、代入するのみ
class User def image_str= str self.image = StringFileIO.create_from_canvas_base64(str) end end
というのありえるようだ。