Treasure WorkflowのSecrets機能を使ってみる

June 28, 2017 YangXiaolei

こんにちは、アピリオのYangです。

2016年12月、ビッグデータ分析のクラウドサービスを提供するTreasure Dataが、複数のクラウドを連携して一つのデータ処理を実現する「ワークフロー管理」のサービス「Treasure Workflow」を開始しました。

Treasure Workflowの導入によって、

  • 低コスト
  • 短期導入
  • 様々なサービスと連携可能
  • BIツールと相性抜群

などの魅力を持つTreasure Dataが更に便利になりました。

Treasure Data

 

すでにTreasure Workflowを使い始めている方がたくさんいらっしゃるかと思いますが、YangがTreasure Workflowを使う際に少し躓いたSecrets機能の使い方について、簡単に共有させていただきます。

 

Secrets機能を利用する背景

Data Connectorの認証情報はTreasure Dataコンソール上でマスキングされますが、Workflowの場合、Secrets機能を使わないと同一アカウント下のユーザ全員がWorkflowコンソール上の認証情報を参照できてしまいます。

Data Connector

Data Connector

Workflow

Workflow Before

上はWorkflowコンソール上で認証情報が表示されている状態です。Secrets機能を利用した場合は、コンソール上の認証情報は下記のように表示されます。

Workflow After

このように、認証情報が同一アカウント下のユーザ全員に参照されることが好ましくない場合、Secrets機能を利用をお薦めします。

 

サンプル

Treasure Data社のドキュメントには認証情報を設定する例しか載っていないため、digdagのソースコードを解読して、認証情報を利用する側も含めてサンプルを書いてみました。

  1. 以下のような認証情報の書かれているsecrets.ymlを用意します。
    s3:
      # アクセスキー
      access_key_id: ABCDEFGHIJKLMNOPQRST
      # シークレットアクセスキー
      secret_access_key: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890123
      # バケット
      bucket: test_bucket
    
    sfdc:
      ...(略)
    
    ga:
      ...(略)
    
    rds:
      ...(略)
  2. ymlファイルなどで認証情報を利用する際はこういう風に記述します。
    in:
      type: s3
      auth_method: basic
      # アクセスキー
      access_key_id: ${secret:s3.access_key_id}
      # シークレットアクセスキー
      secret_access_key: ${secret:s3.secret_access_key}
      # バケット
      bucket: ${secret:s3.bucket}
      ...(略)
  3. secretsを設定します。
    • プロジェクトをWorkflowコンソールにプッシュする場合、以下のコマンドで認証情報を設定します。
      $ td wf secrets --project test_project --set @secrets.yml
      2017-06-19 13:12:36 +0900: Digdag v0.9.9
      Secret 's3.access_key_id' set
      Secret 's3.secret_access_key' set
      Secret 's3.bucket' set
      ...
    • Workflowコンソールにプッシュしないで、Workflowをローカルで動かす場合、以下のコマンドで認証情報を設定します。
      $ td wf secrets --local --set @secrets.yml
      2017-06-19 13:30:58 +0900: Digdag v0.9.9
      Secret 's3.access_key_id' set
      Secret 's3.secret_access_key' set
      Secret 's3.bucket' set
      ...
  4. secretsを確認します。
    • プロジェクトをWorkflowコンソールにプッシュする場合、以下のコマンドで認証情報を確認します。
      $ td wf secrets --project test_project
      2017-06-19 13:54:25 +0900: Digdag v0.9.9
      s3.access_key_id
      s3.bucket
      s3.secret_access_key
      ...
    • Workflowコンソールにプッシュしないで、Workflowをローカルで動かす場合、以下のコマンドで認証情報を確認します。
      $ td wf secrets --local
      2017-06-19 14:03:19 +0900: Digdag v0.9.9
      s3.access_key_id
      s3.bucket
      s3.secret_access_key
      ...

 

注意点

  1. secretsがechoできないこと
    • 設定した認証情報が正しく反映されているかどうかを確認するために、echo>:${secret:s3.access_key_id}で認証情報を出力してみましたが、何も出力されません。digdagのソースコードを確認したところ、secrets機能を使って設定した認証情報がecho>:オペレーターで出力されないように作られています。

  2. 数値をコーテーションで囲んでおくこと
    • SFDCのClient Secretや、Google AnalyticsのClient IDみたいな認証情報を数値のまま記述すると丸め誤差が起きてしまい、値が変わってしまいます。ですので、数値のみの認証情報をシングルコーテーションで囲んで文字列として記述しましょう。
      sfdc:
        # ユーザ
        username: AAAAAAAAAAAAAA
        # パスワード  
        password: BBBBBBBBBBBBBBBB
        # クライアントID  
        client_id: CCCCCCCCCCCCCCCCC
        # クライアントシークレット
        client_secret: '12345678901234567890'
  3. secrets.ymlファイルをWorkflowプロジェクトの配下に置かないこと
    • 当たり前のことですが、secrets.ymlファイルをWorkflowプロジェクトの配下に置くと、Workflowプロジェクトをプッシュすると際secrets.ymlもWorkflowコンソールにプッシュされるので、secrets機能を利用する意味がなくなります。

     

参考サイト

 

 

戻る
Salesforce Live Agentのプリチャットフォームを設定する
Salesforce Live Agentのプリチャットフォームを設定する

本ブログはUrminder Singhが寄稿した記事を抄訳したものです。 原文 ”Pre-Chat Form Setup in Salesforce Live Agent” はこちらからご覧いただけます。   … ...

次へ
Salesforceの火星移住計画にチャレンジしてみた!
Salesforceの火星移住計画にチャレンジしてみた!

いきなりこのタイトルを見て戸惑う方もいらっしゃると思いますので、まずは簡単に内容を紹介をしたいと思います。 この記事はTrailheadで最近公開された一つのモジュール 「Build a Mars Communic...

アピリオまでお気軽にお問合せください

ご質問はこちら