AWS Data WranglerでAWS アクセスキーとシークレットアクセスキーを使う方法が見つからなかったので、コード見てみました。
s3.read_parquet()
や athena.read_sql_query()
など、だいたいのメソッドのには boto3.Session
を引数で渡せます。
def read_sql_query(
# ----省略 ----
boto3_session: Optional[boto3.Session] = None,
# ----省略 ----
) -> Union[pd.DataFrame, Iterator[pd.DataFrame]]:
引用元 : https://github.com/awslabs/aws-data-wrangler/blob/2.11.0/awswrangler/athena/_read.py#L607
例えば athena.read_sql_query()
で言えば以下のように書けばAWS Access KeyとAWS Secret Access Key使ってAWS Data Wranglerを使えます。
import awswrangler as wr
from boto3.session import Session
# AWS認証設定
ACCESS_KEY = "Axxxxxxx"
SECRET_ACCESS_KEY = "xxxxxxx"
AWS_REGION = "ap-northeast-1"
# boto3.Session取得
session = Session(
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_ACCESS_KEY,
region_name=AWS_REGION,
)
# クエリ情報
db_name = "my_db"
table_name = "my_table"
sql = f"""
SELECT *
FROM {table_name}
WHERE year = '2021'
AND month = '9'
AND day = '1';
"""
# AWSへリクエスト
df = wr.athena.read_sql_query(
sql = sql,
database=db_name,
boto3_session=session,
)
RDS Data APIについて ※2022/05/18追記
RDS Data APIでは以下のPRがマージされるまでboto3 sessionは使えません。
それまでは以下のように data_api.rds.connect.client
に外から認証済みの boto3.client
を設定することでワークアラウンドできます。
conn = wr.data_api.rds.connect(
resource_arn="arn:aws:rds:ap-northeast-1.....",
database="mydb",
secret_arn="arn:aws:secretsmanager:ap-northeast-1:....",
)
# ★ここでdata_api.rds.connect.clientに認証付きのboto3.clientを設定します
session = Session(
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_ACCESS_KEY,
region_name=AWS_REGION,
)
conn.client = session.client("rds-data")
df = wr.data_api.rds.read_sql_query(
sql="select * from my_table limit 10",
con=conn,
)