当前位置: 首页 > 知识库问答 >
问题:

使用S3出站网关向S3对象添加元数据数据

师野
2023-03-14

已经为spring集成aws应用程序编写了代码,该应用程序当前使用S3出站网关将文件从源文件夹上载到目标S3存储桶。在S3 bucket中上传文件时,希望添加以下关于文件的用户定义元数据及其值。

x-amz-meta-sourcePath:/test

x-amz-meta-targetPath:/targetbucket/

x-amz-meta-timestamp:(#timestamp值)

想知道如何使用S3出站网关或其他方式添加元数据。任何留档/示例/建议都将有助于实现这一点。

<util:map id="userMetadata" value-type="java.lang.String">
            <entry key="x-amz-meta-source" value="testsource" />
            <entry key="x-amz-meta-sourcePath" value="testpath" />    
            <entry key="x-amz-meta-targetPath" value="headers.TARGET_PATH" />               </util:map>

        <bean id="objectMetadata"  class="com.amazonaws.services.s3.model.ObjectMetadata">
        <property name="userMetadata" ref="userMetadata"/>
        </bean>

        <bean id="uploadMetadataProvider"  class="org.springframework.integration.aws.outbound.S3MessageHandler$UploadMetadataProvider">
        <property name="objectMetadata" ref="objectMetadata"/>
        </bean>
<int-aws:s3-outbound-gateway id="s3File"
        request-channel="filesS3GateWay"
        reply-channel="filesS3ChainChannel"
        transfer-manager="transferManager"
        bucket-expression = "headers.TARGET_PATH"
        key-expression="headers.file_name"
        upload-metadata-provider="uploadMetadataProvider"
        command="UPLOAD">
        <int-aws:request-handler-advice-chain>
            <ref bean="retryAdvice" />
        </int-aws:request-handler-advice-chain>
    </int-aws:s3-outbound-gateway>

共有1个答案

谷梁嘉悦
2023-03-14

我认为你需要的是:

    <xsd:attribute name="upload-metadata-provider">
        <xsd:annotation>
            <xsd:documentation>
                Reference to an instance of
                'org.springframework.integration.aws.outbound.S3MessageHandler$UploadMetadataProvider'.
            </xsd:documentation>
            <xsd:appinfo>
                <tool:annotation kind="ref">
                    <tool:expected-type
                            type="org.springframework.integration.aws.outbound.S3MessageHandler$UploadMetadataProvider"/>
                </tool:annotation>
            </xsd:appinfo>
        </xsd:annotation>
    </xsd:attribute>

因此,您注入了这样一个上传元数据提供者:

/**
 * The callback to populate an {@link ObjectMetadata} for upload operation.
 * The message can be used as a metadata source.
 */
public interface UploadMetadataProvider {

    void populateMetadata(ObjectMetadata metadata, Message<?> message);

}

并根据请求消息填充到该对象元数据中。

 类似资料:
  • 因此,我尝试使用Amazon Textract读取多个pdf文件,使用方法读取多个页面,如下所示: 在尝试从中检索响应对象时,我可以看到它被打印出来: 相应地,我将使用该稍后访问对象。但是我得到了以下错误,我不明白: InvalidS3ObjectException:调用StartDocumentTextDetection操作时发生错误(InvalidS3ObjectException):无法从S

  • Ceph 支持 REST 风格的 API ,它与亚马逊 S3 API 的基本数据访问模型兼容。 API 通用 认证 服务操作 Bucket 操作 对象操作 C++ C# Java Perl PHP Python Ruby AWS::SDK 样例 (aws-sdk gem ~>2) Ruby AWS::S3 样例 (aws-s3 gem) 功能支持情况 下面的表格列出了对亚马逊 S3 的功能支持情况

  • MinIO S3 Gateway向AWS S3或任何其他与AWS S3兼容的服务中添加了MinIO功能,如MinIO浏览器和磁盘缓存。 运行适用于AWS S3的MinIO Gateway 作为运行MinIO S3网关的先决条件,默认情况下,您需要有效的AWS S3访问密钥和秘密密钥。(可选)当您通过环境变量(即AWS_ACCESS_KEY_ID)旋转AWS IAM凭证或AWS凭证时,还可以设置自定

  • 我已经参考了这些使用出站网关发送POST参数的示例。 > https://github.com/spring-projects/spring-integration-samples/tree/master/medirement/multipart-http Spring集成-如何使用http出站网关发送POST参数 不过我也有例外 网关接口 StackTrace-1:java.lang.Strin

  • 我有一个DynamoDB表,存储1Gb的数据。RCU和WCU各为1000。我设置了一个数据管道,将这1GB的数据导出到s3。整个1GB的数据在分区中导出到s3。我的问题是什么决定了这些分区的数量和大小?

  • 问题内容: 在boto 2中,可以使用以下方法写入S3对象: Key.set_contents_from_string() Key.set_contents_from_file() Key.set_contents_from_filename() Key.set_contents_from_stream() 是否有boto 3等效项?将数据保存到S3上存储的对象的boto3方法是什么? 问题答案: