湖AWS湖形成を用いたデータ共有


湖の形成は確実にビジネスユニット間のデータを共有し、頭痛を引き起こすことなくソリューションをスケールする組織を可能にします.データを別のチームに属して別のAWSアカウントに格納することができます.
データ共有を可能にするAWSサービス
AWS接着剤
2 )湖形成
AWS接着剤
AWSの接着剤は、データカタログの作成に役立つデータリポジトリのクロールを可能にする管理サービスです.
ジョブは、接着剤によって提供される抽出、変換、およびロード(ETL)ツールです.困難の1つは、IAMの役割とポリシーでロールベースのアクセス制御を使用して接着剤でアクセスを共有することができますが、これは基礎となるストレージメカニズムの知識を必要とします.
また、グルーカタログとS 3バケットの両方のポリシーを作成する必要があります.
湖の形成
AWS湖の形成は、アカウント全体のアクセス管理とリソース共有を簡素化します.湖の形成は、SQLの専門家が認識する簡単な付与メカニズムを提供しています.
これらの補助金は、IAMアイデンティティ、AWSアカウント、またはAWS組織またはOU全体に行われる.
湖の形成は、クロスアカウントリソース共有を作成するための補助金を作成した後、AWSリソースアクセスマネージャと統合します.
共有カタログカタログリソースは、ターゲットアカウントの湖形成管理者のローカルデータカタログで表示されます.
解決概要
AWSアカウント間でデータを共有し、マルチソースデータ解析ソリューションを有効にします.
ソリューションコンポーネント
集中データアカウント
1 )データをS 3に格納する
2 )データが見えるようにデータを表示し、スキーマが既知であるカタログ
3 )他のAWSアカウントへのデータの共有
消費データアカウント
1 )ソースアカウントのデータを問い合わせる
以下の図は、これらのコンポーネントがどのように連携して解決するかを示しています.

湖形成の設定
1)湖づくり管理者を置く.
管理者は、アカウント内およびアカウント間のデータカタログリソースへのアクセスを管理することができます.
湖形成管理者は、IAMユーザーまたはIAM役割のどちらでもありえます.
2)IAMから湖形成天然補助物質への湖沼形成許可モデルの変更

3 )集中化データケ
4 ) AWS CLIまたはS 3コンソールからファイルをアップロードする
AWS CLIまたはS 3コンソールからファイルをアップロードできます.
シンク.S 3 :/my source bucket
クローラーを追加し、バケットを読む許可を与え、カタログに書きます
このCFNスタックを使用して、上記の手順に記載のリソースを展開します
AWSTemplateFormatVersion: '2010-09-09'
Description: My data lake source

Resources:
  LakeformationSettings:
    Type: AWS::LakeFormation::DataLakeSettings
    Properties:
      Admins:
        - DataLakePrincipalIdentifier: arn:aws:iam::XXXXXXXXX:role/aws-reserved/sso.amazonaws.com/ap-southeast-2/AWSReservedSSO_AWSAdministratorAccess_85c5426c350156b8
  MySourceDataStore:
    Type: AWS::S3::Bucket
    DeletionPolicy: Delete
    Properties:
      AccessControl: Private
      BucketName: !Sub 'my-source-data-store-${AWS::Region}-${AWS::AccountId}'
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256

  MySourceGlueDatabase:
    Type: AWS::Glue::Database
    Properties:
      CatalogId: !Ref AWS::AccountId
      DatabaseInput:
        Name: my-source-glue-database-demo
        Description: String
  MySourceCrawlerRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: 'Allow'

            Principal:
              Service:
                - 'glue.amazonaws.com'
            Action:
              - 'sts:AssumeRole'
      Path: '/'
      Policies:
        - PolicyName: 'root'
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 'glue:*'
                Resource: '*'
              - Effect: Allow
                Action:
                  - 'logs:CreateLogGroup'
                  - 'logs:CreateLogStream'
                  - 'logs:PutLogEvents'
                  - 'logs:AssociateKmsKey'
                Resource: '*'
              - Effect: Allow
                Action: 's3:ListBucket'
                Resource: !GetAtt MySourceDataStore.Arn
              - Effect: Allow
                Action: 's3:GetObject'
                Resource: !Sub
                  - '${Bucket}/*'
                  - { Bucket: !GetAtt MySourceDataStore.Arn }

  MySourceCrawler:
    Type: AWS::Glue::Crawler
    Properties:
      Name: my-source-data-crawler
      Role: !GetAtt MySourceCrawlerRole.Arn
      DatabaseName: !Ref MySourceGlueDatabase
      Targets:
        S3Targets:
          - Path: !Ref MySourceDataStore
      SchemaChangePolicy:
        UpdateBehavior: 'UPDATE_IN_DATABASE'
        DeleteBehavior: 'LOG'

  SourceCrawlerLakeGrants:
    Type: AWS::LakeFormation::Permissions
    Properties:
      DataLakePrincipal:
        DataLakePrincipalIdentifier: !GetAtt MySourceCrawlerRole.Arn
      Permissions:
        - ALTER
        - DROP
        - CREATE_TABLE
      Resource:
        DatabaseResource:
          Name: !Ref MySourceGlueDatabase

  DatalakeLocation:
    Type: AWS::LakeFormation::Resource
    Properties:
      ResourceArn: !GetAtt  MySourceDataStore.Arn
      RoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess
      UseServiceLinkedRole: true
6 )クローラを展開したときは、接着剤コンソールで見ることができます.

7)当座預金
クロスアカウントのアクセスを有効にするには、湖の形成助成金を追加し、消費者アカウント番号を指定する必要があります.
CrossAccountLakeGrants:
    Type: AWS::LakeFormation::Permissions
    Properties:
      DataLakePrincipal:
        DataLakePrincipalIdentifier: "XXXXXXXXXX" # Consumer account number
      Permissions:
        - SELECT
      PermissionsWithGrantOption:
        - SELECT
      Resource:
        TableResource:
          DatabaseName: !Ref MySourceGlueDatabase
          Name: !Sub 'my_source_data_store_ap_southeast_2_${AWS::AccountId}'

8 )消費者アカウントのセットアップ許可
消費者アカウントとセットアップ湖形成ベース設定にログインしてください:
1)湖形成管理者の設定
AWSTemplateFormatVersion: '2010-09-09'
Description: My consumer data lake setup

Resources:
  LakeformationSettings:
    Type: AWS::LakeFormation::DataLakeSettings
    Properties: 
      Admins: 
        - DataLakePrincipalIdentifier: arn:aws:iam::XXXXXXXXXX:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AWSAdministratorAccess_56cabj890003333

2 )湖づくり補助金の投入

データレイクアカウントのデータベースへのリソースリンクを作成します.残念ながら、これはまだCloudFormation経由で利用できません.湖の形成コンソールで、[データベース]をクリックします.


3 )オープンアテナコンソールでは、あなたのようなデータベースとテーブルスキーマを見ることができます.今、すべてのテーブルを問い合わせて、結果を返すことを確認することです.