LoginSignup
3
1

More than 1 year has passed since last update.

AWS Data WranglerをAWS Access keyとSecret Access Keyを使う方法

Last updated at Posted at 2021-09-10

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,
)
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1