SAP HANA 接続
AWS Glue for Spark を使用して、AWS Glue 4.0 以降のバージョンの SAP HANA のテーブルからの読み取りとテーブルへの書き込みを行うことができます。SQL クエリを使用して、SAP HANA から何を読み取るかを定義できます。AWS Glue SAP HANA 接続を通じて AWS Secrets Manager に保存されている JDBC 認証情報を使用して SAP HANA に接続します。
SAP HANA JDBC の詳細については、SAP HANA のドキュメント
SAP HANA 接続の設定
AWS Glue から SAP HANA に接続するには、SAP HANA 認証情報を作成して AWS Secrets Manager シークレットに保存し、そのシークレットを SAP HANA AWS Glue 接続に関連付ける必要があります。SAP HANA サービスと AWS Glue の間のネットワーク接続を設定する必要があります。
SAP HANA に接続するには、いくつかの前提条件を満たす必要がある場合があります。
-
SAP HANA サービスが Amazon VPC 内にある場合は、トラフィックがパブリックインターネットを経由することなく、AWS Glue ジョブが SAP HANA サービスと通信できるように Amazon VPC を設定します。
Amazon VPC で、AWS Glue がジョブの実行中に使用する [VPC]、[サブネット]、および [セキュリティグループ] を特定または作成します。さらに、SAP HANA エンドポイントとこの場所の間のネットワークトラフィックを許可するように Amazon VPC が設定されているようにする必要があります。ジョブでは、SAP HANA JDBC ポートとの TCP 接続を確立する必要があります。SAP HANA ポートの詳細については、SAP HANA のドキュメント
を参照してください。ネットワークレイアウトに基づいて、セキュリティグループルール、ネットワーク ACL、NAT ゲートウェイ、およびピアリング接続の変更が必要になる場合があります。 -
SAP HANA エンドポイントがインターネットにアクセスできる場合、追加の前提条件はありません。
SAP HANA に対する接続を設定するには:
AWS Secrets Manager で、SAP HANA 認証情報を使用してシークレットを作成します。Secrets Manager でシークレットを作成するには、AWS Secrets Manager ドキュメントの「AWS Secrets Manager シークレットを作成する」にあるチュートリアルに従ってください。シークレットを作成したら、次のステップのためにシークレット名
secretName
を保存しておきます。-
[key/value ペア] を選択する際に、
saphanaUsername
という値を持つキーuser
のペアを作成します。 -
[key/value ペア] を選択する際に、
saphanaPassword
という値を持つキーpassword
のペアを作成します。
-
AWS Glue コンソールで、「AWS Glue 接続の追加」にあるステップに従って接続を作成します。接続を作成したら、将来的に AWS Glue で使用するために、接続名
connectionName
を維持します。[接続タイプ] を選択する際に、[SAP HANA] を選択します。
[SAP HANA URL] を入力する場合は、インスタンスの URL を入力します。
SAP HANA JDBC URL の形式は
jdbc:sap://
ですsaphanaHostname
:saphanaPort
/?databaseName
=saphanaDBname
,ParameterName
=ParameterValue
AWS Glue には次の JDBC URL パラメータが必要です。
databaseName
– 接続先の SAP HANA のデフォルトデータベース。
[AWS Secret] をクリックして、
secretName
を入力します。
AWS Glue SAP HANA 接続を作成した後、AWS Glue ジョブを実行する前に次のステップを実行する必要があります。
AWS Glue ジョブに関連付けられている IAM ロールに
secretName
を読み取るアクセス許可を付与します。AWS Glue ジョブ設定で、追加のネットワーク接続として
connectionName
を指定します。
SAP HANA テーブルからの読み取り
前提条件:
-
読み取り元とする SAP HANA テーブル。テーブルの識別情報が必要になります。
テーブルは、SAP HANA テーブル名とスキーマ名 (形式:
) を使用して指定できます。テーブルがデフォルトのスキーマ「public」にある場合、スキーマ名と「.」区切り文字は必要ありません。このschemaName
.tableName
tableIdentifier
を呼び出します。データベースはconnectionName
の JDBC URL パラメータとして指定されることに注意してください。 -
認証情報を提供するように設定された AWS Glue SAP HANA 接続。認証情報を設定するには、前の手順「SAP HANA に対する接続を設定するには」のステップを実行します。AWS Glue 接続、
connectionName
の名前が必要になります。
例:
saphana_read_table = glueContext.create_dynamic_frame.from_options( connection_type="saphana", connection_options={ "connectionName": "
connectionName
", "dbtable": "tableIdentifier
", } )
SELECT SQL クエリを指定して、DynamicFrame に返される結果をフィルタリングすることもできます。query
を設定する必要があります。
例:
saphana_read_query = glueContext.create_dynamic_frame.from_options( connection_type="saphana", connection_options={ "connectionName": "
connectionName
", "query": "query
" } )
SAP HANA テーブルへの書き込み
この例では、既存の DynamicFrame である dynamicFrame
から SAP HANA に情報を書き込みます。テーブルに既に情報がある場合、AWS Glue はエラーになります。
前提条件:
-
書き込み先とする SAP HANA テーブル。
テーブルは、SAP HANA テーブル名とスキーマ名 (形式:
) を使用して指定できます。テーブルがデフォルトのスキーマ「public」にある場合、スキーマ名と「.」区切り文字は必要ありません。このschemaName
.tableName
tableIdentifier
を呼び出します。データベースはconnectionName
の JDBC URL パラメータとして指定されることに注意してください。 -
SAP HANA 認証情報。認証情報を設定するには、前の手順「SAP HANA に対する接続を設定するには」のステップを実行します。AWS Glue 接続、
connectionName
の名前が必要になります。
例:
options = { "connectionName": "
connectionName
", "dbtable": 'tableIdentifier
' } saphana_write = glueContext.write_dynamic_frame.from_options( frame=dynamicFrame
, connection_type="saphana", connection_options=options )
SAP HANA 接続オプションのリファレンス
-
connectionName
— 必須。読み込み/書き込みに使用されます。認証およびネットワークの情報を接続方法に提供するように設定された AWS Glue SAP HANA 接続の名前。 -
databaseName
— 読み込み/書き込みに使用されます。有効な値: SAP HANA のデータベースの名前。接続先のデータベースの名前。 -
dbtable
— 書き込みの場合は必須。query
が指定されていない限り、読み取りの場合は必須。読み込み/書き込みに使用されます。有効な値: SAP HANA SQL FROM 句の内容。接続先の SAP HANA 内のテーブルを識別します。サブクエリなど、テーブル名以外の他の SQL を入力することもできます。詳細については、SAP HANA ドキュメントの「From 句」を参照してください。 -
query
— 読み取りに使用。SAP HANA から読み取るときに何を取得するかを定義する SAP HANA SQL SELECT クエリ。