

# 考慮事項と制限事項
<a name="security-lf-enable-considerations"></a>

AWS Glue で Lake Formation を使用する場合は、次の考慮事項と制限事項を検討してください。

Lake Formation を使用した AWS Glue は、AWS GovCloud (米国東部) と AWS GovCloud (米国西部) を除く、サポートされているすべてのリージョンで使用できます。
+ AWS Glue は、Apache Hive テーブルおよび Apache Iceberg テーブルに対してのみ Lake Formation を介したきめ細かなアクセスコントロールをサポートします。Apache Hive 形式には、Parquet、ORC、および CSV が含まれます。
+ Lake Formation は Spark ジョブでのみ使用できます。
+ Lake Formation を使用した AWS Glue は、ジョブ全体で 1 つの Spark セッションのみをサポートします。
+ Lake Formation が有効になっている場合、1 つのシステムドライバー、システムエグゼキュター、1 つのユーザードライバー、およびオプションでユーザーエグゼキュター (ジョブに UDF または `spark.createDataFrame` がある場合に必要) が必要なため、AWS Glue にはより多くのワーカーが必要です。
+ Lake Formation を使用した AWS Glue は、リソースリンクを介して共有されるクロスアカウントテーブルクエリのみをサポートします。resource-link には、ソースアカウントのリソースと同じ名前を付ける必要があります。
+ Glue AWS ジョブのきめ細かなアクセスコントロールを有効にするには、`--enable-lakeformation-fine-grained-access` ジョブパラメータを渡します。
+ AWS Glue マルチカタログ階層で動作するように AWS Glue ジョブを設定できます。AWS Glue `StartJobRun` API で使用する設定パラメータの詳細については、「[Working with AWS Glue multi-catalog hierarchy on EMR Serverless](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/external-metastore-glue-multi.html)」を参照してください。
+ 次のサポートはありません。
  + 耐障害性のある分散データセット (RDD)
  + Spark ストリーミング
  + Lake Formation に付与されたアクセス許可による書き込み
  + ネストされた列のアクセスコントロール
+ AWS Glue は、以下を含むシステムドライバーの完全な分離を損なわせる可能性のある機能をブロックします。
  + UDT、HiveUDF およびカスタムクラスを含むユーザー定義関数
  + カスタムデータソース
  + Spark 拡張機能、コネクタ、メタストア用の追加の jar の提供
  + `ANALYZE TABLE` コマンド
+ アクセスコントロールを適用するために、`EXPLAIN PLAN` および `DESCRIBE TABLE` などの DDL オペレーションは、限定された情報を公開しません。
+ AWS Glue は、Lake Formation 対応アプリケーションのシステムドライバー Spark ログへのアクセスを制限します。システムドライバーはより多くのアクセス権を使用して実行されるため、システムドライバーが生成するイベントとログには機密情報が含まれる可能性があります。許可されていないユーザーまたはコードがこの機密データにアクセスできないように、AWS Glue はシステムドライバーログへのアクセスを無効にしました。トラブルシューティングについては、AWS のサポートにお問い合わせください。
+ テーブルの場所を Lake Formation に登録した場合、データアクセスパスは、AWS Glue ジョブのランタイムロールの IAM アクセス許可に関係なく、Lake Formation に保存された認証情報を経由します。テーブルの場所に登録されたロールを誤って設定すると、テーブルの場所に対して S3 IAM アクセス許可を持つロールを使用して送信されたジョブは失敗します。
+ Lake Formation テーブルへの書き込みでは、Lake Formation に付与されたアクセス許可ではなく、IAM アクセス許可が使用されます。ジョブランタイムロールに必要な S3 アクセス許可がある場合は、それを使用して書き込みオペレーションを実行できます。

Apache Iceberg を使用する場合の考慮事項と制限事項を次に示します。
+ Apache Iceberg はセッションカタログでのみ使用でき、任意の名前のカタログでは使用できません。
+ Lake Formation に登録されている Iceberg テーブルは、メタデータテーブル `history`、`metadata_log_entries`、`snapshots`、`files`、`manifests`、`refs` のみをサポートします。AWSGlue は `partitions`、`path`、`summaries` などの機密データを持つ可能性のある列を非表示にします。この制限は、Lake Formation に登録されていない Iceberg テーブルには適用されません。
+ Lake Formation に登録していないテーブルは、すべての Iceberg ストアドプロシージャをサポートしています。`register_table` プロシージャと `migrate` プロシージャは、どのテーブルでもサポートされていません。
+ V1 の代わりに Iceberg DataFrameWriterV2 を使用することをお勧めします。

## ワーカー割り当ての例
<a name="security-lf-considerations-worker-allocation"></a>

以下のパラメーターを使用して設定されたジョブの場合:

```
--enable-lakeformation-fine-grained-access=true  
--number-of-workers=20
```

ワーカーの割り当ては次のとおりです。
+ ユーザードライバーの 1 つのワーカー。
+ システムドライバーの 1 つのワーカー。
+ ユーザーエグゼキューター用に予約されている残りの 18 個のワーカー (つまり 2 個のワーカー) の 10%。
+ システムエグゼキューターに割り当てられるワーカーは最大 16 個です。

自動スケーリングを有効にすると、ユーザーエグゼキューターは必要に応じてシステムエグゼキューターから未割り当ての容量を利用できます。

## ユーザーエグゼキューターの割り当ての制御
<a name="security-lf-considerations-user-exec-allocation"></a>

次の設定を使用して、ユーザーエグゼキューターの予約率を調整できます。

```
--conf spark.dynamicAllocation.maxExecutorsRatio=<value between 0 and 1>
```

この設定では、使用可能なキャパシティの合計に対して予約されているユーザーエグゼキュターの数を微調整制御できます。