キネシスデータファイア📊


あなたのアプリケーションでまだ解析を実装していない場合は、ゲームの背後にある.現代の最も貴重な資産はこれは今後も成長するだろう
では、分析は何ですか?Analyticsを使用すると、それらを求めることなく、クライアントからのフィードバックを得ることができる、データを収集することができますどのようにあなたのユーザーは、実行している、訪問などを実行している参照してください.このデータを収集した後、分析することができますし、より便利な機能をターゲットし、それゆえ、ユーザーを分析してデータをより友好的にあなたのUIを更新
基本的には、あなたのアプリケーションがより成熟して、ユーザーにとって便利で、あなたのビジネスのためにより成功するようになる👨🏻‍🚀
このブログでは、我々はストリームS 3バケツ(AWSのCDKを使用して)をストリームを提供するAWS
Amazon KinesisデータFireSomeは、データ湖、データ店と分析論サービスに確実にストリーミングデータをロードする最も簡単な方法です
コンテンツを2つの部分に分割しましょう

インフラストラクチャ
CDKを使用してリソースを提供します.これは、typescriptのような言語を使ってコードを書くのを助けます.私はどのようにS 3のバケツ&ファイアホースを作成する方法に焦点を当て、どのように私たちの認証されていないユーザーにそれを使用するために許可を与えるために、私は非常に認知を作成する方法に深く行くことをお勧めしますが、しかし、私たちのスコープは、認証についてではないので、私はそれに焦点を当てないと思います.を介して公式のCDKドキュメントをチェックすることができますthis link
リソース図:

CDKスタック
const bucket = new s3.Bucket(this, bucketName, {
  bucketName,
});

const result = bucket.addToResourcePolicy(new iam.PolicyStatement({
  actions: ['s3:GetObject'],
  resources: [bucket.arnForObjects('file.txt')],
  principals: [new iam.AccountRootPrincipal()],
}));

const s3Destination = new destinations.S3Bucket(bucket, {
  dataOutputPrefix,
  errorOutputPrefix,
  bufferingInterval: Duration.minutes(bufferingInterval),
  bufferingSize: Size.mebibytes(bufferingSize),
});

const stream = new firehose.DeliveryStream(this, 'Delivery Stream', {
  deliveryStreamName: streamName,
  destinations: [s3Destination],
});
bucketName: 'your-bucket-name',
streamName: 'your-stream-name',
dataOutputPrefix: 'myFirehose/DeliveredYear=!{timestamp:yyyy}/anyMonth/rand=!{firehose:random-string}',
errorOutputPrefix: 'myFirehoseFailures/!{firehose:error-output-type}/!{timestamp:yyyy}/anyMonth/!{timestamp:dd}',
bufferingInterval: 2,
bufferingSize: 8,
  • まず、バケツを作成し、リソースポリシーを追加します
  • 我々の目的地は、以下のパラメタを持ちます

  • S 3に正常に配信されるファイルのDataOutputPrefix

  • 失敗したレコードのエラー出力を前に
  • デフォルトでは、バッファサイズ(BufferingSize)は5 MIBであり、バッファ間隔は5分(バッファリング間隔)です.しかし、私たちの例では
  • 指定した宛先に配信される前に、受信データをバッファリングします.配達データの量が若干の閾値(「バッファサイズ」)を超えたまで、または、最後のデータ配送が発生した時から若干の閾値(「バッファ間隔」)を超えるまで、配信ストリームは待ちます.
    我々の認知に関して、そして、どのようにフロントエンドから記録を置くことができるかについて、我々は我々の認証されたと認証されていないユーザーにこの方針を加えます
    {
      effect: iam.Effect.ALLOW,
      actions: [
        'firehose:PutRecord',
        'firehose:PutRecordBatch'
      ],
      resources: ['your-firehose-arn']
    }
    

    2 -反応アプリ
    Amplifyは、私たちのAWSリソースを使用して迅速かつ容易にする目的の構築されたツールとサービスのセットですthis link
  • 最初にどのように我々の分析を設定できるかを見てみましょう
  • アプリ.js
    import { Analytics, AWSKinesisFirehoseProvider } from 'aws-amplify';
    
    Amplify.configure(awsConfig);
    Analytics.addPluggable(new AWSKinesisFirehoseProvider);
    

  • AwsConfigは、このオブジェクトを追加する内部の設定を保持するJSONファイルです
  • Analytics: {
      AWSKinesisFirehose: {
        region: REGION
      }
    }
    
  • 今すぐ私たちの空想ボタンを追加することができます
  • const onClick = async () => {
      const now = new Date;
      const data = {
        id: now.getTime(),
        action: 'Add Button',
        component: 'Button',
        user: 'the username of user',
        source: 'Web',
      };
    
      try {
        await Analytics.record({
          data: data,
          streamName: FIREHOSE,
        }, 'AWSKinesisFirehose');
      } catch (error) {
        console.log(error);
      }
    }
    
    <button
      onClick={onClick}
    >Add Button</button>
    

  • 火の粉は、我々が以前CDKからつくった我々のキネシス消防署名です

  • 解析論.我々は我々のS 3のバケツからそれを見ることができる2分後に我々のデータを簡単に私たちのS 3のバケツから私たちのレコードを置く場所は、私たちのデータは、それがどのようにスケーリングすることができるかを示すためにいくつかの属性を追加し、分析のための非常に有用なデータを送信することができますか
  • 最後に、我々のS 3バケツの中の我々の結果
    {"id":1637695583710,"action":"Add Button","component":"Button","user":"the username of user","source":"Web"}
    
    この例では、私は私たちのトピックにコンテンツスコープを制限しようとした、私は単純なボタンのコンポーネントを使用して、これはあなたの期待&創造性を超えて行くことができる、あなたのアプリケーションを強化&改善を支援するユーザーから非常に有用で有益なデータを収集することができます🙂