この簡単な記事では、Spring Cloudプラットフォームで提供されているAWSサポートについて詳しく説明します。S3に焦点を当てます。


1シンプルS3ダウンロード

S3に保存されているファイルに簡単にアクセスすることから始めましょう。

@Autowired
ResourceLoader resourceLoader;

public void downloadS3Object(String s3Url) throws IOException {
    Resource resource = resourceLoader.getResource(s3Url);
    File downloadedS3Object = new File(resource.getFilename());

    try (InputStream inputStream = resource.getInputStream()) {
        Files.copy(inputStream, downloadedS3Object.toPath(),
          StandardCopyOption.REPLACE__EXISTING);
    }
}


2簡単なS3アップロード

ファイルをアップロードすることもできます。

public void uploadFileToS3(File file, String s3Url) throws IOException {
    WritableResource resource = (WritableResource) resourceLoader
      .getResource(s3Url);

    try (OutputStream outputStream = resource.getOutputStream()) {
        Files.copy(file.toPath(), outputStream);
    }
}


3 S3のURL構造


s3Url

は次の形式で表されます。

s3://<bucket>/<object>

たとえば、ファイル

bar.zip



my-s3-bucket

バケットのフォルダー

foo

にある場合、URLは次のようになります。

s3://my-s3-bucket/foo/bar.zip

また、

ResourcePatternResolver

とAntスタイルのパターンマッチングを使用して、複数のオブジェクトを同時にダウンロードすることもできます。

@Autowired
ResourcePatternResolver resourcePatternResolver;

public void downloadMultipleS3Objects(String s3Url) throws IOException {
    Resource[]allFileMatchingPatten = this.resourcePatternResolver
      .getResources(s3Url);
       //...
    }
}

  • URLは正確な名前の代わりにワイルドカードを含むことができます。

たとえば、

s3://my-s3-bucket/


/a** .txtというURL

は、

my-s3-bucket

の任意のフォルダ内で名前が ‘

a

‘で始まるすべてのテキストファイルを再帰的に探します。

Beanの

ResourceLoader



ResourcePatternResolver

は、Spring Bootの自動設定機能を使用してアプリケーションの起動時に作成されます。


4結論

これで完了です。これは、Spring Cloud AWSを使用してS3にアクセスするためのすばやく詳細な紹介です。

リンク:/spring-cloud-aws-ec2[このシリーズの次の記事]では、フレームワークのEC2サポートを探ります。