创建您的目录文件
步骤4: 将您的目录文件上传至亚马逊
确认目录文件有效并设置AWS账户后,即可将目录文件上传至亚马逊为您的目录设置的S3存储桶。可以使用AWS命令行界面上传您的目录。
上传您的目录文件
您需要将目录文件上传至为您设置的S3存储桶内的catalogs
文件夹。可以使用任意S3工具将您的目录文件上传至该存储桶和该文件夹。(如果您尚未设置AWS账户,请先参阅步骤3: 针对目录引入设置您的AWS账户。)
要将目录文件上传至S3存储桶,请执行以下操作:
-
键入以下命令,用您的目录文件名替换
<目录文件名.xml>
,用S3存储桶名称替换<S3存储桶名称>
。请注意,必须使用--acl bucket-owner-full-control
选项,这样亚马逊才能读取您上传的文件,从而引入您的目录。$ aws s3api put-object --body <目录文件名.xml> --bucket <S3存储桶名称> --key catalogs/catalog.xml --region us-east-1 --acl bucket-owner-full-control
注意: 如果您将此命令复制并粘贴到终端窗口中,请确保将--
字符粘贴为双短划线而不是n短划线。此外,请确保使用bucket-owner-full-control
来设置--acl
参数;否则,上传将失败。此命令可成功上传大小不超过2GB的文件。如果上传成功,AWS CLI会显示一组标签,列出文件的VersionID、ETag和Expiration。
-
确认您的目录文件出现在S3存储桶中。键入以下命令,列出您的S3存储桶中的所有文件:
$ aws s3 ls s3://<S3存储桶名称>/catalogs/ --region us-east-1
(将
<S3存储桶名称>
替换为您的存储桶名称。)您可以将多个目录上传至目录存储桶。但是,亚马逊只使用最近一次上传的目录,无论其名称是什么。如果您发现目录存在问题,或者需要更新目录文件中的数据,只需上传新文件即可。
示例工作流程
以下示例命令可将名为my-catalog.xml
的目录上传至名为cdf-bucket
的S3存储桶:
$ aws s3api put-object --body my-catalog.xml --bucket cdf-bucket --key catalogs/catalog.xml --region us-east-1 --acl bucket-owner-full-control
此命令会返回以下示例输出:
{
"VersionId": "m_QwgKPy9RJZsWperU_LEULD1waJE2He",
"ETag": "\"e8c38d5258ad1f3b241ae2ce347e40bc\"",
"Expiration": "expiry-date=\"Fri, 06 Jan 2017 00:00:00 GMT\", rule-id=\"Rule for the Entire Bucket\""
}
要验证my-catalog.xml文件是否已成功上传,请运行以下命令:
$ aws s3 ls s3://cdf-bucket/catalogs/ --region us-east-1
此命令会返回当前在存储桶中找到的所有目录文件的列表:
2015-12-07 15:02:17 10236 my-catalog.xml
2015-12-01 15:10:28 166 other-catalog.xml
自动执行验证和上传流程
通常可以编写一个脚本来自动执行验证和上传流程。亚马逊强烈建议您先验证目录文件,然后再尝试上传。如果创建脚本,请在上传流程中加入验证步骤。
其他AWS相关资源
以下链接提供了有关AWS和Amazon S3的详细信息。
- 亚马逊云科技: 所有AWS产品
- Amazon Simple Storage Service (S3): 安全对象存储
- Amazon Identity and Access Management (IAM): 为您的AWS账户定义用户和角色
- 开始使用AWS进行开发: 适用于多种语言和平台的文档、SDK和示例应用
- AWS命令行界面 (CLI): 简单的AWS服务访问方式
- 适用于亚马逊云科技的工具: 各种SDK和示例代码
- 适用于Java的AWS SDK: 将AWS与您的Java应用集成
- Amazon S3客户端: 用于访问Amazon S3的Java类
- 使用适用于Java的AWS SDK上传对象: 将数据上传至Amazon S3的示例代码
目录上传常见问题解答
- 问: 将目录文件发布到AWS S3存储桶的最高频率是多少?
- 答: 亚马逊对发布频率没有限制,我们会根据上传的文件数量对引入管道进行适当调整。
- 问: 将目录文件上传至S3存储桶后,预计多久可以完成引入?
- 答: 亚马逊以每4小时一次的频率从合作伙伴S3存储桶检索新上传的目录文件。如果可以成功引入您的目录文件,则亚马逊会在此时将其引入。如果您的目录文件引入失败,则您需要修复问题、重新上传,然后等待相隔4小时的下一次引入。如果您必须以更快的速度完成目录更新,请与您的亚马逊代表讨论此事。请注意,4小时的间隔可能会有所变动。
- 问: 从目录文件上传到内容在Fire TV设备上可供查看,中间的延迟有多久?
- 答: 通常,内容会在目录引入后2-4小时内可供客户查看;但是,由于可能存在缓存等情况,一些应用的内容可能需要长达72小时才会可供查看。
- 问: 每次更新时都需要上传完整的目录文件吗? 可以上传仅包含新数据和更新数据的目录文件吗?
- 答: 每次上传时都需要提供完整的目录文件。亚马逊会使用完整的文件来计算出需要删除哪些内容。此外,拥有完整的文件有助于确保亚马逊的目录不会随时间推移而与您的目录出现差异。
- 问: 如果快速连续发送多个目录更新,会怎么样? 如果生成目录更新的速度超过亚马逊的处理速度,会发生什么?
- 答: 如果您上传目录文件的速度超过亚马逊的处理速度,则亚马逊会直接忽略较早的副本并使用最新文件版本。换句话说,将大量目录上传至S3系统的行为无法让亚马逊的系统过载。
- 问: 每次将目录文件的新版本上传至S3时都需要重新命名吗? 如果我的S3存储桶包含多个文件,亚马逊如何确定要使用哪个目录文件?
- 答: 亚马逊会通过时间戳来确定目录文件的最新版本,并将始终引入和使用最新版本。
故障排除
以下是上传目录文件时的常见错误。
- 调用PutObject操作时出现“AccessDenied”(访问被拒)响应。
- 检查两件事:
- 确保在通过
aws s3api put-object
命令上传目录文件时,加入--acl bucket-owner-full-control
参数。 - 确保为您的IAM用户正确设置S3存储桶权限。查看向IAM用户授予您的Amazon S3存储桶的访问权限这一节(见于步骤3: 针对目录引入设置您的AWS账户中的步骤D)。
- 确保在通过
- 调用PutObject操作时出现“InvalidAccessKeyId”(访问密钥ID无效)响应。
- AWS访问密钥ID不再有效。检查您的IAM用户是否有了新的访问密钥。查看向IAM用户授予您的Amazon S3存储桶的访问权限这一节(见于步骤3: 针对目录引入设置您的AWS账户中的步骤D)。
后续步骤
现在,您已经上传了目录文件,接下来进入下一步: 步骤5: 验证您上传的目录文件。
Last updated: 2016年1月1日