2017-12-28 8 views
-1

s3 저장소에서 리소스를 삭제하려면 Amazon 계정에 연결하고 싶습니다. 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) 

} 

당신은 내가이 작업을 수행 할 수있는 방법에 자세히 설명 할 수 있습니까?

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

답변

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) 

    } 
    } 
} 
을 클라이언트를 만드는 데 사용 후

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

과 :

0

당신은 AWSCredentialsProvider 필요
+0

그리고 S3에서 특정 버킷 안의 폴더를 삭제하려면 어떻게해야합니까? –

+0

S3에는 폴더가 없으며 키만 있습니다. 주어진 접두어가있는 모든 개체를 삭제하려면 먼저 모든 개체를 나열한 다음 각 개체를 삭제해야합니다. AWS SDK 문서를 읽고 API에 익숙해 질 수 있습니다. http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html – Dima

관련 문제