Подключите DuckDB к S3 с помощью ролевых учетных данныхPython

Программы на Python
Ответить
Anonymous
 Подключите DuckDB к S3 с помощью ролевых учетных данных

Сообщение Anonymous »

Чтобы подключиться к S3, мне нужен файл конфигурации в ~/.aws/config, который выглядит следующим образом:

Код: Выделить всё

[profile my_profile]
output = json
region = us-east-1
role_arn = arn:aws:iam::yyyyyyyyyyyy:role/my_awesome_role

[profile my_profile_exec]
output = json
region = us-east-1
role_arn = arn:aws:iam::xxxxxxxxxxxx:role/my_awesome_role
source_profile = my_profile
ОБРАТИТЕ ВНИМАНИЕ, что ARN МЕЖДУ ДВУМЯ ПРОФИЛЯМИ РАЗЛИЧАЕТСЯ.
При создании учетных данных (

Код: Выделить всё

aws_access_key_id
, aws_secret_access_key и aws_session_token), все они находятся в файле учетных данных ~/.aws/credentials, они предназначены для профиля my_profile.< /p>
После всего этого, когда я запускаю команду AWS CLI: aws s3 ls --profile=my_profile_exec, я получаю правильный результаты.
В чистом Python соединение также работает и выглядит так (сокращенно):

Код: Выделить всё

>>> session = boto3.Session(profile_name=my_profile_exec)
>>> s3_client = session.client("s3")
>>> # do stuff with s3_client
Я пытаюсь заставить это работать с CLI DuckDB, но мне совсем не повезло. Вот самое близкое, что мне удалось понять:

Код: Выделить всё

D LOAD httpfs;
D CREATE SECRET secret (
TYPE S3,
PROVIDER CREDENTIAL_CHAIN,
CHAIN 'config',
PROFILE 'my_profile_exec');
|----------|
| Success  |
|  boolean  |
|----------|
| true    |
|-----------|
D SELECT * FROM read_csv(s3://bucket/path/to/file);
HTTP Error: HTTP GET error on 'https://bucket/path/to/file' (HTTP 400)
Я много искал в Интернете, но не нашел примера кого-то с такой настройкой.
Вот мой среда. Если кто-то может помочь, мы будем очень признательны:
  • MacOS 15.2
  • MacBook Pro, 2021 г., Apple M1 Pro
  • duckdb --version = 1.1.3 19864453f7
  • aws-cli/2.13.29 Python/3.11.6 Darwin/24.2.0 exe/x86_64 приглашение/отключение
Python и сторонние пакеты
  • Python 3.13.1
  • boto3 = 1.35.97
  • botocore = 1.35.97
  • duckdb = 1.1.3


Подробнее здесь: https://stackoverflow.com/questions/793 ... redentials
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»