标签: aws-java-sdk

maven-resources-plugin:2.6 - 无法创建资源输出目录

所以我刚从EC2创建了一个Linux实例,现在我正在尝试在其上安装AWS Java SDK.当我跑步时,我在安装结束时mvn clean compile exec:java得到这个:

[ec2-user@ip-xxx-xxx-xxx-xxx aws-java-sample]$ mvn clean compile exec:java
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building aws-java-sample 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ aws-java-sample ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ aws-java-sample ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: x.xxx s
[INFO] Finished at: xxxx-xx-xxTxx:xx:xx+xx:xx
[INFO] Final Memory: M/xM
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) …
Run Code Online (Sandbox Code Playgroud)

java linux amazon-ec2 maven aws-java-sdk

8
推荐指数
2
解决办法
9816
查看次数

与aws-java-sdk链接时,在读取json文件时发生Spark崩溃

让我们config.json成为一个小的json文件:

{
    "toto": 1
}
Run Code Online (Sandbox Code Playgroud)

我做了一个简单的代码,用于读取json文件sc.textFile(因为该文件可以在S3,本地或HDFS上,因此textFile很方便)

import org.apache.spark.{SparkContext, SparkConf}

object testAwsSdk {
  def main( args:Array[String] ):Unit = {
    val sparkConf = new SparkConf().setAppName("test-aws-sdk").setMaster("local[*]")
    val sc = new SparkContext(sparkConf)
    val json = sc.textFile("config.json") 
    println(json.collect().mkString("\n"))
  }
}
Run Code Online (Sandbox Code Playgroud)

SBT文件仅拉取spark-core

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "1.5.1" % "compile"
)
Run Code Online (Sandbox Code Playgroud)

程序按预期工作,在标准输出上写入config.json的内容.

现在我想链接aws-java-sdk,亚马逊的sdk来访问S3.

libraryDependencies ++= Seq(
  "com.amazonaws" % "aws-java-sdk" % "1.10.30" % "compile",
  "org.apache.spark" %% "spark-core" % "1.5.1" % "compile"
)
Run Code Online (Sandbox Code Playgroud)

执行相同的代码,spark抛出以下异常.

Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Could …
Run Code Online (Sandbox Code Playgroud)

jackson apache-spark aws-java-sdk

8
推荐指数
1
解决办法
3585
查看次数

如何从AWS lambda java中的类路径加载属性文件

我编写了AWS lambda函数,因为我想从属性文件中读取数据库连接详细信息,并且在我的类路径中,但是我无法加载该文件.这是我的代码:

InputStream input = DBConfiguartion.class.getResourceAsStream("appsettings");

        Reader r = new InputStreamReader(input, "UTF-8");
        Properties prop = new Properties();
        prop.load(r);
Run Code Online (Sandbox Code Playgroud)

如果我通过普通的java控制台应用程序运行此代码,那时它正在运行,但每当我将其作为AWS lambda函数运行时, InputStream将变为null.

amazon-s3 aws-sdk aws-lambda aws-java-sdk

8
推荐指数
1
解决办法
6747
查看次数

Spring Boot应用程序通过AWS SES发送简单电子邮件所需的配置步骤是什么?

今天我一直在和它斗争几个小时.我开始使用http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_sending_mails上的文档,这些文档并没有真正说明具体步骤.它只是说开发人员可以包含Bean XML然后自动装配MailSender.我已尝试过以及许多变种,并且无法使用spring-cloud-aws使其工作.我最终直接使用了aws-java-sdk-ses并手动配置了这个类.

这是一个简单的项目,展示了我的尝试:https: //github.com/deinspanjer/aws-ses-test

这个项目编译,但当我运行它时,我得到:

Parameter 0 of constructor in com.example.awssestest.AwsSesTestApplication required a bean of type 'org.springframework.mail.MailSender' that could not be found.
- Bean method 'mailSender' not loaded because @ConditionalOnClass did not find required class 'javax.mail.internet.MimeMessage'
- Bean method 'simpleMailSender' not loaded because @ConditionalOnClass did not find required class 'com.amazonaws.services.simpleemail.AmazonSimpleEmailService'
- Bean method 'javaMailSender' not loaded because @ConditionalOnClass did not find required class 'com.amazonaws.services.simpleemail.AmazonSimpleEmailService'
Run Code Online (Sandbox Code Playgroud)

如果我尝试添加javax-mail(https://github.com/deinspanjer/aws-ses-test/tree/try-with-javax-mail-api),则错误将更改为:

Parameter 0 of constructor in com.example.awssestest.AwsSesTestApplication required …
Run Code Online (Sandbox Code Playgroud)

amazon-ses spring-boot aws-java-sdk spring-cloud-aws

8
推荐指数
1
解决办法
4214
查看次数

使用Java SDK进行桌面应用程序的AWS Cognito登录

我搜索了很多,但似乎无法从头到尾找到解决方案.作为前提,我已经在iOS和Android的两个原生应用程序中实现了Cognito注册,登录和刷新凭证,因此我已经开发了(至少)对身份验证流程的基本了解.

这些移动应用程序使用最简单的Cognito设置:用户池,具有IAM角色的身份池,用于经过身份验证的用户,并且不会使用任何未经身份验证的使用.我没有使用(至少现在)Facebook,谷歌或亚马逊登录,也没有其他身份验证方法.

现在我需要用Java制作这些应用程序的桌面版本,在我看来它是一个完全不同的野兽.我想做的是:

  1. 在我的Java桌面应用程序中打开登录窗口;
  2. 在其字段中插入用户名和密码,然后按登录按钮;
  3. 获取一些凭据并开始使用连接到其他AWS服务的应用程序,特别是我需要使用S3,Lambda和DynamoDB.

实现这一目标的方法在纸面上相当简单:

  1. 从Cognito用户池中获取令牌;
  2. 将此令牌提供给Cognito身份池以换取一些凭据;
  3. 使用此凭据访问其他AWS服务.

在阅读了大量文档,下载了许多不同的项目示例和大量的绝望之后,我终于找到了在移动应用程序中实现这一点的方法.例如,在Android中,身份验证流程的工作方式如下:

  1. 使用UserPoolID,AppClientID,PoolRegion和(可选)ClientSecret实例化CognitoUserPool;
  2. 使用IdentityPoolID和PoolRegion实例化凭据提供程序;
  3. 在应用程序UI中,插入用户名和密码,然后按"登录"按钮;
  4. 使用之前实例化的UserPool中的用户名检索CognitoUser;
  5. 为CognitoUser获取CognitoUserSession,使用带有各种回调的AuthenticationHandler在需要时传递密码;
  6. 将CognitoUserSession添加到先前实例化的凭证提供程序,以TokenKey +从会话中提取的JWT令牌的形式.
  7. 此时,每当我需要访问S3,Lambda或DynamoDB时,我只需将此凭据提供程序作为其客户端构造函数的参数传递.

与Java SDK实现相同的功能在我看来要困难得多.

我设法很容易地实现用户注册.但是,如果用户登录,我根本不知道从哪里开始.

每个例子都以不同的方式做到这一点.最重要的是,每个示例都使用特定用例,例如开发人员验证的Sign-Ins或自定义URL来连接到某个拥有的后端.为什么如此难以找到像我需要的基本用例的例子?我开始认为我的基本用例根本不是基本的,而是非典型的.为什么使用用户名和密码登录AWS的默认用户/凭证服务是非典型的,但是,我真的不知道.

到目前为止,我所做的最好的是从这个示例项目中复制相关的类(我还从中获取了注册部分,它运行良好)并在控制台中打印IdToken,AccessToken和RefreshToken.它们打印正确且不为空.我真正理解的是如何获取凭据并将其添加到凭证提供程序,以便实例化客户端以访问其他AWS服务.我在项目中看到的唯一方法就是调用方法

Credentials getCredentials(String accessCode)

我想它应该接受使用InitAuth方法检索的访问代码(启动OAuth2.0身份验证流程,如果我错了请纠正我).问题是我找不到检索该代码的方法.我找不到访问代码的在线示例来查看它的外观.我试图将其中一个令牌和Web请求做出响应

{"error":"invalid_grant"}
Run Code Online (Sandbox Code Playgroud)

这表明它不是有效的代码,但至少Web请求是有效的.

为了更清楚,我能做的是:

String username; //retrieved from UI
String password; //retrieved from UI

//I copied AuthenticationHelper as is from the project
AuthenticationHelper helper = new AuthenticationHelper(POOL_ID, CLIENT_APP_ID, CLIENT_SECRET);

//I then retrieve the tokens with SRP authentication
AuthenticationResultType result = helper.performSRPAuthentication(username, password);

//Now I can successfully print the tokens, for example: …
Run Code Online (Sandbox Code Playgroud)

java authentication amazon-web-services aws-java-sdk

8
推荐指数
1
解决办法
1177
查看次数

如何验证 Cloudwatch 日志组和日志流是否存在?

java中是否有任何方法可以在从日志组获取日志事件之前检查给定的日志组和日志流是否存在?

java amazon-web-services aws-sdk aws-java-sdk amazon-cloudwatchlogs

7
推荐指数
1
解决办法
7088
查看次数

无法初始化类com.amazonaws.partitions.PartitionsLoader

使用Eclipse Mars.我已经通过安装软件从help.Iow添加了aws java sdk 1.11.123.当我运行Tomcat Server 7时,我收到此错误:

May 02, 2017 11:57:32 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [PdsServlet] in context with path [/PdsAWS] threw exception [java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.partitions.PartitionsLoader] with root cause java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.partitions.PartitionsLoader

我也明白了

java.lang.NoSuchFieldError: ALLOW_FINAL_FIELDS_AS_MUTATORS

但是,当我检查库时,我可以看到PartitionsLoader.How可以解决这个问题吗?

在此输入图像描述

更多看似相关的错误:

May 03, 2017 9:39:04 AM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.partitions.PartitionsLoader
	at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
	at …
Run Code Online (Sandbox Code Playgroud)

java eclipse macos tomcat aws-java-sdk

7
推荐指数
1
解决办法
5217
查看次数

如何使用 aws-java-sdk 从 S3 逐块读取文件

我正在尝试将大文件从 S3 读取到块中,而无需为并行处理切割任何行。

举例说明:S3上有1G大小的文件。我想将此文件分成 64 MB 的夹头。我可以很容易地做到:

S3Object s3object = s3.getObject(new GetObjectRequest(bucketName, key));

InputStream stream = s3object.getObjectContent();

byte[] content = new byte[64*1024*1024];

while (stream.read(content)  != -1) {

//process content here 

}
Run Code Online (Sandbox Code Playgroud)

但是块的问题是它可能有 100 行完整的行和一个不完整的行。但我无法处理不完整的行,也不想丢弃它。

有什么办法可以处理这种情况吗?表示所有夹头都没有局部线。

java io amazon-s3 amazon-web-services aws-java-sdk

7
推荐指数
2
解决办法
1万
查看次数

为什么 aws lambda 调用客户端错误地返回 ClientExecutionTimeoutException?

我们似乎确定性地遇到了这个问题,并且不确定我们在哪里配置错误。对于运行不到约 5 分钟的 lambda,我们的调用在 lambda 完成后约 0.5 秒成功结束。然而,对于任何比这更长的时间,我们可以看到 lambda 在 lambda 日志中完成,但我们的客户端调用ClientExecutionTimeoutException在 15 分钟后抛出 a 。

在遇到其他(否则成功)lambda 的问题后,我们在 Node 上创建了一个基本的测试 lambda 和 sleep 函数,并且已经能够确定性地重现该问题:

function sleep(s) {
  return new Promise(resolve => setTimeout(resolve, s * 1000));
}
const sleepMinutes = 60 * 5;
exports.handler = async (event) => {
    console.log(`received lambda invocation, sleeping ${sleepMinutes}`);
    const response = {
        statusCode: 200,
        body: JSON.stringify(`finished running, slept for ${sleepMinutes} minutes`),
    };
    await sleep(sleepMinutes);
    console.log('finished sleeping');
    return response;
};
Run Code Online (Sandbox Code Playgroud)

我们的 lambda 调用客户端正在使用这些客户端配置:

clientConfig.setRetryPolicy(PredefinedRetryPolicies.NO_RETRY_POLICY); …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-sdk aws-lambda aws-java-sdk

7
推荐指数
1
解决办法
417
查看次数

在 sagemaker 中进行预测之前,如何预处理输入数据?

我正在使用 java Sagemaker SDK 调用 Sagemaker 端点。我发送的数据在模型可以用于预测之前几乎不需要清理。我怎么能在 Sagemaker 中做到这一点。

我在 Jupyter 笔记本实例中有一个预处理功能,它在传递该数据以训练模型之前清理训练数据。现在我想知道我是否可以在调用端点时使用该函数,或者该函数是否已被使用?如果有人想要,我可以显示我的代码吗?

编辑 1 基本上,在预处理中,我正在做标签编码。这是我的预处理功能

def preprocess_data(data):
 print("entering preprocess fn")
 # convert document id & type to labels
 le1 = preprocessing.LabelEncoder()
 le1.fit(data["documentId"])
 data["documentId"]=le1.transform(data["documentId"])
 le2 = preprocessing.LabelEncoder()
 le2.fit(data["documentType"])
 data["documentType"]=le2.transform(data["documentType"])
 print("exiting preprocess fn")
 return data,le1,le2
Run Code Online (Sandbox Code Playgroud)

这里的“数据”是一个熊猫数据框。

现在我想在调用端点时使用这些 le1,le2。我想在 sagemaker 本身而不是在我的 java 代码中进行这个预处理。

aws-java-sdk amazon-sagemaker

6
推荐指数
1
解决办法
3365
查看次数