pandas to_csv 的 CreateBucket 权限到 S3 的 AccessDenied 错误
AccessDenied error from CreateBucket Permissions for pandas to_csv to S3
我在 EC2 机器上有一个脚本 运行ning,由 运行ning pd.to_csv('s3://<my_bucket_name>/<file_path>
完成。
运行 在本地使用我的 AWS 管理员凭据,此脚本 运行 没问题并将 csv 存入正确的存储桶。
我的 EC2 实例的 S3 权限是从 AWS 的文档中复制和粘贴的:https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::<my_bucket_name>"]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object*",
"Resource": ["arn:aws:s3:::<my_bucket_name>/*"]
}
]
}
在EC2实例上运行时,我的错误是botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the CreateBucket operation: Access Denied
。
我不明白为什么 pandas/s3fs 试图在我的存储桶已经存在的情况下创建一个存储桶。其他地方的建议是只提供 s3:*
对 ec2 的访问权限,但我宁愿限制得更多一些,也不愿没有任何限制。
关于如何解决这个问题有什么想法吗?
快速查看 Pandas 代码库并没有向我显示任何具体内容,但我的猜测是它正在检查 listing/updating 对象之前是否存在存储桶,但失败是因为它没有 s3:ListAllMyBuckets
permission.
您可以通过为您的角色赋予该行动(在其自己的声明中)来证实或否认该理论,这有望避免必须给予它 s3:*
。
事实证明,这更多是 运行 ec2 实例的 aws 批处理角色的问题。写入权限足以在没有存储桶列表权限的情况下写入 S3。 AccessDenied 错误是一个更普遍的错误,即没有权限传递给实例。
我在 EC2 机器上有一个脚本 运行ning,由 运行ning pd.to_csv('s3://<my_bucket_name>/<file_path>
完成。
运行 在本地使用我的 AWS 管理员凭据,此脚本 运行 没问题并将 csv 存入正确的存储桶。
我的 EC2 实例的 S3 权限是从 AWS 的文档中复制和粘贴的:https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::<my_bucket_name>"]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object*",
"Resource": ["arn:aws:s3:::<my_bucket_name>/*"]
}
]
}
在EC2实例上运行时,我的错误是botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the CreateBucket operation: Access Denied
。
我不明白为什么 pandas/s3fs 试图在我的存储桶已经存在的情况下创建一个存储桶。其他地方的建议是只提供 s3:*
对 ec2 的访问权限,但我宁愿限制得更多一些,也不愿没有任何限制。
关于如何解决这个问题有什么想法吗?
快速查看 Pandas 代码库并没有向我显示任何具体内容,但我的猜测是它正在检查 listing/updating 对象之前是否存在存储桶,但失败是因为它没有 s3:ListAllMyBuckets
permission.
您可以通过为您的角色赋予该行动(在其自己的声明中)来证实或否认该理论,这有望避免必须给予它 s3:*
。
事实证明,这更多是 运行 ec2 实例的 aws 批处理角色的问题。写入权限足以在没有存储桶列表权限的情况下写入 S3。 AccessDenied 错误是一个更普遍的错误,即没有权限传递给实例。