标签: aws-java-sdk

由于授权,无法访问S3预签名URL

使用Java8和aws-java-sdk 1.10.43我正在尝试获取一个S3文件的预签名URL.我确实找回了一个链接,但浏览它会导致此错误:

您提供的授权机制不受支持.请使用AWS4-HMAC-SHA256

为了强调,我希望生成一个可以通过电子邮件发送并在浏览器中打开的URL,而不是使用Java代码从该URL读取.

我正在使用波纹管代码,我相信我发现我需要以某种方式设置setSSEAlgorithm来使用"v4",但是我没能使它工作.我错过了什么?我应该配置什么(注意:我故意避免配置文件,我希望代码从环境变量设置所有属性)

Date expiration = <some date>;
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, targetPath);
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);

AmazonS3 s3client = new AmazonS3Client(s3Credentials);
URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest);
Run Code Online (Sandbox Code Playgroud)

铲斗位于欧洲中心1号

谢谢

java authorization amazon-s3 aws-java-sdk

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

batchLoad 在 Dynamo 中的全局二级索引上

有没有办法使用全局二级索引从 DynamoDB 中的表执行批量加载?

batchLoad API只接受HASHKEYS和queryPage API只允许您在一个关键传球。

amazon-dynamodb aws-java-sdk

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

如何对具有 IAM 角色的 AWS API 网关进行 Java 客户端调用

我正在寻找用于调用 AWS API Gateway 的 java 代码示例。

我可以调用不需要 IAM 验证的 AWS API 网关,但我发现很难找到如何构建 URL 的清晰示例。

如何正确传入 Secret key 和 Secret Key ID?我是否必须完成根据签名版本 4 协议对 URL 进行编码所需的所有步骤,还是可以在 URL 中包含密钥和密钥 ID?

是否有使用 Java 编写的客户端程序的代码示例,该程序使用 AWS 开发工具包来调用 AWS API Gateway?就像在通用调用中一样,您可以根据需要传入 URL 和其他参数?

我尝试使用由AWS API Gateway 生成的AWS Java SDK。我在使用生成的 SDK 时遇到问题,任何教程将不胜感激。我找不到有关如何使用构建的 SDK 调用 API 的文档。我已经使用MAVEN来构建SDK..我想,我正在尝试遵循本教程...

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-call-apigateway- generated-java-sdk.html

....但我不确定我是否已正确安装 SDK,而且我看不到密钥和密钥 ID 传递到 API 调用的位置...

amazon-web-services aws-sdk aws-java-sdk aws-api-gateway

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

如何使用提供的URL从s3下载文件?

在我的应用程序中,我将获得s3文件的网址,例如:https : //s3.amazonaws.com/account-update/input.csv。 我必须先下载它,然后对其进行处理。我已经做了:

AmazonS3 s3 = new AmazonS3Client(credentials);
S3Object s3object = s3.getObject(new GetObjectRequest(
bucketName, key));
Run Code Online (Sandbox Code Playgroud)

我可以通过提供存储桶名称和密钥来下载文件,但是如何仅使用url(https://s3.amazonaws.com/account-update/input.csv)下载文件?

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

6
推荐指数
3
解决办法
2万
查看次数

TransferManager 上传后可以重用吗?

我正在使用 TransferManager 将文件上传到我的s3 存储桶。虽然文档说尽可能重用一个实例,但它也说一旦传输完成就应该调用关闭。

文档的相关部分:

TransferManager 负责管理连接、线程等资源;尽可能共享 TransferManager 的单个实例。TransferManager 与适用于 Java 的 AWS 开发工具包中的所有客户端类一样,是线程安全的。传输完成后调用 TransferManager.shutdownNow() 释放资源。

这是从字面上理解的,还是我们可以重用对象并在应用程序关闭时调用关闭?

一点背景知识:我们之前使用相同的 s3 客户端为每次上传创建一个 TransactionManager,但我们开始AbortedException在某些上传时遇到问题。

aws-java-sdk

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

在 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
查看次数

如何使用 Java 将文件上传到 AWS 中的预签名 URL?

URL url = new URL("https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A225178842088%3Aproject%3A1e6bbc52-5070-4505-b4aa-592d5e807b15/uploads/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A225178842088%3Aupload%3A1e6bbc52-5070-4505-b4aa-592d5e807b15/501fdfee-877b-42b7-b180-de584309a082/Hamza-test-app.apk?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20181011T092801Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AKIAJSORV74ENYFBITRQ%2F20181011%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=f041f2bf43eca1ba993fbf7185ad8bcb8eccec8429f2877bc32ab22a761fa2a");
        File file = new File("C:\\Users\\Hamza\\Desktop\\Hamza-test-app.apk");
        //Create Connection
        HttpURLConnection connection =  (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("PUT");
        BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream());
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        int i;
        // read byte by byte until end of stream
        while ((i = bis.read()) > 0) {
    bos.write(i);
        }
        bos.flush();
        bis.close();
        bos.close();


        System.out.println("HTTP response code: " + connection.getResponseCode());
    }catch(Exception ex){
        System.out.println("Failed to Upload File");
    }
Run Code Online (Sandbox Code Playgroud)

我想用 java 将文件上传到 aws 农场设备,但文件未上传到 aws 项目上传列表。

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

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

无法从链中的任何提供商加载 AWS 凭证 Spring Cloud Stream Kinesis Binder

如果不使用系统级别的默认配置,我无法连接到 Spring Cloud Stream Kinesis Binder (1.2.0.RELEASE) 中的 AWS kinesis。仅当系统已配置为使用默认配置文件并且使用 [default] 配置文件设置访问密钥 ID 和秘密访问密钥时,应用程序才能工作。否则,将无法通过抛出此异常来连接到 AWS 资源:

Caused by: com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@3b2c8bda: Unable to load credentials from service endpoint, com.amazonaws.auth.profile.ProfileCredentialsProvider@688d619c: No AWS profile named 'default']
    at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:136)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1225)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:801)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:751)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:744)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:726)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:686)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:668)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:532)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:512)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:3768)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:3737)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeDescribeTable(AmazonDynamoDBClient.java:1836)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.describeTable(AmazonDynamoDBClient.java:1804)
    at com.amazonaws.services.dynamodbv2.document.Table.describe(Table.java:137)
    at org.springframework.integration.aws.metadata.DynamoDbMetadataStore.afterPropertiesSet(DynamoDbMetadataStore.java:145)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1837)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1774) …
Run Code Online (Sandbox Code Playgroud)

aws-java-sdk spring-cloud-stream spring-integration-aws

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

AWS Java SDK - 在 EC2 实例上使用 SSM 运行命令

我在网上找不到任何相关示例,也找不到解释如何执行此操作的文档。基本上我有一个Windows EC2 实例列表,我需要quser在每个实例中运行命令来检查有多少用户登录。

可以使用AWS Systems Manager服务并运行AWS-RunPowerShellScript命令来执行此操作。我只找到使用AWS CLI的示例,如下所示:

aws ssm send-command --instance-ids "instance ID" --document-name "AWS-RunPowerShellScript" --comment "Get Users" --parameters commands=quser --output text
Run Code Online (Sandbox Code Playgroud)

但如何使用 AWS Java SDK 1.11.x 来完成此任务?

amazon-web-services aws-java-sdk

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

如何将 STSAssumeRoleSessionCredentialsProvider 与 roleSessionName 和 roleArn 结合使用用于适用于 Java 2.x 的 AWS 开发工具包进行配置?

目前,对于 AWS SDK for Java 1.x,我使用以下代码。

@Configuration
@ImportResource("classpath:aws-context.xml")
public class AmazonS3Config {
 @Bean(destroyMethod = "shutdown")
 public AmazonS3Client amazonS3Client(@Value("${aws.s3.roleSessionName}") String roleSessionName, 
 @Value("${aws.s3.roleArn}") String role) {
 AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
 builder.withRegion(Regions.US_EAST_1).withCredentials(new 
 STSAssumeRoleSessionCredentialsProvider.Builder(role, roleSessionName).build());
 return (AmazonS3Client)builder.build();
   }
Run Code Online (Sandbox Code Playgroud)

如何对适用于 Java 2.x 的 AWS 开发工具包执行相同操作?

谢谢

file-upload amazon-s3 amazon-web-services aws-java-sdk aws-java-sdk-2.x

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