PutObjectInline(SOAP API)
注意
Amazon S3 的 SOAP API 不适用于新客户,并将于 2025 年 8 月 31 日接近使用寿命终止(EOL)。我们建议您使用 REST API 或 Amazon SDK。
PutObjectInline 操作将对象添加到存储桶。该对象的数据在 SOAP 消息的正文中提供。
如果存储桶中已存在对象,则新对象将覆盖该对象,因为 Amazon S3 存储了上次写入请求。但是,Amazon S3 是一个分布式系统。如果 Amazon S3 几乎同时收到针对同一对象的多个写入请求,则可能会存储所有对象,尽管最终只有一个请求胜出。Amazon S3 不提供对象锁定;如果您需要此功能,请务必将其内置到您的应用程序层中。
为了确保对象在通过网络时不会损坏,您可以计算对象的 MD5,将其 PUT 到 Amazon S3,并将返回的 Etag 与计算的 MD5 值进行比较。
PutObjectInline 不适合用于大型对象。系统将此操作限制为处理 1 MB 或更小的对象。如果 Data 参数对大于 1 MB 的对象进行编码,PutObjectInline 将失败并显示 InlineDataTooLargeError 状态代码。要上传大型对象,可以考虑使用非内联 PutObject API,或者改用 REST API。
例
此示例将一些文本和元数据写入“quotes”存储桶中的“Nelson”对象,授予用户(通常是拥有者)对该对象的 FULL_CONTROL 访问权限,并使匿名方可以读取该对象。
Sample Request
<PutObjectInline xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>quotes</Bucket> <Key>Nelson</Key> <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>family</Name> <Value>Muntz</Value> </Metadata> <Data>aGEtaGE=</Data> <ContentLength>5</ContentLength> <AccessControlList> <Grant> <Grantee xsi:type="CanonicalUser"> <ID>a9a7b886d6fde241bf9b1c61be666e9</ID> <DisplayName>chriscustomer</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ</Permission> </Grant> </AccessControlList> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </PutObjectInline>
Sample Response
<PutObjectInlineResponse xmlns="https://s3.amazonaws.com/doc/2006-03-01"> <PutObjectInlineResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2006-01-01T12:00:00.000Z</lastModified> </PutObjectInlineResponse> </PutObjectInlineResponse>
元素
-
Bucket:要在其中添加对象的存储桶。 -
Key:要分配给对象的键。 -
Metadata:您可以在元数据元素中提供名称-值元数据对。这些将与对象一起存储。 -
Data:数据的 base 64 编码形式。 -
ContentLength:数据的长度,以字节为单位。 -
AccessControlList:资源的访问控制列表。此元素是可选的。如果忽略,则向请求者授予对该对象的FULL_CONTROL访问权限。如果对象已存在,则将替换先前存在的访问控制策略。
响应
ETag:实体标签是对象的 MD5 哈希值,您可以使用它通过GetObjectExtended对于对象进行有条件提取。ETag 仅反映对于对象内容的更改,而不反映对其元数据的更改。-
LastModified:已保存对象的 Amazon S3 时间戳。
访问控制
要将对象放入存储桶,您必须对存储桶拥有 WRITE 访问权限。