配置Spring Cloud Data Flow S3源监听S3存储桶内文件夹的问题
解决S3存储桶子文件夹监听问题
你当前的配置误区在于将bucket名称与子文件夹路径合并到了remote-dir参数中,Spring Cloud Stream的S3源组件要求bucket名称单独通过remote-dir指定,子文件夹路径需要通过prefix参数来配置。
正确配置示例
# 指定bucket名称 app.s3-in.s3.supplier.remote-dir=mybucket # 指定要监听的子文件夹前缀(末尾的/确保只匹配该文件夹下的对象) app.s3-in.s3.supplier.prefix=myfolder/ # 其余原有配置保持不变 app.s3-in.cloud.aws.credentials.accessKey=XXXXXXXXXX app.s3-in.cloud.aws.credentials.secretKey=YYYYYYYYYYYYYYYYY app.s3-in.cloud.aws.region.static=ZZZZZZZZ app.s3-in.cloud.aws.stack.auto=false
关键说明
prefix参数用于过滤S3对象键的前缀,设置为myfolder/后,组件只会监听bucket中所有键以myfolder/开头的对象(包含该文件夹下的所有文件及子层级文件)- 若仅需监听当前文件夹(不包含子层级),可搭配
delimiter=/参数限制范围:
app.s3-in.s3.supplier.delimiter=/
- 确认IAM权限:确保凭证拥有目标bucket下该前缀路径的
s3:ListBucket和s3:GetObject权限,示例权限策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::mybucket"], "Condition": {"StringLike": {"s3:prefix": ["myfolder/*"]}} }, { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": ["arn:aws:s3:::mybucket/myfolder/*"] } ] }
内容的提问来源于stack exchange,提问作者Venu Gopal
相关产品推荐
相关产品推荐

