use*_*373 6 amazon-web-services amazon-athena aws-data-wrangler
我正在使用 python3
我正在尝试使用 awswrangler 包从 aws athena 读取数据。
下面是代码
import boto3
import awswrangler as wr
import pandas as pd
df_dynamic=wr.athena.read_sql_query("select * from test",database="tst")
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/site-packages/awswrangler/_config.py", line 361, in wrapper
File "/usr/local/lib/python3.6/site-packages/botocore/regions.py", line 148, in _
endpoint_for_partition
raise NoRegionError()
botocore.exceptions.NoRegionError: You must specify a region.
Run Code Online (Sandbox Code Playgroud)
我不确定要指定 sql 查询的工作位置
与 AWS API 的所有交互(包括通过 SDK,如boto3)都需要凭证,您可以在此处boto3找到有关如何管理凭证的更多信息。
由于您在 EC2 实例上运行此程序,因此最佳实践建议通过实例配置文件管理凭证。假设您已经为 EC2 实例分配了 IAM 角色,您所需要做的就是为您的代码指定一个区域。您可以在官方AWS 文档中找到有关如何将 IAM 角色分配给 EC2 的信息。
AWS Data Wrangler 依赖boto3并允许指定一个区域,如下所示:
boto3.setup_default_session(region_name="us-east-2")
Run Code Online (Sandbox Code Playgroud)
您可以像上面的示例一样对区域进行硬编码,也可以使用实例元数据端点检索部署 EC2 的区域。
以下端点:
curl http://169.254.169.254/latest/dynamic/instance-identity/document
Run Code Online (Sandbox Code Playgroud)
将返回一个 json,其中包含 EC2 区域等信息:
curl http://169.254.169.254/latest/dynamic/instance-identity/document
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以使用 Python 或其他方式轻松实现此请求。
| 归档时间: |
|
| 查看次数: |
7078 次 |
| 最近记录: |