Terraform 確認

Terraform について確認。

以下なナニがありますね。動作検証などやってみます。

README に以下な記述。

Try to do a GET to localhost:4000/v1/{foo,bar,baz} – they should work as normal.

Then, try a GET to localhost:4000/v1/gifs/search?q=funny+cat&api_key=dc6zaTOxFJmzC – this should forward the request to Giphy's public API and respond accordingly with funny cats.You can also try a GET to localhost:4000/v1/hello-world, which is an example of directly matching a request by path.

Demoより引用

とりあえず web/router.ex を確認。以下な記載。

  use Terraform,
    terraformer: ReverseProxy.Terraformers.Giphy

routing 定義に記載されていないものについては lib/terraformers/giphy.ex に記述されている定義に沿って処理、なのかしら。その中の match しないリクエストを処理する部分が以下。

  get _ do
    %{method: "GET", request_path: request_path, params: params, req_headers: req_headers} = conn
    Logger.debug """
    Processing by #{__MODULE__}
      Path: #{@host <> request_path}
      Parameters: #{inspect params}
      Headers: #{inspect req_headers}
    """
    res = Giphy.get!(request_path, req_headers, [params: Map.to_list(params)])
    send_response({:ok, conn, res})
  end

Giphy はてっぺんあたりで宣言されてる以下なナニを指してるはず。

  alias ReverseProxy.Clients.Giphy

lib/reverse_proxy/clients/giphy.ex は HTTPoison を use しています。再定義? されているのが以下の手続き。

  • process_url

  • process_request_headers

  • append_secret

    • process_url が使っているがコメントアウトされている

基本的には HTTPoison の get! を使っているのですね。ちょっと Heroku に deploy してみようかしら。

Heroku に展開

とりあえず clone してきたソレを github に登録しないと、なのか。で

  • heroku create

  • config/prod.exs 修正

  • elixir_buildpack.config 作成て

    • バージョンていくつになるのかしら

    • 既存プロジェクトからまんまコピィ

  • Procfile も作成

  • mix phx.gen.secret

    • これ、docker の中で、なのでした。。。

    • 準備として mix deps.get しなければ、でした

  • heroku config:set SECRET_KEY_BASE='hoge'

  • heroku addons:create heroku-postgresql:hobby-dev

    • が失敗

deplopy 不具合

  • 以下を config/prod.exs に追加

config :reverse_proxy, :giphy,
  host: "http://api.giphy.com",
  secret: "dc6zaTOxFJmzC"
  • 以下の修正も endpoint.ex

   plug Plug.Parsers,
     parsers: [:urlencoded, :multipart, :json],
     pass: ["*/*"],
-    json_decoder: Poison
+    json_decoder: Phoenix.json_library()
  • 違いました mix.exs に {:poison, "~> 1.5"}, な記述追加

  • config の use Mix.Config という記述を import Config に修正

  • elixir_buildpack.config の hook_post_compile="eval mix assets.deploy && rm -f _build/esbuild*" な記述をコメントアウト

そして deploy には成功してますが、起動時にコケている模様。ローカル動作検証からやり直します。。

この記事が気に入ったらサポートをしてみませんか?