雲形成テンプレートを用いたAppFlowの流れの生成


Salesforceは、管理のための素晴らしいツールであり、連絡を取り合って、我々のメンバーをモニターして、我々の研究者はロジスティック回帰またはニューラルネットワークのようなモデルを作成して、既存のモデルを確認するためにそのデータを使用しています.
Salesforceでデータを照会するには、SOQLを使用したり、ストレージにデータを取得したり、Athenaなどのより適切なツールを使用してデータを照会できます.
安心同盟国での使用AWS AppFlow , AWS AppFlowはSaaSアプリケーションとSASアプリケーションの間のデータを安全に交換することができる完全に管理された統合サービスです.
assuredmakersで我々は、AppFlowを使用して、SFオブジェクトをフェッチして、S 3の上でParquetファイルとして保存します、後で、我々のETL\LTEプロセスはファイルをきれいにして、変えて、豊かにします、そして、我々は彼らの使用のために研究者に彼らに貢献することができます.
私は時間の不足のためにこのポストでETLSまたはParquetに飛び込むつもりでありません、しかし、私はAppFlowを使っている複数のSFオブジェクトを取り出して、このチェーンの最初のリンクに触れたいです.
AppFlowのコンソールを使用して手動で1つのスケジュールされたフローを作成することは非常に困難ではありません、そして、それはSFから1つのオブジェクトをフェッチします、しかし、あなたが我々がそうするように完全にSFを利用するならば、あなたは多くの流れ(我々のケース~ 60のオブジェクト* 2環境で)を作成する必要があるでしょう.
プログラムを作成する方法の例はたくさんあります.
  • “オンデマンド”フローとスケジュールされていません.
  • BOTO 3に依存します.
  • あなたがそれらを取得するためにオブジェクトのすべてのフィールドを知ることを強制します.
  • このポストでは、私はどのように誰もがスケジュールされた流れを作成するために使用できる一般的な雲形成テンプレートを生成する方法のスニペットを与える.
    あなたは、AAの公共Gitlabレポでテンプレートと関連コードを見つけることができます.
    AWSTemplateFormatVersion: '2010-09-09'
    Transform: AWS::Serverless-2016-10-31
    Description: Dumping SF object to S3
    Parameters:
      ObjectName:
        Type: String
      ScheduleStartTime:
        Type: String
      S3Bucket:
        Type: String
      S3Prefix:
        Type: String
      Connector:
        Type: String
    
    テンプレートは5つのパームを受け取ります:S3Bucket and S3Prefix バケツ名とプレフィックスは結果を格納する.ObjectName Salesforceオブジェクトを取得します.ScheduleStartTime は、UnixTimeの流れの最初の出現のための科学的表記法です.
    すなわち、2022-04-11 00:00:00+00:00 ScheduleStatTimeは1.64962440E9 , RepoはScheduleStatTimeを計算するための小さなPythonスクリプトを持っています.Connector 私たちがSFに接続するために使用するコネクタの名前は、コネクタを取得する最も簡単な方法は手動でappflowを使用してコネクタを作成することです.
    Resources:
      GenericFlow:
        Type: AWS::AppFlow::Flow
        Properties:
          Description:
            Fn::Join:
            - ''
            - - 'App Flow for '
              - Ref: ObjectName
              - ' object'
          DestinationFlowConfigList:
          - ConnectorType: S3
            DestinationConnectorProperties:
              S3: 
                BucketName: Ref S3Bucket
                BucketPrefix: Ref S3Prefix
                S3OutputFormatConfig:
                  AggregationConfig:
                    AggregationType: None
                  FileType: PARQUET
                  PrefixConfig:
                    PrefixType: PATH_AND_FILENAME
                    PrefixFormat: DAY
    
    パーケメントとしてS 3プレフィックス/年/月/日で保存されます
          FlowName: Ref: ObjectName
          SourceFlowConfig:
            ConnectorProfileName: Ref Connector
            ConnectorType: Salesforce
            SourceConnectorProperties:
              Salesforce:
                EnableDynamicFieldUpdate: true
    
    EnableDynamicFieldUpdate SFオブジェクトのフィールドが変更され、それに応じて流れを更新するたびにチェックします.
                IncludeDeletedRecords: false
                Object:
                  Ref: ObjectName
          Tasks:
    
    Map_all と空EXCLUDE_SOURCE_FIELDS_LIST 配列は、マジックが実際にある場所です.これらの2つがなければ、オブジェクトから1つずつすべてのフィールドをマップする必要があります!次に、新しいフィールドをオブジェクトに追加すると、テンプレートを変更して再配備する必要があります.Map_all 私たちのトラブルを保存します.
          - TaskType: Map_all
            SourceFields: []
            TaskProperties:
            - Key: EXCLUDE_SOURCE_FIELDS_LIST
              Value: '[]'
            ConnectorOperator:
              Salesforce: NO_OP
          TriggerConfig:
            TriggerType: Scheduled
            TriggerProperties:
              DataPullMode: Complete
              ScheduleExpression: rate(1days)
              ScheduleOffset: 0
              ScheduleStartTime:
                Ref: ScheduleStartTime
    
    
    ScheduleExpression 何が流れの再発生率であるか(私の例では、それは毎日の再出現です).
    テンプレートはsam deploy そして、1回アクティブにする必要があります.
    手動でフローを設定した後に、手動でフローを設定した後に、BAT 3、AWS CLI、あるいはAWS Explorerなどの複数のツールを使用して設定をコピーできます.
    サインオフ、AAへのリンク
    仕事https://www.assuredallies.com/careers/