标签: micronaut-aws

从 Cognito 身份池 identityId 获取 Cognito 用户池用户名

我正在使用 AWS Congito 用户池通过 Cognito 身份池进行账户管理,该身份池将此用户池作为身份提供者。我使用它来控制通过 API 网关对 API 的访问,该网关将请求发送到 Lambda。我的 Lambda 是使用 Micronaut 用 Ja​​va 8 实现的。所有这些都运行良好。

在 Lambda 中,我从以下Principal中获取名称HttpRequest

  protected String resolveUser( HttpRequest request ){
    String ret = null;

    Optional<Principal> principal = request.getUserPrincipal();
    if( principal.isPresent() ){
      ret = principal.get().getName();
    }

    if( ret == null || ret.length() == 0 ){
      ret = "unknown";
    }
    return ret;
  }
Run Code Online (Sandbox Code Playgroud)

Cognito identityId 的字符串名称中返回的内容。像这样的东西:

us-east-1:xxxxe650-53f4-4cba-b553-5dff42bexxxx

我想记录实际的用户登录信息,或者至少有一些方法可以在需要时将 identityId 转换为登录信息。

LookupDeveloperIdentity API调用似乎是去了解这个正确的方式,但我无法得到它的工作。

尝试使用 Java 和 AWS Java SDK 2 执行此操作: …

amazon-web-services amazon-cognito aws-java-sdk micronaut micronaut-aws

14
推荐指数
1
解决办法
2322
查看次数

使用 DynamoDB 和 Graal 自定义运行时的 Micronaut 无服务器应用程序抛出无法构建 com.amazonaws.partitions.model.Partitions 的实例

此处提供示例项目: https : //github.com/codependent/micronaut-aws-lambda-proxy-graal

我在 Amazon AWS 上部署了一个 Micronaut 应用程序作为 Lambda 函数。它被编译成 GraalVM 本机映像并使用AWS Lambda 自定义运行时运行

如果应用程序不使用 DynamoDB,它会顺利运行。配置它并作为普通 Java 应用程序启动时,它也可以正常工作。但是,当将其用作在 AWS 上运行的 Graal 本机映像时,它会失败:

io.micronaut.context.exceptions.BeanInstantiationException:实例化 [com.amazonaws.services.dynamodbv2.document.DynamoDB] 类型的 bean 时出错:消息:无法从 com/amazonaws/partitions/endpoints.json 加载分区元数据

我正在使用此依赖项: compile 'com.amazonaws:aws-java-sdk-dynamodb:1.11.504'

如何修复无法加载分区元数据错误?

完整日志:

Caused by: com.amazonaws.SdkClientException: Unable to load partition metadata from com/amazonaws/partitions/endpoints.json
at com.amazonaws.partitions.PartitionsLoader.build(PartitionsLoader.java:82)
at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:64)
at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:52)
at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:105)
at com.amazonaws.client.builder.AwsClientBuilder.getRegionObject(AwsClientBuilder.java:256)
at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:245)
at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:232)
at com.codependent.micronaut.awslambda.configuration.DynamoDbConfiguration.dynamoDbClient(DynamoDbConfiguration.kt:18)
at com.codependent.micronaut.awslambda.configuration.$DynamoDbConfiguration$DynamoDbClientDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1385)
Run Code Online (Sandbox Code Playgroud)

更新:

我错过了异常的以下嵌套原因: Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of …

amazon-dynamodb aws-lambda graalvm micronaut micronaut-aws

5
推荐指数
1
解决办法
2075
查看次数

如何使用 micronaut-function-aws-api-proxy 处理多部分/表单数据文件上传

我正在 AWS API Gateway 代理中使用micronaut 1.1.0.RC2Kotlin micronaut-function-aws-api-proxy 1.1.0.RC3Lambda 函数。micronaut aws api 代理适用于我的所有 API 函数(文件上传路由除外)。类和路由定义如下所示:

@Controller("/things/{id}/attachments")
class AttachmentController {
    @Post(consumes = [MediaType.MULTIPART_FORM_DATA])
    fun post(request: HttpRequest<Any>, id: Int, file: CompletedFileUpload): Attachment? {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在本地运行,效果很好。但是,当我通过 API Gateway 和 Lambda 使用它时,我不断收到以下错误:

ERROR c.a.s.p.AwsProxyExceptionHandler Called exception handler for:
io.micronaut.web.router.exceptions.UnsatisfiedRouteException: Required argument [CompletedFileUpload file] not specified
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:279)
at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:122)
...
Run Code Online (Sandbox Code Playgroud)

同样,如果我在本地运行 micronaut 应用程序并直接访问 API(没有 micronaut AWS 代理),它就能完美运行。但是,当我将其部署到 AWS 时,micronaut aws 代理似乎存在问题,无法正确解析多部分表单数据。

我确实已multipart/form-data在 API 网关上设置为二进制媒体类型。我尝试使用micronaut 主要文档(https://docs.micronaut.io/1.1.0.RC2/guide/index.htmlCompletedFileUpload )中描述的类型和类型,得到相同的结果。 …

aws-lambda aws-api-gateway micronaut micronaut-aws

5
推荐指数
0
解决办法
1729
查看次数