Tag: amazon web services

Java授权

在我的Java应用程序中,我想在URL上创建GET,这需要我使用AWS签名进行授权(AccessKey和SecretKey)。 基本上,我希望在Postman中执行相当于GET的授权类型是AWS Signature 有没有关于如何做到这一点的Java特定教程? 我在网上看到了这个课程: public class AWSV4Auth { private final static Logger logger = LogManager.getLogger(AWSV4Auth.class); private AWSV4Auth() { } public static class Builder { private String accessKeyID; private String secretAccessKey; private String regionName; private String serviceName; private String httpMethodName; private String canonicalURI; private TreeMap queryParametes; private TreeMap awsHeaders; private String payload; private boolean debug […]

无法从类路径上的/AwsCredentials.properties文件加载AWS凭据

使用此代码设置类路径 AWSCredentialsProvider credentialsProvider = new ClasspathPropertiesFileCredentialsProvider(); ec2 = new AmazonEC2Client(credentialsProvider); 以下是AwsCredentials.properties文件的格式 # Fill in your AWS Access Key ID and Secret Access Key # http://aws.amazon.com/security-credentials accessKey = keyHere secretKey = secretKeyHere 以下是我得到的例外情况 Exception in thread “main” com.amazonaws.AmazonClientException: Unable to load AWS credentials from the /AwsCredentials.properties file on the classpath at com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider.getCredentials(ClasspathPropertiesFileCredentialsProvider.java:81) at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:8359)

无法理解如何使用Android AWS SDK

我正在构建一个将使用Amazon的SimpleDB服务的应用程序。 它使用亚马逊的AWS Android SDK 。 据我了解,我不建议将我的Amazon凭据(访问ID和密钥)硬编码到我的应用程序中,因为在应用程序二进制文件中查找字符串并不困难。 如何以安全的方式从我的应用程序访问SimpleDB? 我想我应该使用KeyStore,但我不知道该怎么做。 如果它有帮助,我使用Eclipse作为我的IDE(我说这是为了Eclipse可以使整个亚马逊凭证更简单)。

将Java Web应用程序部署到Amazon Elastic Beanstalk

我的团队正在开发一个Java Web应用程序,该应用程序将部署在Amazon Elastic Beanstalk中。 开发环境是Eclipse和Subversion。 他们能够使用Eclipse插件部署它,但为了自动化部署,我正在尝试使用亚马逊提供的CLI工具。 基本上,在将subversion存储库转换为git存储库之后,我遵循了亚马逊博客文章中详述的步骤。 我按照本SO答案中解释的步骤进行操作 按照上面的步骤,我发出了命令git aws.push ,该命令已成功完成。 但是在运行应用程序时,有错误和。 所以我从Beanstalk环境下载了war文件,发现文件夹结构搞砸了,源文件没有编译成类文件。 看起来源文件是这样上传的。 在使用aws.push之前,我是否需要构建应用程序(使用ant)? 或者我错过了什么?

如何使用REST API和数据库扩展Java应用程序?

我有一个典型的无状态Java应用程序,它提供REST API并在Postgresql数据库中执行更新(CRUD)。 然而,客户的数量正在增长,我觉得有必要 增加冗余,以便在发生另一个失败时发生 为此,我可能需要一个负载均衡器? 通过不淹没网络和一台服务器的CPU来提高响应速度(但负载均衡器将如何不被淹没?) 也许我需要分发数据库? 我希望能够无缝更新我的应用程序(我已经看到了一个名为kubernetes的东西):逐个杀死每个冗余节点并立即用更新版本替换它 我的应用程序还存储了一些图像文件,这些文件在磁盘大小上快速增长,我需要能够分发它们 所有这一切都必须是可备份的 这是我现在拥有的图表(Java app和DB都在同一台服务器上): 缩放这个的最佳/正确方法是什么? 谢谢!

使用AWS Java SDK为现有S3对象设置Expires标头

我正在更新Amazon S3存储桶中的现有对象以设置一些元数据。 我想为每个对象设置HTTP Expires标头以更好地处理HTTP / 1.0客户端。 我们正在使用AWS Java SDK ,它允许对对象进行元数据更改,而无需重新上传对象内容。 我们使用CopyObjectRequest将对象复制到自身。 ObjectMetadata类允许我们设置Cache-Control , Content-Type和其他几个标头。 但不是Expires标题。 我知道S3使用REST API存储并为对象PUT提供Expires头。 有没有办法从Java SDK中执行此操作? 更新以指示我们正在使用 CopyObjectRequest

亚马逊SNS – > SQS消息体

我正在从SNS主题向SQS发送消息。 当我在客户端检查SQS消息的正文时,整个消息元数据正在SQS正文中发送。 IE如果我从主题发送消息“Hello World”,我的客户端正在接收: BenFlowers { “Type” : “Notification”, “MessageId” : “84102bd5-8890-4ed5-aeba-c15fafc926dc”, “TopicArn” : “arn:aws:sns:eu-west-1:534706846367:HelloWorld”, “Message” : “hello World”, “Timestamp” : “2012-06-05T13:44:22.360Z”, “SignatureVersion” : “1”, “Signature” : “Qzh0qXhijBKylaFwc9PGE+lQQDwHGWkIzCW2Ld1eVrxNfSem4yyBTgouqGX26V0m1qhFD4RQcBzE3oNqx5jFhJfV4hN45FNcsFVnmfLPGNUTmJWblSk8f6znWgTy8UtK9xrTeNYzK59k3VJ4WTJ5kCEj+2vH7sBV15fAXeCAtdQ=”, “SigningCertURL” : “https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem”, “UnsubscribeURL” : “https://sns.eu-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-1:534706846367:HelloWorld:8a3acde2-cb0b-4a56-9b9c-b75ed7307556” } 这有点烦人,因为我不得不在另一端拆分消息正文。 速度在这个应用程序中非常重要,所以我想消除这一点。 有没有办法从SNS发送消息并忽略其余的元数据? 谢谢,本

从SQS检索多条消息

我在SQS中有多条消息。 以下代码始终只返回一个,即使有几十个可见(不在飞行中)。 setMaxNumberOfMessages我认为会允许多次被消耗掉。我误解了吗? CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName); String queueUrl = sqs.createQueue(createQueueRequest).getQueueUrl(); ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl); receiveMessageRequest.setMaxNumberOfMessages(10); List messages = sqs.receiveMessage(receiveMessageRequest).getMessages(); for (Message message : messages) { // i’m a message from SQS } 我也试过使用withMaxNumberOfMessages而没有任何运气: receiveMessageRequest.withMaxNumberOfMessages(10); 我怎么知道队列中有消息? 超过1? Set attrs = new HashSet(); attrs.add(“ApproximateNumberOfMessages”); CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName); GetQueueAttributesRequest a = new GetQueueAttributesRequest().withQueueUrl(sqs.createQueue(createQueueRequest).getQueueUrl()).withAttributeNames(attrs); […]

Maven部署包并上传到AWS-Lambda

我在将maven部署包上传到Amazon s3时遇到了问题。 从Eclipse,我能够成功生成.jar文件,但是我在上传到服务器时遇到了问题。 这是我的Java代码: package main.java.mavantestproj; import java.util.Map; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.lambda.runtime.Context; public class LambdaFunctionHandler { public String handleRequest(Map input, Context context) { context.getLogger().log(“Input: ” + input); AmazonDynamoDBClient client = new AmazonDynamoDBClient(new ProfileCredentialsProvider(“mytest”)); client.setRegion(com.amazonaws.regions.Region.getRegion(Regions.US_WEST_2)); client.describeTable(“ProductCatalog”); // TODO: implement your handler return null; } } 在目标文件夹中我有2个jar子。 即lambda-java-example-1.0-SNAPSHOT.jar&original-lambda-java-example-1.0-SNAPSHOT.jar 在这第一个jar子是35MB,第二个jar子是4KB。 我没有得到哪一个上传到S3来运行我的lambda函数。

Redis / Jedis没有单点故障和自动故障转移

在一个简单的情况下,有3个服务器,1个主服务器和2个从服务器,没有分片。 是否有经过validation的解决方案,java和Jedis没有单点故障,并且会自动处理单个服务器,即主服务器或从服务器(自动故障转移)。 例如,在没有任何数据丢失的情况下促进主人和重置。 在我看来,它应该是一个已解决的问题,但我找不到任何代码,只是对可能的方法进行高级描述。 实际上是谁覆盖并在生产中工作?