我目前有一个工作实现,其工作原理如下:
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) 因此,我正在尝试将现有的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
所以我使用 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)。