如何用java仿真云数据存储控制

如何用java仿真云数据存储控制,第1张

 

使用编程手段通过JetS3t登录S3可以分为两步。首先,必须创建一个AWSCredentials对象,然后将它传递到S3Service对象。AWSCredentials 对象非常简单。它将访问密钥和秘密密钥视为String。S3Service对象实际上是一个接口类型。因为S3同时提供RESTful API和一个SOAP API,JetS3t库可以提供两种实现类型:RestS3Service和SoapS3Service。就本文而言(包括大部分S3事务),RESTful API的简洁性让它成为一个很好的选择。

创建一个连接的RestS3Service 实例很简单,如清单 1 所示:

步骤 1. 创建一个JetS3t的RestS3Service实例

以下是引用片段:

def awsAccessKey = “blahblah”

def awsSecretKey = “blah-blah”

def awsCredentials = new AWSCredentials(awsAccessKey, awsSecretKey)

def s3Service = new RestS3Service(awsCredentials)

现在可以执行一些有趣的 *** 作了:例如,创建存储段、添加一个影片,然后获取一个有时间限制的URL 。实际上,这听起来像一个业务流程,不是吗?这是一个与发布有限资产(比如影片)有关的业务流程。

创建存储段

对于虚构的电影业务,我将创建一个称为bc50i的存储段。借助JetS3t,该流程很简单。通过S3Service类型,您有几个选项。我更喜欢使用getOrCreateBucket调用,如清单 2 所示。顾名思义,调用该方法可能返回一个存储段实例(表示为S3Bucket类型的实例)或在S3中创建代码段。

S3平台详细使用步骤简介

步骤 2. 在S3服务器上创建存储段

以下是引用片段:

def bucket = s3Service.getOrCreateBucket(”bc50i”)

不要被我这个简单的代码示例所蒙蔽。JetS3t库的扩展性非常强。例如,您可以快速确定拥有多少存储段 —— 只需通过listAllBuckets 调用请求一个S3 Service实例即可。该方法返回一个S3Bucket实例数组。对于任何存储段实例,您可以询问它的名称和创建日期。更重要的是,您可以通过JetS3t的AccessControlList类型控制与之相关的权限。例如,我可以获取bc50i存储段实例,并允许任何人可以公开读取和编写,如清单 3 所示:

步骤 3. 修改存储段的访问控制列表

以下是引用片段:

def bucket.acl = AccessControlList.REST_CANNED_PUBLIC_READ_WRITE

当然,通过API,您也可以随意删除存储段。Amazon甚至允许您指定创建存储段的地理位置。Amazon简化了存储实际数据的复杂性,但是您可以告诉Amazon要将存储段(及其内部所有的对象)放在美国或欧洲(当前可用选项)。

向存储段添加对象

使用JetS3t的API创建S3对象就像 *** 作存储段一样简单。JetS3t库也很智能,可以负责处理与S3存储段内文件相关的内容类型。例如,我想向S3上传一段影片nerfwars2.mp4,以便用户能够在有限的时间内观 看。创建一个S3对象与创建常见的java.io.File类型一样简单,并能将S3Object类型与存储段关联,如清单 4 所示:

步骤 4. 创建一个S3对象

以下是引用片段:

def s3obj = new S3Object(bucket, new File(”/path/to/nerfwars2.mp4″))

使用文件和存储段初始化S3Object之后,要做的所有事情就是通过putObject方法上传,如清单 5 所示:

步骤 5. 上传影片

以下是引用片段:

s3Service.putObject(bucket, s3obj)

使用清单 5 可以完成上传。现在影片位于Amazon服务器了,影片的键就是它的名称。当然,您可以根据需要重写该名称以调用其他对象。实际上,JetS3t API(以及 AmazonS3RESTful API)公开了许多信息,供您创建对象时使用。我们知道,您还可以提供访问控制列表。S3中的任何对象都可以保存API允许您创建的其他元数据。之后可以 通过该元数据的S3API(以及派生的JetS3t)查询任何对象。

创建对象的URL

到现在为止,我的S3实例有一个包含影片的存储段。实际上,我的影片可以通过以下URI获取: 。但是,只有我才能获取。(在本例中,我只能通过编程方式访问它,因为与所有内容关联的默认访问控制被设置为拒绝任何未授权访问)。我的目的是为选择的用 户提供一种方式查看新影片(在有限的时间内),直到我开始收取访问费用(S3也会提供帮助)。

创建一个公共URL是S3提供的一个便捷功能;实际上,使用S3,您可以创建一个公共URL,但只在一段时间内有效(例如,24 小时内)。对于我刚刚存储在S3服务器上的影片,我将创建一个48小时内有效的URL 。然后我将向选定的用户提供该 URL,以便他们下载并观看(假定他们在两天内下载)。

处理带有效期的文件

要创建一个针对S3对象的时间敏感型URL,您可以使用JetS3t的createSignedGetUrl方法,这是一个S3Service类型的静态方法。该方法采用一个存储段名称、一个对象键(在本例中是影片名,还记得吗?)、一些凭证(以JetS3t的AWSCredentials对象的形式)、截止日期。如果您了解所需的存储段和对象键,则可以通过清单 6 中的Groovy代码快速获取URL:

步骤 6. 创建一个时间敏感型URL

以下是引用片段:

def now = new Date()

def url = S3Service.createSignedGetUrl(

bucket.getName(), s3obj.key, awsCredentials, now + 2)

使用 Groovy,我可以通过 + 2 语法轻松指定一个 48 小时的限定日期。得到的 URL 如下所示(只有一行):

如果您的带宽和存储需求不稳定,则S3能提供很多帮助。例如,想想我演示的业务模型 — 影片在一年中特定的时间发布。在传统的存储模型中,您需要在某处机架上购买许多空间(或提供通向它的硬件和管道),很可能下载量很大,但随后会相对降低。 但是,您不能根据需要付费。使用 S3,该模型将根据需要付费 — 公司仅在需要时为存储和带宽付费。更重要的是,S3的安全特性可以帮助您进一步指定人们何时可以下载视频,甚至可以指定谁可以下载。

使用S3实现这些需求非常容易。在高水平上,创建一个受限的影片公共下载需要 4 个步骤:

1.登录S3。

2.创建存储段。

3.向存储段添加所需的视频(或对象)。

4.创建一个指向该视频的时间敏感型 URL 。

java发一个http请求过去,带上参数就可以了啊,跟我们在浏览器上访问资源是一样的 只是它返回的是json格式的数据而已给你两个方法吧: public static String do_post(String url, List name_value_pair) throws IOException { String body = "{}...


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9259402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存