

# Amazon SageMaker Lakehouse との Aurora ゼロ ETL 統合の作成
<a name="zero-etl.creating-smlh"></a>

Amazon SageMaker Lakehouse と Aurora ゼロ ETL 統合を作成するときは、ソース Aurora DB クラスターとターゲット AWS Glue マネージドカタログを指定します。暗号化設定をカスタマイズし、タグを追加することもできます。Aurora はソース DB クラスターとそのターゲットの間の統合を作成します。統合がアクティブになると、ソースDB クラスターに挿入したデータはすべて、設定されたターゲットにレプリケートされます。

## 前提条件
<a name="zero-etl.create-prereqs-smlh"></a>

Amazon SageMaker Lakehouse とゼロ ETL 統合を作成する前に、ソースDB クラスターとターゲット AWS Glue マネージドカタログを作成する必要があります。また、DB クラスターを承認済みの統合ソースとして追加することによって、カタログへのレプリケーションを許可する必要があります。

これらの各手順の実行方法については、「[Aurora ゼロ ETL 統合の開始方法](zero-etl.setting-up.md)」を参照してください。

## 必要なアクセス許可
<a name="zero-etl.create-permissions-smlh"></a>

Amazon SageMaker Lakehouse とのゼロ ETL 統合を作成するには、特定の IAM アクセス許可が必要です。少なくとも、次のアクションを実行するためのアクセス権限が必要です。
+ ソースの Aurora DB クラスターのゼロ ETL 統合を作成します。
+ すべてのゼロ ETL 統合を表示および削除します。
+ ターゲット AWS Glue マネージドカタログへのインバウンド統合を作成します。
+ AWS Glue マネージドカタログで使用される Amazon S3 バケットにアクセスします。
+ カスタム暗号化が設定されている場合は、暗号化に AWS KMS キーを使用します。
+ Lake Formation にリソースを登録します。
+ AWS Glue マネージドカタログにリソースポリシーを配置して、インバウンド統合を承認します。

以下のサンプルポリシーは、Amazon SageMaker Lakehouse との統合の作成と管理に必要な[最小特権](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)を示しています。ユーザーまたはロールが `AdministratorAccess` マネージドポリシーなど、より広範なアクセス許可を持つ場合、これらの正確なアクセス許可を必要としない場合があります。

さらに、ターゲット AWS Glue マネージドカタログでリソースポリシーを設定して、インバウンド統合を承認する必要があります。次に、以下の AWS CLI コマンドを実行してリソースポリシーを適用します。

### ターゲットカタログのインバウンド統合を承認するサンプル AWS CLI コマンド
<a name="zero-etl.create-sample-policy-smlh"></a>

```
aws glue put-resource-policy \
      --policy-in-json  '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Principal": {
            "Service": "glue.amazonaws.com"
        },
        "Action": [
            "glue:AuthorizeInboundIntegration"
        ],
        "Resource": ["arn:aws:glue:region:account_id:catalog/catalog_name"],
        "Condition": {
            "StringEquals": {
                "aws:SourceArn": "arn:aws:rds:region:account_id:db:source_name"
            }
        }
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "account_id"
        },
        "Action": ["glue:CreateInboundIntegration"],
        "Resource": ["arn:aws:glue:region:account_id:catalog/catalog_name"]
    }
    ]
}' \
      --region region
```

**注記**  
Glue カタログの Amazon リソースネーム (ARN) 形式は次のようになります。  
Glue カタログ – `arn:aws:glue:{region}:{account-id}:catalog/catalog-name`

### 別のアカウントでターゲット AWS Glue マネージドカタログを選択する
<a name="zero-etl.create-permissions-cross-account-smlh"></a>

別の AWS アカウント にあるターゲット AWS Glue マネージドカタログを指定する場合は、現在のアカウントのユーザーがターゲットアカウントのリソースにアクセスするのを許可するロールを作成する必要があります。詳細については、「[所有している別の AWS アカウント の IAM ユーザーにアクセス権を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)」を参照してください。

ロールには次のアクセス許可が必要です。これにより、ユーザーはターゲットアカウントで使用可能な AWS Glue カタログを表示できます。

#### 必要なアクセス許可ポリシー
<a name="zero-etl.cross-account-sample-policy-smlh"></a>

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "glue:GetCatalog"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

ロールには、ターゲットアカウント ID を指定する次の信頼ポリシーが必要です。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "AWS": "arn:aws:iam::111122223333:root"
         },
         "Action":"sts:AssumeRole"
      }
   ]
}
```

------

ロールを作成する手順については、「[カスタム信頼ポリシーを使用したロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)」を参照してください。

## Amazon SageMaker Lakehouse とのゼロ ETL 統合の作成
<a name="zero-etl.create-smlh"></a>

AWS マネジメントコンソール、AWS CLI、または RDS API を使用して Amazon SageMaker Lakehouse とのゼロ ETL 統合を作成できます。

**重要**  
Amazon SageMaker Lakehouse とのゼロ ETL 統合は、更新または再同期オペレーションをサポートしていません。作成後に統合で問題が発生した場合は、統合を削除して新しい統合を作成する必要があります。

### RDS コンソール
<a name="zero-etl.create-console-smlh"></a>

**Amazon SageMaker Lakehouse とゼロ ETL 統合を作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. 左側のナビゲーションペインから、**[ゼロ ETL 統合]** を選択します。

1. **[ゼロ ETL 統合の作成]** を選択します。

1. **[統合 ID]** に、統合の名前を入力します。名前には最大 63 文字の英数字を使用でき、ハイフンを含めることができます。

1. **[次へ]** を選択します。

1. **[ソース]** で、データの送信元となる Aurora DB クラスターを選択します。
**注記**  
DB クラスターパラメータが正しく設定されていないと、RDS から通知されます。このメッセージを受け取った場合は、**[Fix it for me]** を選択するか、手動で設定することができます。手動で修正する手順については、「[ステップ 1: カスタム DB クラスターのパラメータグループを作成する](zero-etl.setting-up.md#zero-etl.parameters)」を参照してください。  
DB クラスターパラメータを変更するには再起動が必要です。統合を作成する前に、再起動が完了し、新しいパラメータ値ののクラスターへの適用が正常に完了している必要があります。

1. (オプション) **[データフィルタリングオプションのカスタマイズ]** を選択して、統合にデータフィルターを追加します。データフィルターを使用して、ターゲット Amazon SageMaker Lakehouse へのレプリケーションの範囲を定義できます。詳細については、「[Aurora ゼロ ETL 統合でのデータフィルタリング](zero-etl.filtering.md)」を参照してください。

1. ソース DB クラスターが正常に設定されたら、**[次へ]** を選択します。

1. **[ターゲット]** で、以下を実行します。

   1. (オプション) Amazon SageMaker Lakehouse ターゲットとして別の AWS アカウントを使用するには、**[別のアカウントを指定]** を選択します。次に、AWS Glue カタログを表示するアクセス許可を持つ IAM ロールの ARN を入力します。IAM ロールの作成手順については、「[別のアカウントでターゲット AWS Glue マネージドカタログを選択する](#zero-etl.create-permissions-cross-account-smlh)」を参照してください。

   1. **AWS Glue カタログ**で、ソースDB クラスターからのレプリケートデータのターゲットを選択します。既存の AWS Glue マネージドカタログをターゲットとして選択できます。

   1. ターゲット IAM ロールは、ターゲットカタログに対する記述アクセス許可を必要とし、次のアクセス許可が必要です。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": "glue:GetCatalog",
                  "Resource": [
                      "arn:aws:glue:us-east-1:111122223333:catalog/*",
                      "arn:aws:glue:us-east-1:111122223333:catalog"
                  ]
              }
          ]
      }
      ```

------

      ターゲット IAM ロールには、次の信頼関係が必要です。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "glue.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. [ステップ 3b: Amazon SageMaker Lakehouse ゼロ ETL 統合用の AWS Glue カタログを作成する](zero-etl.setting-up.md#zero-etl-setting-up.sagemaker) で作成された Lake Formation 管理者ロールを使用して、ターゲット AWS Glue マネージドカタログの記述アクセス許可をターゲット IAM ロールに付与する必要があります。
**注記**  
指定された AWS Glue マネージドカタログのリソースポリシーまたは設定が正しく設定されていない場合、RDS から通知されます。このメッセージを受け取った場合は、**[修正をお願いする]** を選択するか、手動で設定することができます。  
選択したソースとターゲットの AWS アカウント が異なる場合、Amazon RDS はこれらの設定を自動的に修正できません。他のアカウントに移動し、SageMaker Unified Studio で手動で修正する必要があります。

1. ターゲット AWS Glue マネージドカタログが正しく設定されたら、**[次へ]** を選択します。

1. (オプション) **[タグ]** で、1 つ以上のタグを統合に追加します。詳細については、「[Amazon Aurora および Amazon RDS リソースのタグ付け](USER_Tagging.md)」を参照してください。

1. **[暗号化]** として、統合の暗号化方法を指定します。デフォルトでは、RDS はすべての統合を AWS 所有のキー で暗号化します。代わりにカスタマーマネージドキーを選択するには、**[暗号化設定のカスタマイズ]** を有効にして、暗号化に使用する KMS キーを選択します。詳細については、「[Amazon Aurora リソースの暗号化](Overview.Encryption.md)」を参照してください。

   オプションで、暗号化コンテキストを追加します。詳しくは、*AWS Key Management Service デベロッパーガイド*の [Encryption context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) を参照してください。
**注記**  
Amazon RDS は、追加する以下に加えて、次の暗号化コンテキストペアを追加します。  
`aws:glue:integration:arn` - `IntegrationArn`
`aws:servicename:id` - `glue`
これにより、追加できるペアの総数が 8 から 6 に減り、許可の制約の全体的な文字数制限に影響します。詳細については、「AWS Key Management Service デベロッパーガイド**」の「[Using grant constraints](https://docs.aws.amazon.com/kms/latest/developerguide/create-grant-overview.html#grant-constraints)」を参照してください。

1. [**次へ**] を選択します。

1. 統合設定を確認し、**[ゼロ ETL 統合を作成]** を選択します。

   作成に失敗した場合は、トラブルシューティングの手順について「[Aurora ゼロ ETL 統合のトラブルシューティング](zero-etl.troubleshooting.md)」を参照してください。

統合のステータスは、作成中は `Creating` であり、ターゲット Amazon SageMaker Lakehouse のステータスは `Modifying` です。この間、カタログをクエリしたり、設定を変更したりすることはできません。

統合が正常に作成されると、統合とターゲット Amazon SageMaker Lakehouse の両方のステータスが `Active` に変わります。

### AWS CLI
<a name="zero-etl.create-cli-smlh"></a>

AWS CLI を使用してゼロ ETL 統合用のターゲット AWS Glue マネージドカタログを準備するには、まず [create-integration-resource-property](https://docs.aws.amazon.com/cli/latest/reference/rds/create-integration.html) コマンドを次のオプションとともに使用する必要があります。
+ `--resource-arn` – 統合のターゲットとなる AWS Glue マネージドカタログの ARN を指定します。
+ `--target-processing-properties` – ターゲット AWS Glue マネージドカタログにアクセスするための IAM ロールの ARN を指定します。

```
aws glue create-integration-resource-property --region us-east-1
 --resource-arn arn:aws:glue:region:account_id:catalog/catalog_name \
 --target-processing-properties '{"RoleArn" : "arn:aws:iam::account_id:role/TargetIamRole"}'
```

AWS CLI を使用して Amazon SageMaker Lakehouse とのゼロ ETL 統合を作成するには、[create-integration](https://docs.aws.amazon.com/cli/latest/reference/rds/create-integration.html) コマンドに以下のオプションを指定して使用します。
+ `--integration-name` — 統合の名前を指定します。
+ `--source-arn` — 統合のソースとなる Aurora DB クラスターの ARN を指定します。
+ `--target-arn` – 統合のターゲットとなる AWS Glue マネージドカタログの ARN を指定します。

**Example**  
Linux、macOS、Unix の場合:  

```
aws rds create-integration \
    --integration-name my-sagemaker-integration \
    --source-arn arn:aws:rds:{region}:{account-id}:cluster:my-db \
    --target-arn arn:aws:glue:{region}:{account-id}:catalog/catalog-name
```
Windows の場合:  

```
aws rds create-integration ^
    --integration-name my-sagemaker-integration ^
    --source-arn arn:aws:rds:{region}:{account-id}:cluster:my-db ^
    --target-arn arn:aws:glue:{region}:{account-id}:catalog/catalog-name
```

### RDS API
<a name="zero-etl.create-api-smlh"></a>

Amazon RDS API を使用して Amazon SageMaker とのゼロ ETL 統合を作成するには、以下のパラメータを指定して [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateIntegration.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateIntegration.html) オペレーションを使用します。

**注記**  
カタログ名は 19 文字に制限されています。カタログ名として使用する場合は、IntegrationName パラメータがこの要件を満たしていることを確認します。
+ `IntegrationName` — 統合の名前を指定します。
+ `SourceArn` — 統合のソースとなる Aurora DB クラスターの ARN を指定します。
+ `TargetArn` – 統合のターゲットとなる AWS Glue マネージドカタログの ARN を指定します。

## カスタマーマネージドキーでの統合の暗号化
<a name="zero-etl.create-encrypt-smlh"></a>

Amazon SageMaker との統合の作成時に AWS 所有のキー ではなくカスタム KMS キーを指定する場合、キーポリシーは SageMaker Unified Studio サービスプリンシパルに `CreateGrant` アクションへのアクセスを提供する必要があります。さらに、現在のユーザーに `DescribeKey` アクションと `CreateGrant` アクションの実行を許可する必要があります。

次のポリシー例は、キーポリシーに必要なアクセス許可を指定する方法を示しています。アクセス許可の範囲をさらに狭めるためのコンテキストキーが含まれています。

### キーポリシーの例
<a name="zero-etl.kms-sample-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Key policy",
    "Statement": [
        {
            "Sid": "EnablesIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "GlueServicePrincipalAddGrant",
            "Effect": "Allow",
            "Principal": {
                "Service": "glue.amazonaws.com"
            },
            "Action": "kms:CreateGrant",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:{context-key}":"{context-value}"
                },
                "ForAllValues:StringEquals": {
                    "kms:GrantOperations": [
                        "Decrypt",
                        "GenerateDataKey",
                        "CreateGrant"
                    ]
                }
            }
        },
        {
            "Sid": "AllowsCurrentUserRoleAddGrantKMSKey",
            "Effect": "Allow",
            "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/{role-name}"
            },
            "Action": "kms:CreateGrant",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:{context-key}":"{context-value}",
                    "kms:ViaService": "rds.us-east-1.amazonaws.com"
                },
                "ForAllValues:StringEquals": {
                    "kms:GrantOperations": [
                        "Decrypt",
                        "GenerateDataKey",
                        "CreateGrant"
                    ]
                }
            }
        },
        {
            "Sid": "AllowsCurrentUserRoleRetrieveKMSKeyInformation",
            "Effect": "Allow",
            "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/{role-name}"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*"
        }
    ]
}
```

------

詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[キーポリシーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)」を参照してください。

## 次のステップ
<a name="zero-etl.create-next-smlh"></a>

Amazon SageMaker とのゼロ ETL 統合を正常に作成したら、ソース Aurora DB クラスターへのデータの追加と、Amazon SageMaker Lakehouse でのクエリを開始できます。データは自動的にレプリケートされ、分析や機械学習のワークロードで利用できるようになります。