如何在使用出站网关上传文件之前检查aws s3 bucket是否可用
How to check if aws s3 bucket available before uploading file using outbound gateway
在 spring 引导应用程序中使用 aws s3 出站适配器,尝试上传 s3 存储桶中的文件。想在上传文件之前检查存储桶是否可用。如果桶不可用需要抛出错误。
对此提出建议。
<int-aws:s3-outbound-gateway id="FileChannelS3"
request-channel="filesOutS3CChainChannel"
reply-channel="filesArcChannel"
transfer-manager="transferManager"
bucket-expression="headers.TARGET_BUCKET"
command="UPLOAD">
<int-aws:request-handler-advice-chain>
<ref bean="retryAdvice" />
</int-aws:request-handler-advice-chain>
</int-aws:s3-outbound-gateway>
您可以配置一个 S3RemoteFileTemplate
bean 并在 <filter>
:
中使用它的 exists()
API
<bean id="s3RemoteFileTemplate" class="org.springframework.integration.aws.support.S3RemoteFileTemplate">
<constructor-arg ref="s3SessionFactory"/>
</bean>
<int:filter expression="@s3RemoteFileTemplate.exists(headers.TARGET_BUCKET)" throw-exception-on-rejection="true"/>
更新
Facing below exception java.lang.IllegalStateException: 'path' must in pattern [BUCKET/KEY]
.
抱歉,错过了您需要检查 bucket
是否存在的事实,而不是内部对象。
为此,您需要直接使用亚马逊 API:
<int:filter expression="@amazonS3.doesBucketExistV2(headers.TARGET_BUCKET)" throw-exception-on-rejection="true"/>
其中 amazonS3
是 com.amazonaws.services.s3.AmazonS3
客户端的 bean。
在 spring 引导应用程序中使用 aws s3 出站适配器,尝试上传 s3 存储桶中的文件。想在上传文件之前检查存储桶是否可用。如果桶不可用需要抛出错误。
对此提出建议。
<int-aws:s3-outbound-gateway id="FileChannelS3"
request-channel="filesOutS3CChainChannel"
reply-channel="filesArcChannel"
transfer-manager="transferManager"
bucket-expression="headers.TARGET_BUCKET"
command="UPLOAD">
<int-aws:request-handler-advice-chain>
<ref bean="retryAdvice" />
</int-aws:request-handler-advice-chain>
</int-aws:s3-outbound-gateway>
您可以配置一个 S3RemoteFileTemplate
bean 并在 <filter>
:
exists()
API
<bean id="s3RemoteFileTemplate" class="org.springframework.integration.aws.support.S3RemoteFileTemplate">
<constructor-arg ref="s3SessionFactory"/>
</bean>
<int:filter expression="@s3RemoteFileTemplate.exists(headers.TARGET_BUCKET)" throw-exception-on-rejection="true"/>
更新
Facing below exception
java.lang.IllegalStateException: 'path' must in pattern [BUCKET/KEY]
.
抱歉,错过了您需要检查 bucket
是否存在的事实,而不是内部对象。
为此,您需要直接使用亚马逊 API:
<int:filter expression="@amazonS3.doesBucketExistV2(headers.TARGET_BUCKET)" throw-exception-on-rejection="true"/>
其中 amazonS3
是 com.amazonaws.services.s3.AmazonS3
客户端的 bean。