Ruby での Google Cloud Run 関数に対する App and API Protection の有効化
This product is not supported for your selected
Datadog site. (
).
Google Cloud Run の AAP サポートはプレビュー版です。
仕組み
serverless-init アプリケーションは、プロセスをラップし、サブプロセスとして実行します。メトリクス用の DogStatsD リスナーと、トレース用の Trace Agent リスナーを開始します。アプリケーションの stdout/stderr ストリームをラップすることでログを収集します。ブートストラップ後、serverless-init はコマンドをサブプロセスとして起動します。
完全なインスツルメンテーションを取得するには、Docker コンテナ内で最初に実行されるコマンドとして datadog-init を呼び出していることを確認してください。これは、エントリポイントとして設定するか、CMD の最初の引数として設定することで実行できます。
互換性
App and API Protection serverless の Google Cloud Run サポートはプレビュー版です。
注: Remote Configuration による脅威保護はサポートされていません。Workflows を使用して、WAF で IP をブロックします。
始める
アプリケーションをデプロイする前に、Ruby トレーサーを手動でインストールします。サンプルアプリケーションを参照してください。
Dockerfile に以下の指示と引数を追加します。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENV DD_TRACE_PROPAGATION_STYLE=datadog
ENTRYPOINT ["/app/datadog-init"]
CMD ["rails", "server", "-b", "0.0.0.0"]
説明
Datadog serverless-init を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
(オプション) Datadog タグを追加します
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_APPSEC_ENABLED=1
ENV DD_VERSION=1
この環境変数は、Cloud Run でトレース伝播を適切に機能させるために必要です。すべての Datadog のインスツルメンテーションが適用されたダウンストリームサービスに対して、この変数を設定してください。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
Datadog serverless-init プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
バイナリアプリケーションをエントリーポイントでラップして実行します。この行を必要に応じて調整してください。
CMD ["rails", "server", "-b", "0.0.0.0"]
代替構成
Dockerfile 内にすでにエントリポイントが定義されている場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENV DD_TRACE_PROPAGATION_STYLE=datadog
CMD ["/app/datadog-init", "rails", "server", "-b", "0.0.0.0"]
エントリーポイントにも Datadog のインスツルメンテーションを適用する必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えてください。詳細については、serverless-initの仕組みを参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENV DD_TRACE_PROPAGATION_STYLE=datadog
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "rails", "server", "-b", "0.0.0.0"]
実行するコマンドが datadog-init の引数として渡される限り、完全なインスツルメンテーションが適用されます。
参考資料