Configuring storage locations#

オブジェクトストレージのデータは、ストレージ場所または統合された Integrating with Iceberg catalogs を介してアクセスできます。ストレージ場所は、Postgresインスタンスとデータレイク間のブリッジを確立します。

Postgres Analytics Accelerator PGAAは、 Postgresファイルシステム拡張機能PGFSを活用して、ターゲットバケットを定義し、リモートファイルと対話するために必要な認証を管理します。

保存場所の作成#

ストレージの場所は、クラウドバケットのエイリアスとして機能します。次の構文を使用して、pgfs.create_storage_location() ファンクションで保存場所を作成できます。

select pgfs.create_storage_location(name=>storage_location_name,
                                    url=>protocol://path,
                                    options => {},
                                    credentials => {});

構成パラメーターとサポートされているストレージプロバイダーの包括的なリストについては、

Creating a PGFS storage location を参照してください。

バケットの種類#

パブリックバケットとプライベートバケットの主な違いは、エンジンが要求の署名と承認を処理する方法にあります。

  • プライベートバケット ほとんどの運用データに使用されます。これらにアクセスするには、PGFS拡張機能によって送信されるすべての要求に署名するための有効な資格情報IAMロール、静的資格情報、または環境変数が必要です。データは、特定のPGAAインスタンスまたは許可されたユーザーにのみ可視されます。

  • パブリックバケット 認証なしでアクセスできます。これらは一般的に Benchmark datasets またはパブリックデータリポジトリに使用されます。

次に、パブリックバケットをポイントする保存場所の例を示します。

SELECT pgfs.create_storage_location(
    my_lake_data,
    s3://your-bucket-name/path,
    {"aws_skip_signature": "true"}
);

認証#

PGFSは、オブジェクトストレージへのアクセスを承認するための3つの主な方法をサポートしています。

静的資格情報#

資格情報を保存場所定義内に直接埋め込むことができます。これらを2番目のパラメーターとしてpgfs.create_storage_location に渡すことにより、ユーザーマッピングとして保存されます標準のPostgres外部データラッパーセキュリティ機能。これにより、シークレットが分離され、他のデータベースユーザーが読み取ることができません。

テストには便利ですが、これらのシークレットは安全に管理してください。提供されるパラメーターは、ストレージプロバイダーによって異なります。たとえば、S3の場合、アクセスキーIDとシークレットアクセスキー、またはセッショントークンのいずれかを提供する必要があります。

SELECT pgfs.create_storage_location(
    dev_lake,
    s3://dev-bucket/,
    {
        "region": "us-east-1"
    },
    {
        "access_key_id": "AKIA...",
        "secret_access_key": "wJalr..."
    }
);

環境変数#

PGFSは、Postgresが実行されているオペレーティングシステム環境から資格情報を直接継承できます。例

  • 変数を設定しますOSレベル

export GOOGLE_APPLICATION_CREDENTIALS=/var/run/gcs.json
  • 保存場所を作成し、 credentials パラメーターを省略します。 PGFSは、関連する環境キーの検索を自動的にチェックして、接続を承認します。

SELECT pgfs.create_storage_location(
    edb_ai_example_images,
    gs://my-company-ai-images);

IAMロール#

Postgresインスタンスがクラウドインフラストラクチャで実行されている場合、インスタンスプロファイルまたはIAMロールを使用します。これは、一時的なローテーション資格情報を使用するため、最も安全な方法です。 IAMポリシーを基になる仮想マシンまたはコンテナに直接アタッチします。 PGFSはインスタンスのメタデータを自動的に検出し、これらの一時的なローテーション資格情報を使用して要求に署名します。

SELECT pgfs.create_storage_location(
    production_lake,
    s3://my-analytics-bucket/,
    {"region": "us-east-1"}
);

ストレージアクセスのテスト#

場所を作成した後、次のコマンドでその存在を確認します。

SELECT pgfs.list_storage_locations();

pgaa.test_storage_location() ファンクションを使用して、接続を確認します。 2番目のパラメーターは、読み取りアクセス false または書き込みアクセス true をテストするかどうかを指定します。

SELECT pgaa.test_storage_location (my-storage-location, false);

ファンクションは、成功するとNULL を返します。