小编Kri*_*ngs的帖子

生成AWS Signature v4签名以上载到s3(从v2迁移)

我目前有一个工作实现,其工作原理如下:

UI选择一个文件=>点击upload =>调用我的后端API来请求签名,因为我不想公开我的访问权限+ secretkey =>返回签名+ policy =>上传到s3.

这对于v2来说工作正常而且花花公子.

String base64Policy = (new BASE64Encoder()).encode(policy.toString().getBytes("UTF-8")).replaceAll("\n", "").replaceAll("\r", "");

        Mac hmac = Mac.getInstance("HmacSHA1");
        hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA1"));
        String signature = (new BASE64Encoder()).encode(hmac.doFinal(base64Policy.getBytes("UTF-8"))).replaceAll("\n", "");
Run Code Online (Sandbox Code Playgroud)

现在我到了有趣的位置,我的新桶位于不支持v2的区域.

我正在关注AWS文档,但我认为我误解了有效负载位.我是否真的需要在我的整个文件的sha256哈希中传递我的UI?因为那似乎有点痛苦,特别是因为我的文件可以> 1 gig.

我试图使用的代码:

        byte[] signatureKey = getSignatureKey(secretKey, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")),  bucketRegion, "s3");
        StringBuilder sb = new StringBuilder();
        for (byte b : signatureKey) {
            sb.append(String.format("%02X", b));
        }

private static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName) throws Exception {
        byte[] kSecret = ("AWS4" + key).getBytes("UTF8");
        byte[] kDate = HmacSHA256(dateStamp, kSecret);
        byte[] …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 amazon-web-services

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

AWS SAM-模板没有任何与Lambda函数连接的API

因此,我正在尝试将现有的spring boot应用程序转换为AWS lambda并使用SAM。

我正在尝试使用aws-sam-cli在本地尝试我的lambda,但是通过我的SAM设置我得到了: Template does not have any APIs connected to Lambda functions

当我做: sam local start-api

我的template.yml

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: foo
Resources:
  MailFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: bar.LambdaHandler::handleRequest
      Runtime: java8
      CodeUri: target/foo-bar-1.0.jar
      Timeout: 300
      MemorySize: 1024
      Events:
        Timer:
          Type: Schedule
          Properties:
            Schedule: rate(1 day)
Run Code Online (Sandbox Code Playgroud)

知道我在做什么错吗?据我从https://blog.couchbase.com/aws-serverless-lambda-scheduled-events-tweets-couchbase/ + https://docs.aws.amazon.com/lambda/latest所知,它看起来是正确的/dg/tutorial-scheduled-events-schedule-expressions.html

amazon-web-services aws-serverless

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

OpenCSV - 注册自定义转换器

所以我使用 opencsv 将 csv 转换为 bean。这一切都适用于原始值,但我想使用枚举,这会带来一些问题。

我正在浏览代码,似乎我需要完全实现一个新的映射策略来做到这一点,只是为了设置一个自定义转换器。有没有更好的方法呢?

转换的当前代码:

CsvToBean<MyType> csvBean = new CsvToBeanBuilder<MyType>(new FileReader(csvFile))
                 .withType(MyType.class)
                 .withIgnoreLeadingWhiteSpace(true)
                 .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_QUOTES)
                 .build();
Run Code Online (Sandbox Code Playgroud)

我在 2012 年发现了一些与此相关的问题,但答案不再适用于当前的 opencsv 版本 (4.2)。

java enums javabeans opencsv

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