2017-12-28 7 views
-1

私のAmazonアカウントに接続して、s3ストレージ内のリソースを削除したいと考えています。Scalaを使用してAmazonアカウントに接続

私はアクセスキーと秘密鍵を持っており、これは私がアマゾンに私の接続を構築するために始めた方法です:

def connectToAmaozn(): Unit = { 
    val AWS_ACCESS_KEY=conf.getString("WebRecorder.PushSession.AccessKey") 
    val AWS_SECRET_KEY=conf.getString("WebRecorder.PushSession.SecretKey") 

    val AWSCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY,AWS_SECRET_KEY) 

} 

あなたは、私がこれを行うことがどのように手の込んだことはできますか?

答えて

1

私はバケット名やオブジェクトの数を取得するには、このソリューションを使用:

import scala.collection.JavaConversions._ 
import com.amazonaws.auth.{AWSStaticCredentialsProvider, BasicAWSCredentials} 
import com.amazonaws.services.s3 
import com.amazonaws.services.s3.model.{GetObjectTaggingRequest, ObjectListing, S3ObjectSummary} 
import com.amazonaws.services.s3.{AmazonS3Client, AmazonS3ClientBuilder} 
import com.clicktale.pipeline.framework.dal.ConfigParser.conf 
import com.amazonaws.services.s3.AmazonS3Client 
import com.amazonaws.auth.BasicAWSCredentials 
import com.amazonaws.services.s3.AmazonS3Client 
import com.amazonaws.services.s3.model._ 

import scala.language.postfixOps 

class Amazon { 

    val AWS_ACCESS_KEY = conf.getString("WebRecorder.PushSession.AccessKey") 
    val AWS_SECRET_KEY = conf.getString("WebRecorder.PushSession.SecretKey") 
    val bucketName = "nv-q-s3-assets-01" 
    val provider = new AWSStaticCredentialsProvider(new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY)) 
    val client = AmazonS3ClientBuilder.standard().withCredentials(provider).withRegion("us-east-1").build() 
// def connectToAmazon(): Unit = { 
// 
// val provider = new AWSStaticCredentialsProvider(new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY)) 
// val client = AmazonS3ClientBuilder.standard().withCredentials(provider).withRegion("us-east-1").build() 

    def removeObjectsFromBucket(){ 

    println("Removing objects from bucket...") 
     var object_listing: ObjectListing = client.listObjects(bucketName) 
     var flag: Boolean = true 
     while (flag) { 
     val iterator: Iterator[_] = object_listing.getObjectSummaries.iterator() 
     while (iterator.hasNext) { 
      val summary: S3ObjectSummary = iterator.next().asInstanceOf[S3ObjectSummary] 
      client.deleteObject(bucketName, summary.getKey()) 
     } 

     flag=false 

     } 

    } 

    def countNumberOfObjectsInsideBucket(): Unit ={ 

    var object_listing: ObjectListing = client.listObjects(bucketName) 
    var flag: Boolean = true 
    var count=0 
    while (flag) { 
     val iterator: Iterator[_] = object_listing.getObjectSummaries.iterator() 
     while (iterator.hasNext) { 
     val summary: S3ObjectSummary = iterator.next().asInstanceOf[S3ObjectSummary] 
     count+=1 
     } 

     flag=false 
     println("Number of objects are: " + count) 

    } 
    } 
} 
0

あなたはAWSCredentialsProviderが必要になります。その後、

val provider = new AWSStaticCredentialsProvider(
    new BasicAWSCredentials(AWS_ACCESS_KEY,AWS_SECRET_KEY) 
) 

とクライアントを作成するためにそれを使用します。

val client = AmazonS3ClientBuilder 
    .standard 
    .withCredentials(provider) 
    .withRegion("us-west-1") // or whatever your region is 
    .build 
+0

私はS3で特定のバケット内のフォルダを削除したいのですが、どうすればいいですか? –

+0

S3にはキーがありません。指定した接頭辞を持つすべてのオブジェクトを削除する場合は、すべてのオブジェクトを最初にリストし、それぞれを削除する必要があります。 AWS SDKのドキュメントを読んで、APIに詳しいことができます。 http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html – Dima

関連する問題