Tag: amazon web services

如何从S3下载GZip文件?

我查看了AWS S3 Java SDK – 下载文件帮助和使用Java中的Zip和GZip文件 。 虽然它们提供了分别从S3和GZipped文件下载和处理文件的方法,但这些方法无法处理位于S3中的GZipped文件。 我该怎么办? 目前我有: try { AmazonS3 s3Client = new AmazonS3Client( new ProfileCredentialsProvider()); String URL = downloadURL.getPrimitiveJavaObject(arg0[0].get()); S3Object fileObj = s3Client.getObject(getBucket(URL), getFile(URL)); BufferedReader fileIn = new BufferedReader(new InputStreamReader( fileObj.getObjectContent())); String fileContent = “”; String line = fileIn.readLine(); while (line != null){ fileContent += line + “\n”; line = fileIn.readLine(); […]

从运行实例中获取弹性IP

从在EC2实例上运行的java应用程序,我想知道从管理控制台手动分配的我自己的弹性IP地址。 有没有办法为此查询EC2 API?

Kinesis:关闭工人的最佳/安全方法是什么?

我正在使用AWS Kinesis客户端库 。 我需要一种方法在部署期间关闭Kinesis Worker线程,这样我就停在检查点而不是在processRecords()的中间。 我在Worker.java看到了一个关闭boolean,但它是私有的。 我需要的原因是检查点和幂等性对我来说至关重要,我不想在批处理中间杀死进程。 [编辑] 感谢@CaptainMurphy,我注意到Worker.java公开了shutdown()方法,它安全地关闭了worker和LeaseCoordinator 。 它没有做的是在IRecordProcessor调用shutdown()任务。 它突然终止了IRecordProcessor而不用担心状态。 我确实理解KCL不保证检查点之间的幂等性,并且开发人员应该使设计容错,但我觉得在LeaseCoordinator停止之前, IRecordProcessor应该正确关闭, LeaseCoordinator 。

Spark Local Mode – 所有作业仅使用一个CPU核心

我们使用在单个AWS EC2实例上以本地模式运行Spark Java “local[*]” 但是,使用New Relic工具进行性能分析和简单的“顶级”显示,我们已经编写了三个不同的Java spark工作,我们的16个核心机器中只有一个CPU核心用过(我们也尝试过不同的AWS实例,但只有一个核心永远使用)。 Runtime.getRuntime().availableProcessors()报告16个处理器, sparkContext.defaultParallelism()报告16个处理器。 我查看了各种Stackoverflow本地模式问题,但似乎没有解决问题。 任何建议都非常感谢。 谢谢 编辑:过程 1)使用sqlContext从光盘(S3)使用com.databricks.spark.csv读取gzip压缩的CSV文件1到DataFrame DF1。 2)使用sqlContext从光盘(S3)使用com.databricks.spark.csv将gzip压缩的CSV文件2读入DataFrame DF2。 3)使用DF1.toJavaRDD()。mapToPair(返回元组的新映射函数)RDD1 4)使用DF2.toJavaRDD()。mapToPair(返回元组的新映射函数)RDD2 5)在RDD上调用union 6)将联合RDD上的reduceByKey()调用为“按键合并”,因此具有仅具有特定键的一个实例的元组>(因为同一个键出现在RDD1和RDD2中)。 7)调用.values()。map(新映射函数,它迭代提供的List中的所有项目,并根据需要合并它们以返回相同或更小长度的List 8)调用.flatMap()来获取RDD 9)使用sqlContext从DomainClass类型的平面地图创建DataFrame 10)使用DF.coalease(1).write()将DF作为gzip压缩写入S3。

AWS S3 – 列出没有前缀的文件夹中的所有对象

我在检索AWS S3中文件夹内的所有对象(文件名)时遇到问题。 这是我的代码: ListObjectsRequest listObjectsRequest = new ListObjectsRequest() .withBucketName(bucket) .withPrefix(folderName + “/”) .withMarker(folderName + “/”) ObjectListing objectListing = amazonWebService.s3.listObjects(listObjectsRequest) for (S3ObjectSummary summary : objectListing.getObjectSummaries()) { print summary.getKey() } 它返回正确的对象但是带有前缀,例如foldename / filename 我知道我可以使用java或substring来排除前缀,但我只想知道AWS SDK中是否有方法。

AWS Polly Java客户端提供错误:无法从链中的任何提供程序加载区域信息

我正在使用AWS的JAVA SDK来创建一个Polly客户端。 喜欢这个: BasicAWSCredentials awsCreds = new BasicAWSCredentials(“”, “IAM secret key>”); AmazonPollyClient apClient = (AmazonPollyClient) AmazonPollyClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build(); SynthesizeSpeechRequest tssRequest = new SynthesizeSpeechRequest(); tssRequest.setText(); tssRequest.setVoiceId(); tssRequest.setOutputFormat(OutputFormat.Mp3); SynthesizeSpeechResult tssResult = apClient.synthesizeSpeech(tssRequest); 当我运行此代码时,我收到以下错误消息: 线程“main”中的exceptioncom.amazonaws.SdkClientException:无法从com.amazonaws.regions.AwsRegionProviderChain.getRegion(AwsRegionProviderChain.java:56)链中的任何提供者加载com.amazonaws.client.builder.AwsClientBuilder的区域信息.setRegion(AwsClientBuilder.java:319)com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:295)at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:38)at com。 eoffice.aws.speech.Polly.main(Polly.java:42) 我使用IAM策略模拟器检查了凭据。 这工作正常,权限还可以。 在ClientBuilder中设置Region的方法对于AmazonPollyClientBuilder是不可见的,因此我没有(Java SDK)方式来指定区域。 更新:当我问defaultAwsREgionProviderChain时,我收到相同的错误消息 DefaultAwsRegionProviderChain defaultAwsRegionProviderChain = new DefaultAwsRegionProviderChain(); System.out.println(defaultAwsRegionProviderChain.getRegion()); 更新2:当我在de .aws文件夹中创建配置文件时,其中包含以下内容: [默认] region = eu-west-1 它有效,但我需要一种方法来设置它而不依赖于文件系统。

如何将某个S3文件标记为Make Public

如何通过webservices API将某个S3文件标记为Make Public。

Apache Kafka:无法更新Metadata / java.nio.channels.ClosedChannelException

我刚刚开始使用Apache Kafka / Zookeeper,并且在尝试在AWS上设置集群时遇到了问题。 目前我有三台服务器: 一个正在运行的Zookeeper和两个正在运行的Kafka。 我可以毫无问题地启动Kafka服务器,并可以在这两个服务器上创建主题。 然而,当我尝试在一台机器上启动一个生产者而在另一台机器上启动一个消费者时遇到了麻烦: 在卡夫卡制片人: kafka-console-producer.sh –broker-list :9092,:9092 –topic samsa 关于卡夫卡消费者: kafka-console-consumer.sh –zookeeper :2181 –topic samsa 我在制作人(“hi”)上输入一条消息,暂时没有任何反应。 然后我收到这条消息: ERROR Error when sending message to topic samsa with key: null, value: 2 bytes with error: Failed to update metadata after 60000 ms. (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) 在消费者方面,我收到此消息,该消息会定期重复: WARN Fetching topic metadata with correlation id # […]

使用AWS SDK for java运行程序时出现NoClassDefFoundError

我试图运行AWS SDK for Java附带的DynamoDB示例。 我是用eclipse做的,并将aws-java-sdk-1.3.2.jar文件添加到项目的构建路径中。 编译当然很好,但我得到一个名为NoClassDefFoundError的运行时exception。 我知道这意味着该类在编译时存在但在运行时无法找到。 我尝试将jar文件添加到env变量 – 没有帮助。 我也检查过,在其他项目中使用其他外部jar文件没有问题。 Windows和Linux上的问题相同。 帮助任何人? 谢谢,本。 堆栈跟踪: Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.(AmazonDynamoDBClient.java:62) at AmazonDynamoDBSample.init(AmazonDynamoDBSample.java:62) at AmazonDynamoDBSample.main(AmazonDynamoDBSample.java:67)

如何从用Java编写的AWS Lambda函数中读取S3文件?

我编写了一个AWS Lambda函数,其目标是在调用时 – 它读取文件的内容,例如x.db,从中获取一个特定的值并返回给调用者。但是这个x.db文件不时变化。 所以我想将这个x.db文件上传到S3并从AWS Lambda函数读取它就像读取文件一样。 File xFile = new File(“S3 file in x.db”); 如何从用Java编写的AWS Lambda函数中读取这样的x.db S3文件?