AppSheet の Data Source に Heroku Postgres を追加したい


症状:

 AppSheet の Data Source 追加にて、Cloud Database を選び、Heroku Postgres への接続設定を行うと、接続テストでエラーが起きる。PgAdminなどからは正常にアクセスができる。

Error
Failed to establish connection. (postgres): The remote certificate is invalid according to the validation procedure.

対処:

DreamFactory を別途用意し、 AppSheet の Data Source 追加にて、On-premises Database を選び、DreamFactory の接続情報を入力することで可能。設定方法は後述にあり。

※ DreamFactory はあらゆるデータベースを RESTful API サーバーとして利用できるソリューション、らしい。セルフサーバーに入れて運用できる。

理由(推測):

Heroku Postgres の SSL の自己証明書がオレオレ自己証明書になっており、通常のCloud Database 接続設定では AppSheet 側がオレオレ自己証明書をエラーとして扱っている(…と思われる)

Heroku のプランをEnterpiseにすればできるのか・・不明。

%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22AppSheet%22%20style%3D%22rounded%3D1%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BarcSize%3D17%3BfillColor%3D%23dae8fc%3BstrokeColor%3D%236c8ebf%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%2220%22%20y%3D%2240%22%20width%3D%2280%22%20height%3D%2240%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%223%22%20value%3D%22Heroku%20Postgre%22%20style%3D%22rounded%3D1%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BfillColor%3D%23e1d5e7%3BstrokeColor%3D%239673a6%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22285%22%20y%3D%2240%22%20width%3D%22100%22%20height%3D%2240%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%224%22%20value%3D%22%22%20style%3D%22endArrow%3Dclassic%3Bhtml%3D1%3Brounded%3D0%3B%22%20edge%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20width%3D%2250%22%20height%3D%2250%22%20relative%3D%221%22%20as%3D%22geometry%22%3E%3CmxPoint%20x%3D%2260%22%20y%3D%22130%22%20as%3D%22sourcePoint%22%2F%3E%3CmxPoint%20x%3D%22330%22%20y%3D%22130%22%20as%3D%22targetPoint%22%2F%3E%3C%2FmxGeometry%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%225%22%20value%3D%22SSL%20Only(%E5%A4%96%E9%83%A8%E6%8E%A5%E7%B6%9A)%22%20style%3D%22text%3Bhtml%3D1%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3Balign%3Dcenter%3BverticalAlign%3Dmiddle%3BwhiteSpace%3Dwrap%3Brounded%3D0%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22285%22%20y%3D%2210%22%20width%3D%22120%22%20height%3D%2220%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%226%22%20value%3D%22%26lt%3Bspan%26gt%3B%E3%83%AB%E3%83%BC%E3%83%88%E8%AA%8D%E8%A8%BC%E5%B1%80%E3%81%8C%E7%99%BA%E8%A1%8C%E3%81%97%E3%81%9F%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E8%A6%81%E6%B1%82%26lt%3B%2Fspan%26gt%3B%22%20style%3D%22text%3Bhtml%3D1%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3Balign%3Dcenter%3BverticalAlign%3Dmiddle%3BwhiteSpace%3Dwrap%3Brounded%3D0%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%2255%22%20y%3D%22100%22%20width%3D%22230%22%20height%3D%2220%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%227%22%20value%3D%22%26lt%3Bspan%26gt%3B%E3%82%AA%E3%83%AC%E3%82%AA%E3%83%AC%E8%87%AA%E5%B7%B1%E7%BD%B2%E5%90%8D%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E8%BF%94%E3%81%99%26lt%3B%2Fspan%26gt%3B%22%20style%3D%22text%3Bhtml%3D1%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3Balign%3Dleft%3BverticalAlign%3Dmiddle%3BwhiteSpace%3Dwrap%3Brounded%3D0%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22140%22%20y%3D%22150%22%20width%3D%22185%22%20height%3D%2220%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%228%22%20value%3D%22%22%20style%3D%22endArrow%3Dnone%3Bhtml%3D1%3Brounded%3D0%3BfontSize%3D48%3BentryX%3D0.5%3BentryY%3D1%3BentryDx%3D0%3BentryDy%3D0%3B%22%20edge%3D%221%22%20target%3D%222%22%20parent%3D%221%22%3E%3CmxGeometry%20width%3D%2250%22%20height%3D%2250%22%20relative%3D%221%22%20as%3D%22geometry%22%3E%3CmxPoint%20x%3D%2260%22%20y%3D%22200%22%20as%3D%22sourcePoint%22%2F%3E%3CmxPoint%20x%3D%2270%22%20y%3D%22140%22%20as%3D%22targetPoint%22%2F%3E%3C%2FmxGeometry%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%229%22%20value%3D%22%22%20style%3D%22endArrow%3Dnone%3Bhtml%3D1%3Brounded%3D0%3BfontSize%3D48%3BentryX%3D0.45%3BentryY%3D1%3BentryDx%3D0%3BentryDy%3D0%3BentryPerimeter%3D0%3B%22%20edge%3D%221%22%20target%3D%223%22%20parent%3D%221%22%3E%3CmxGeometry%20width%3D%2250%22%20height%3D%2250%22%20relative%3D%221%22%20as%3D%22geometry%22%3E%3CmxPoint%20x%3D%22330%22%20y%3D%22190%22%20as%3D%22sourcePoint%22%2F%3E%3CmxPoint%20x%3D%2265%22%20y%3D%2290%22%20as%3D%22targetPoint%22%2F%3E%3C%2FmxGeometry%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%2210%22%20value%3D%22%22%20style%3D%22endArrow%3Dclassic%3Bhtml%3D1%3Brounded%3D0%3Bdashed%3D1%3B%22%20edge%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20width%3D%2250%22%20height%3D%2250%22%20relative%3D%221%22%20as%3D%22geometry%22%3E%3CmxPoint%20x%3D%22330%22%20y%3D%22170%22%20as%3D%22sourcePoint%22%2F%3E%3CmxPoint%20x%3D%2260%22%20y%3D%22170%22%20as%3D%22targetPoint%22%2F%3E%3C%2FmxGeometry%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%2211%22%20value%3D%22%22%20style%3D%22shape%3Dimage%3Bhtml%3D1%3BverticalAlign%3Dtop%3BverticalLabelPosition%3Dbottom%3BlabelBackgroundColor%3D%23ffffff%3BimageAspect%3D0%3Baspect%3Dfixed%3Bimage%3Dhttps%3A%2F%2Fcdn2.iconfinder.com%2Fdata%2Ficons%2Fonebit%2FPNG%2Fonebit_35.png%3BfontSize%3D48%3BstrokeColor%3D%23917C3A%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%2232%22%20y%3D%22200%22%20width%3D%2248%22%20height%3D%2248%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%2212%22%20value%3D%22%26lt%3Bfont%20style%3D%26quot%3Bfont-size%3A%2012px%26quot%3B%26gt%3BSSL%20ERROR%26lt%3B%2Ffont%26gt%3B%22%20style%3D%22text%3Bhtml%3D1%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3Balign%3Dcenter%3BverticalAlign%3Dmiddle%3BwhiteSpace%3Dwrap%3Brounded%3D0%3BfontColor%3D%23CC0000%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%2280%22%20y%3D%22209%22%20width%3D%2280%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E

設定手順

実稼働に耐えれるかは不明です。自己責任で。

事前用意:

  • Heroku に PostgreSQL が使える状態。

Herokuの準備

  1. DreamFactory を Herokuへのインストール
    • デフォルトでadd-on の Heroku Postgres が追加されるが、このデータベースはDreamFactoryが設定値を保存するためのもの。
    • Config Vars 
      • APP_NAME は App name と同じにしておく。
      • HEROKU_API_KEYはhttps://dashboard.heroku.com/accountのAPI KeyのRevealボタンを押して表示された文字列をコピペ
      • ほかの項目は変更しない。
  2. インストールしたアプリを開くとセットアップ画面にリダイレクトされる。項目を入れて CREATE ボタンを押す。

    • ログインした状態で下記画面が表示される。

DreamFactoryの設定

  1. Service の追加
    • 中央の Services タグをクリック、左側の Create ラベルを押すと Create Service 画面が開く。
    • info タブ
      • Service Type より、Database > PostgreSQL を選択
      • Namespace、Label を設定。Namespace は API の URLとして、Label は管理画面の表示用として使われる、と説明が画面上にはある。なおここで指定したNamespeaceが、AppSheet接続する際に指するサービス名となる。
    • Config タブ
      • 用意していた Heroku Postgres の接続情報を入力
    • Serviceを追加すると一覧画面が表示されるが、ここにサービスのAPIキーが表示される。これがAppSeetに接続する際のAPIキーとなる。
  2. App の追加
    • Appsタブをクリック、左側の Create ラベルを押すと、Create Application 画面が開く。
    • Application Nameに値をセット。
    • ActiveのチェックボックスをON。
    • App Location:On a remote URLのチェックを入れて、URL to Application には、http://{app_name}.herokuapp.com/ 。 {app_name}は作ったアプリがfooであれば、http://foo.herokuapp.com/ AppSheet が接続に利用するURLとなる。
    • それ以外の項目は空欄のままでOK
  3. Role の追加
    • Roles タブをクリック、左側の Create ラベルを押すと、Create Role 画面が開く。
    • Basic タブ
      • Nameは適当に。
      • Active のチェックを入れる
    • Access タブ
      • 右端の + ボタンを押すと、空の行が表示される。
      • Service 欄は、1で作成した Service をリストより選ぶ
      • Component 欄は、* を選択
    • Access 欄は、GET、POST、PUT、PATCH、DELETE のすべてにチェックを入れる。
  4. User の追加
    • Users タブをクリック、左側の Create ラベルを押すと、Create User 画面が開く。
    • ここでは、AppSheet が接続に利用するアカウントを作成する。
    • Basic タブ
      • Email (Required for login)に、AppSheetから接続するためのメールアドレスを登録。
      • 右横のSet Passwordのチェックを入れると、パスワード欄が表示されるので、パスワードを新規入力。
    • Roles タブ
      • 2で作成した App の項目を「-- No Rule Selected -- 」から、3で作成したRoleへ変更

コメント

このブログの人気の投稿