ODO cannot access S3 with S3ResponseError: 403 Forbidden
ODO cannot access S3 with S3ResponseError: 403 Forbidden
我正在使用 odo 库将 pandas 数据帧 传输到 S3。但是我收到以下错误:
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4], [5, 6], [7, 8]], columns=["A", "B"])
odo(df,'s3://path_to_s3_folder')
S3ResponseError: S3ResponseError: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Anonymous access is forbidden for this operation</Message><RequestId>F5958774D56AD29E</RequestId><HostId>zOH8JOxpSgB5Scgc/YrtHO1+e9lXoKAF89IhRSeAiSoGHAJxyjXKBVFIYETeO4gSLZOUgXmwKLM=</HostId></Error>
现在我已经正确设置了 AWS 凭据,正如我在 ~/.aws/credentials
文件中看到的那样
cat credentials
[default]
aws_access_key_id = XXXXX
aws_secret_access_key = XXXXXXXXXX
aws cli 对我来说工作正常,我可以正确地 运行 aws ls
和 cp
命令(我想这意味着我确实拥有所需的权限)。
aws s3 ls s3://path_to_s3
也boto3
能够访问s3资源,不报错
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
在配置中 wrong/missing 有什么可能?
请安装boto。
快速查看pandas odo源代码后,代码只使用了boto模块,不支持boto3。
正如@mootmoot 所指出的,odo
使用 boto
而 而不是 boto3
。
boto3
可以从 ~/.aws/credentials
获取 aws 凭据,如所述 here. However for boto
you need to setup env variable as stated here
只需添加,
$ export AWS_ACCESS_KEY_ID=XXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXXXXXX
我正在使用 odo 库将 pandas 数据帧 传输到 S3。但是我收到以下错误:
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4], [5, 6], [7, 8]], columns=["A", "B"])
odo(df,'s3://path_to_s3_folder')
S3ResponseError: S3ResponseError: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Anonymous access is forbidden for this operation</Message><RequestId>F5958774D56AD29E</RequestId><HostId>zOH8JOxpSgB5Scgc/YrtHO1+e9lXoKAF89IhRSeAiSoGHAJxyjXKBVFIYETeO4gSLZOUgXmwKLM=</HostId></Error>
现在我已经正确设置了 AWS 凭据,正如我在 ~/.aws/credentials
文件中看到的那样
cat credentials
[default]
aws_access_key_id = XXXXX
aws_secret_access_key = XXXXXXXXXX
aws cli 对我来说工作正常,我可以正确地 运行 aws ls
和 cp
命令(我想这意味着我确实拥有所需的权限)。
aws s3 ls s3://path_to_s3
也boto3
能够访问s3资源,不报错
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
在配置中 wrong/missing 有什么可能?
请安装boto。
快速查看pandas odo源代码后,代码只使用了boto模块,不支持boto3。
正如@mootmoot 所指出的,odo
使用 boto
而 而不是 boto3
。
boto3
可以从 ~/.aws/credentials
获取 aws 凭据,如所述 here. However for boto
you need to setup env variable as stated here
只需添加,
$ export AWS_ACCESS_KEY_ID=XXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXXXXXX