开始使用开源S3和JetS3t
要开始使用S3,您需要一个帐户。S3不是免费的,因此在创建帐户时您必须向Amazon提供一种支付手段(比如信用卡号码)。不用担心:不收初装费;您只需要为使用付费。对于本文的示例,只需要支付不到 1 美元的费用。
在创建帐户的过程中,您还需要创建凭据:访问密钥和秘密密钥(就像用户名和密码)。(您还可以获取 x.509 证书;但是,只有在使用Amazon的 SOAPAPI时才需要使用该证书)。和任何访问信息一样,都必须保管好您的秘密密钥。因为任何人使用您的凭据访问S3时,您都将为此付费。因此,每当创建存储段或对象时,默认的行为是让所有内容都私有;您必须显式获取对外部世界的访问。
有了访问密钥和秘密密钥,您可以下载 JetS3t并使用它通过RESTful API与S3交互。
使用编程手段通过 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中创建代码段。