Tag: amazon web services

AWS S3 Java:d​​oesObjectExist导致403:FORBIDDEN

我在使用AWS SDK与我的Java程序进行交互时遇到了麻烦。 这是我用来创建S3客户端的代码: public S3StorageManager(S3Config config) throws StorageException { BasicAWSCredentials credentials = new BasicAWSCredentials(myAccessKey(), mySecretKey()); AWSStaticCredentialsProvider provider = new AWSStaticCredentialsProvider(credentials); this.s3Client = AmazonS3ClientBuilder .standard() .withCredentials(provider) .withRegion(myRegion) .build(); 当我尝试下载文件时,在开始下载之前,我检查文件是否存在: s3Client.doesObjectExists(bucketName, objectName); 这是我得到的地方403:FORBIDDEN。 奇怪的是,只有当我在同一会话中执行上传之前尝试执行对象存在检查时才会引发此问题。 换句话说,在初始化s3Client之后: – 如果我首先尝试检查对象是否存在,则会引发FORBIDDEN问题; – 如果我第一次执行文件上传,它工作正常,之后任何对象存在检查也可以正常工作; 这是我的堆栈跟踪: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Reques t ID: A23BB805491E411F) at […]

如何在PuTTY中保存和运行Java文件?

我在AWS(amazon web services)上完成新手,所以这可能是一个基本问题。 我在AWS上创建了一个EC2实例。 我有一台Windows机器,所以我使用PUTTY连接Linux实例。 在与我的EC2实例连接后,我使用下面的命令编写Java代码, vi java First.java 写完上面的代码后,我得到了下面的屏幕,我编写了一个简单的“Hello World”的Java代码, 问题是现在我被困在这里,我该怎么做才能保存我所写的内容? 它将存储在我的笔记本电脑或EC2中? 有没有办法我可以简单地上传文件,然后从终端运行它? 提前致谢。

AWS S3无需访问和密钥在Java中上载

我想在不使用AWS服务器的访问权限和密钥的情况下将文件上传到S3。 AWS键应作为默认值。 但是,在服务器中运行以下命令,我可以访问它而无需提供任何访问和密钥。 aws s3 cp somefile.txt s3:// somebucket / 从Java代码,它无法访问,因为它无法加载凭据。 以下是我的代码。 AmazonS3 s3client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());

com.amazonaws.services.s3.model.AmazonS3Exception:拒绝访问

这是我的Java代码: AmazonS3 conn = new AmazonS3Client(); AmazonS3URI uri = new AmazonS3URI(s3uri); ObjectListing objects = conn.listObjects(uri.getBucket(), uri.getKey()); 一个非常简单的任务,我尝试使用AmazonS3 Java客户端来访问S3,但这行conn.listObjects一直失败并给了我以下exception: Exception in thread “main” com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: XXXXXXXX), S3 Extended Request ID: xxxxxxxxx at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1389) at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:902) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:607) at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376) at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287) at […]

使用Java API的S3 / AWS的SSL问题:“证书中的主机名不匹配”

亚马逊在1.3.21版本的AWS Java SDK中“升级”了SSL安全性。 在使用Amazon的AWS Java API时,这会破坏访问其名称中具有句点的任何S3存储桶。 我使用的是版本1.3.21.1,目前是2012年10月5日。 我在下面的回答中提供了一些解决方案,但我正在寻找针对此问题的其他解决方法。 如果您收到此错误,您将在例外/日志中看到类似以下消息的内容。 在此示例中,存储桶名称为foo.example.com 。 INFO: Unable to execute HTTP request: hostname in certificate didn’t match: != OR OR at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:220) at org.apache.http.conn.ssl.StrictHostnameVerifier.verify(StrictHostnameVerifier.java:61) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:149) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:130) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:390) 您可以在AWS S3论坛上查看此问题的文档: https://forums.aws.amazon.com/thread.jspa?messageID=387508&#387508 亚马逊对此问题的回应如下。 对于具有此命名模式的存储桶,我们应该能够通过使用旧的路径样式方法来解决此问题(而不是较新的虚拟主机样式寻址)。 我们将开始修复并确保我们的内部集成测试具有包含句点的存储桶名称的测试用例。 任何变通方法或其他解决方案? 感谢您的任何反馈。

AWS Java SDK – 无法通过区域提供程序链查找区域

我已经完成了题为“以编程方式设置AWS区域1”的问题,但它没有提供我需要的所有答案。 Q1:我收到了SDKClientException-Unable to find a region via the region provider chain 。 我究竟做错了什么? 还是我错过了一个错字。 public class CreateS3Bucket { public static void main(String[] args) throws IOException { BasicAWSCredentials creds = new BasicAWSCredentials(“aws-access-key”, “aws-secret-key”); AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build(); Region region = Region.getRegion(Regions.US_EAST_1); s3Client.setRegion(region); try { String bucketName = “testBucket” + UUID.randomUUID(); s3Client.createBucket(bucketName); System.out.println(“Bucket Created Successfully.”); } […]

如何使用.net代码执行Amazon Cloud Search?

我正在学习Amazon Cloud Search,但我找不到C#或Java中的任何代码(虽然我在C#中创建,但如果我能用Java获取代码,那么我可以尝试使用C#进行转换)。 这只是我在C#中找到的一个代码: https : //github.com/Sitefinity-SDK/amazon-cloud-search-sample/tree/master/SitefinityWebApp 。 这是我在此代码中找到的一种方法: public IResultSet Search(ISearchQuery query) { AmazonCloudSearchDomainConfig config = new AmazonCloudSearchDomainConfig(); config.ServiceURL = “http://search-index2-cdduimbipgk3rpnfgny6posyzy.eu-west-1.cloudsearch.amazonaws.com/”; AmazonCloudSearchDomainClient domainClient = new AmazonCloudSearchDomainClient(“AKIAJ6MPIX37TLIXW7HQ”, “DnrFrw9ZEr7g4Svh0rh6z+s3PxMaypl607eEUehQ”, config); SearchRequest searchRequest = new SearchRequest(); List suggestions = new List(); StringBuilder highlights = new StringBuilder(); highlights.Append(“{\'”); if (query == null) throw new ArgumentNullException(“query”); foreach (var field […]

使用Java查找AWS ElastiCache端点

我正在尝试使用最新的Java AWS SDK以编程方式从我的Java应用程序中获取ElastiCache端点列表。 事情似乎没有用 – 我可以找到一个有效的CacheCluster,但是当我列出它的节点时,它是空的。 这是我的代码: CacheCluster cc = it.next(); System.out.println(“Cache node type: ” + cc.getCacheNodeType()); System.out.println(“Number cache nodes: ” + cc.getNumCacheNodes()); List listCache = cc.getCacheNodes(); System.out.println(“List size: ” + listCache.size()); 当我运行它时,我得到以下输出: Cache node type: cache.m1.small Number cache nodes: 1 List size: 0 这似乎很简单,但似乎不起作用。 我已经启动了一个带有单个节点的ElastiCache集群,但是当我调用getCacheNodes()时列表显示为空。 我试图在本地和EC2实例上运行此代码,我两次都得到同样的东西。 关于我可能做错的任何想法?

最新版本和旧版本冲突的两个Maven依赖关系

我在这里使用spring-data-dynamoDB项目,根据它的pom.xml,他们使用了aws-java-sdk的 1.6.9.1版本,但我需要使用最新版本的aws-java-sdk来实现我的项目它的function也实现了amazon s3。 如果我包含它的依赖, com.amazonaws aws-java-sdk 1.7.9 我得到如下例外, 12:51:25.298 [main] DEBUG osbfsDefaultListableBeanFactory – Retrieved dependent beans for bean ‘(inner bean)’: [_relProvider] 12:51:25.307 [main] ERROR oswcContextLoader – Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.hateoas.config.HypermediaSupportBeanDefinitionRegistrar$Jackson2ModuleRegisteringBeanPostProcessor#0’: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘_halObjectMapper’: Instantiation of bean failed; nested […]

为枚举构建一个通用的DynamoDBMarshalling

我正在使用Amazon Web Services SDK for Java for DynamoDB; 试图满足@DynamoDBMarshalling的界面: Class<? extends DynamoDBMarshaller> marshallerClass(); 我建立了一个接收任何枚举的编组器: public class EnumMarshaller<T extends Enum> implements DynamoDBMarshaller { @Override public String marshall(T getterReturnResult) { return getterReturnResult.toString(); } @Override public T unmarshall(Class clazz, String obj) { return Enum.valueOf(clazz, obj); } } 问题是当我尝试在我的字段上使用注释时,我无法弄清楚: public static enum MyEnum {BLA, BLA2} @DynamoDBMarshalling(marshallerClass=EnumMarshaller.class) public MyEnum getStatus() […]