【发布时间】:2019-01-09 14:15:02
【问题描述】:
我在我的应用程序中使用了 Spring 集成通道技术。我只想将一些文件放入具有完全访问权限的 aws s3 存储桶中。我的配置是 XML 格式的。
需要通过在s3 outbound gateway中使用expression-acl-object属性来实现。
请帮忙配置一下。
【问题讨论】:
标签: spring-boot spring-integration spring-integration-aws
我在我的应用程序中使用了 Spring 集成通道技术。我只想将一些文件放入具有完全访问权限的 aws s3 存储桶中。我的配置是 XML 格式的。
需要通过在s3 outbound gateway中使用expression-acl-object属性来实现。
请帮忙配置一下。
【问题讨论】:
标签: spring-boot spring-integration spring-integration-aws
您的问题不清楚,完全超出我们的想象,您的代码是什么,没有您身边的任何示例。但听起来你仍然在谈论:
<xsd:attribute name="object-acl-expression">
<xsd:annotation>
<xsd:documentation>
A SpEL expression to evaluate S3Object ACL at runtime against request message
for the 'upload' operation.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
此表达式的结果必须是AccessControlList 或CannedAccessControlList 的实例:
Object acl = this.objectAclExpression.getValue(this.evaluationContext, requestMessage);
Assert.state(acl instanceof AccessControlList || acl instanceof CannedAccessControlList,
"The 'objectAclExpression' ["
+ this.objectAclExpression.getExpressionString()
+ "] must evaluate to com.amazonaws.services.s3.model.AccessControlList " +
"or must evaluate to com.amazonaws.services.s3.model.CannedAccessControlList. " +
"Gotten: [" + acl + "]");
所以,如果您谈论 完全访问权限,看起来您只需要在该表达式中使用 CannedAccessControlList.AwsExecRead:
/**
* Specifies the owner is granted {@link Permission#FullControl}. Amazon EC2
* is granted {@link Permission#Read} access to GET an Amazon Machine Image
* (AMI) bundle from Amazon S3.
*/
AwsExecRead("aws-exec-read");
这样的表达式可能看起来像:
object-acl-expression="T(com.amazonaws.services.s3.model.CannedAccessControlList).AwsExecRead"
【讨论】: