amazon-s3 - 气流:“ListObjectsV2 操作:访问被拒绝”使用 GoogleCloudStorageToS3Operator
问题描述
我想将文件从 GCS 传输到 S3。测试我的连接的第一个操作员 (S3KeySensor) 运行良好。但不幸的是,我收到第二个错误(GoogleCloudStorageToS3Operator):“调用 ListObjectsV2 操作时发生错误(AccessDenied):访问被拒绝”,这是一个 S3 错误。
# test
sensor = S3KeySensor(
task_id='check_s3_for_file_in_s3',
bucket_key='folder1/folder2/*',
wildcard_match=True,
bucket_name='test.mydomain.com',
aws_conn_id='aws_connection',
timeout=18*60*60,
poke_interval=120,
dag=dag)
impressions_from_gcs_to_s3 = GoogleCloudStorageToS3Operator(
task_id='impressions_from_gcs_to_s3',
bucket="mygcsbucket",
delimiter=filename,
google_cloud_storage_conn_id="google_cloud_storage_default",
dest_aws_conn_id="aws_connection",
dest_s3_key="s3://test.mydomain.com/folder1/folder2/",
dag=dag,
)
我不知道该怎么做才能解决这个问题。
解决方案
这发生在我身上,你需要为这个 dag 的执行角色添加一个策略。如果您需要在存储桶中添加或删除对象,我给您举个例子:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:PutBucketPolicy",
"s3:DeleteObject",
"s3:PutObjectAcl",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-bucket-a/*","arn:aws:s3:::my-bucket-a",
.
.
.
"arn:aws:s3:::my-bucket-n/*","arn:aws:s3:::my-bucket-n"
]
}
]
}
推荐阅读
- matplotlib - 在 matplotlib.axes.Axes.table 中设置 alpha?
- database - 实时可扩展聊天应用程序 - 我应该选择哪个数据库?
- python - 有没有更简单的方法来转换这个 scipy 稀疏矩阵?
- sql - 查询将产生客户名称列表和每个客户的平均订单价值
- flutter - 仅在 iOS 模拟器中的 Syncfusion DataGrid 屏幕上时,CPU 温度和使用率飙升 - Flutter
- c# - 用 (') 和空格分割字符串,但在两个连续的 (') 之间保留任何空格字符
- fortran - 当子数组的维数大于 2 时,MPI_Type_create_resized 会导致分段错误
- python - Django 如何比较 auto_now 和 auto_now_add
- ansible - Ansible - 使用 set_fact 生成复杂的字典(列表字典)
- python - IntegrityError Django Postgres 删除时