使用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号
谢谢
有没有办法使用全局二级索引从 DynamoDB 中的表执行批量加载?
该batchLoad API只接受HASHKEYS和queryPage API只允许您在一个关键传球。
我正在寻找用于调用 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..我想,我正在尝试遵循本教程...
....但我不确定我是否已正确安装 SDK,而且我看不到密钥和密钥 ID 传递到 API 调用的位置...
在我的应用程序中,我将获得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)下载文件?
我正在使用 TransferManager 将文件上传到我的s3 存储桶。虽然文档说尽可能重用一个实例,但它也说一旦传输完成就应该调用关闭。
文档的相关部分:
TransferManager 负责管理连接、线程等资源;尽可能共享 TransferManager 的单个实例。TransferManager 与适用于 Java 的 AWS 开发工具包中的所有客户端类一样,是线程安全的。传输完成后调用 TransferManager.shutdownNow() 释放资源。
这是从字面上理解的,还是我们可以重用对象并在应用程序关闭时调用关闭?
一点背景知识:我们之前使用相同的 s3 客户端为每次上传创建一个 TransactionManager,但我们开始AbortedException在某些上传时遇到问题。
我正在使用 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 代码中进行这个预处理。
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 项目上传列表。
如果不使用系统级别的默认配置,我无法连接到 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) 我在网上找不到任何相关示例,也找不到解释如何执行此操作的文档。基本上我有一个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 来完成此任务?
目前,对于 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