问题标签 [micronaut-aws]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
aws-lambda - 带有代理的 Micronaut Lambda 无法从 json body io.micronaut.web.router.exceptions.UnsatisfiedRouteException 中解组对象
在具有代理集成的 Micronaut Lambda 中,我有一个控制器应该将 JSON 内容解组为 Ping 对象:
如果我将此应用程序作为本地 micronaut webapp 启动,我可以成功执行此操作:
日志信息:
但是,当从 AWS API Manager 调用此控制器方法时,传递 Content-Type 标头和正文信息...
... 它失败:
奇怪的是Ping
,调用中对象的编组@Get
既可以用作 webapp,也可以用作 lambda。
我在 Github 上传了一个示例项目:https ://github.com/codependent/micronaut-aws-lambda-proxy
groovy - Micronauts AWS API Gateway Authorizer JSON 输出问题
我在 Micronauts/Groovy 中编写了一个简单的 lambda 函数,以将允许/拒绝策略作为 AWS API 网关授权方返回。当用作 API 网关授权方时,无法解析 JSON
由于配置错误,执行失败:无法解析策略
在本地测试时,响应在 JSON 中具有正确的属性大小写。例如:
当它在 AWS 中运行时,JSON 响应的属性全部为小写:
}
不确定情况是否是问题,但我看不出还有什么问题(尝试了许多输出变化)。我尝试了各种 Jackson 注释(@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class) 等),但它们似乎对 AWS 的输出没有影响。
知道如何排序吗?谢谢。
示例代码:
试图让输出看起来像示例。
使用本地运行示例
Lambda 函数处理程序:
}
AuthResponse 看起来像:
micronaut - Micronauts AWS 请求流处理程序不注入服务
我使用 micronaut-function-aws 功能处理了一个简单的 Micronaut AWS lambda 请求。
我注入的服务在 AWS 中运行时似乎没有创建。
如果我执行整个 groovy 脚本函数处理程序并使用 @Field @Singleton TestService testService 它在本地运行时似乎工作正常。
知道我做错了什么吗?
服务:
处理程序:
来自 AWS lambda 的堆栈跟踪
aws-lambda - 使用 DynamoDB 和 Graal 自定义运行时的 Micronaut 无服务器应用程序抛出无法构造 com.amazonaws.partitions.model.Partitions 的实例
此处提供的示例项目: https ://github.com/codependent/micronaut-aws-lambda-proxy-graal
我在 Amazon AWS 上部署了一个 Micronaut 应用程序作为 Lambda 函数。它被编译成 GraalVM 原生镜像并使用AWS Lambda Custom Runtime 运行。
如果应用程序不使用 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.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.amazonaws.partitions.model.Partitions (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
这是完整的堆栈跟踪:
更新 2:
我还尝试在 reflect.json 中为 Partitions 类添加一个条目:
aws-lambda - Graal 原生镜像调用 https 抛出引发:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须为非空
我正在生成一个进行 https 调用的 Graal 本机图像。问题是它在尝试拨打电话时抛出异常:
痕迹:
以前我必须手动向 reflect.json 添加一堆类,直到我不知道如何继续:
Github 上有一个项目:https ://github.com/codependent/graal-app
要测试它运行:
export AWS_DEFAULT_REGION=eu-central-1
docker build . -t graap-app
./sam-local.sh
更新:
我在https://github.com/oracle/graal/blob/master/substratevm/JCA-SECURITY-SERVICES.md找到了与安全相关的文档
我删除了我添加到 reflect.json 的所有类,而是将--enable-all-security-services
标志放入native-image
位于build-native-image.sh
.
现在错误是:
原因:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须为非空
micronaut - 我应该如何使用 application.yml 将存储在 aws 参数存储中的属性配置到 micronaut
我想使用内置的 micronaut 发现客户端在我的 micronaut 应用程序中使用 aws 参数存储中的属性,但是在提到“rootHierarchyPath”之后如何配置和注入各个参数并没有正确记录
这是 application.yml 代码,我已经提到了根路径但是找不到如何获取存储在参数存储中的条目“dbUserName”和“dbPassword”。
aws:客户端:系统管理器:参数存储:启用:真 useSecureParameters:真 rootHierarchyPath:/application/db
aws-lambda - 如何使用 micronaut-function-aws-api-proxy 处理多部分/表单数据文件上传
我正在使用AWS API Gateway 代理micronaut
1.1.0.RC2
并在其中使用 Kotlin Lambda 函数。micronaut-function-aws-api-proxy
1.1.0.RC3
micronaut aws api 代理适用于我的所有 API 功能,但文件上传路由除外。类和路由定义如下所示:
在本地运行,这工作正常。但是,当我通过 API Gateway 和 Lambda 使用它时,我不断收到以下错误:
同样,如果我在本地运行 micronaut 应用程序并直接访问 API(没有 micronaut AWS 代理),它会完美运行。但是,当我将它部署到 AWS 时,micronaut aws 代理似乎存在问题,无法正确解析出多部分表单数据。
我确实multipart/form-data
在 API Gateway 上设置了二进制媒体类型。我尝试使用主要 micronaut 文档( https://docs.micronaut.io/1.1.0.RC2/guide/index.html )中描述的CompletedFileUpload
类型和类型,结果相同。StreamingFileUpload
对于它的价值,我使用 AWS spark 代理 (aws-serverless-java-container-spark) 对同一件事进行了不同的实现,并且它运行正常。
为了测试,我正在运行这个 curl 命令:
有其他人对此有任何运气吗?micronaut api网关代理目前不支持它吗?任何帮助表示赞赏!
kotlin - AWS:将消息移动到死信队列,同时保留元信息
如果在处理消息时出现异常,我正在尝试将消息移动到 AWS 中的死信队列。
现在我正在删除原始消息并将其显式发送到 DLQ。但是,在执行此操作时,我会丢失消息元信息,例如原始消息 ID、总接收计数、首次发送时间戳等。
下面是相同的代码片段。
当 AWS 将消息从原始队列移动到 DLQ 时达到最大接收计数后,它会保留所有提到的属性。有什么方法可以使用 aws-sdk 实现相同的目标吗?
我正在使用带有 Micronaut 的 Agorapulse 库来发送/接收来自 SQS 的消息。
amazon-web-services - 从 cognito 身份池 identityId 获取 cognito 用户池用户名
我正在使用 AWS Congito 用户池进行账户管理,其中 Cognito 身份池将此用户池作为身份提供者。我正在使用它来控制通过向 Lambda 发送请求的 API 网关对 API 的访问。我的 Lambda 是使用 Micronaut 使用 Java 8 实现的。所有这些工作正常。
在 Lambda 中,我从以下位置获取Principal
名称HttpRequest
:
Cognito identityId 的字符串名称中返回的内容。像这样的东西:
us-east-1:xxxe650-53f4-4cba-b553-5dff42bexxxx
我想记录实际的用户登录名,或者至少有一些方法可以在需要时将 identityId 转换为登录名。
LookupDeveloperIdentity API 调用似乎是解决这个问题的正确方法,但我无法让它工作。
尝试使用 Java 和 AWS Java SDK 2 执行此操作:
抛出异常
software.amazon.awssdk.services.cognitoidentity.model.NotAuthorizedException:您无权访问此身份(服务:CognitoIdentity,状态代码:400,请求 ID:64e36646-612b-4985-91d1-82aca770XXXX)
尝试通过 CLI 执行此操作会产生类似的结果:
aws cognito-identity lookup-developer-identity --identity-id us-east-1:xxxxe650-53f4-4cba-b553-5dff42bexxxx --identity-pool-id us-east-1:xxxx0aa1-89f9-4418-be04- 7e83c838xxxx --max-results=10
调用 LookupDeveloperIdentity 操作时发生错误 (NotAuthorizedException):您无权访问此身份
我已确保现有的 IAM 策略应该能够处理此问题,并且当我使用没有此策略的角色尝试它时,我得到一个不同的错误
所以问题归结为:
- 这是从身份池 id 获取用户池用户名的最佳方式吗?
- 如果是 - 我做错了什么?
- 如果不是 - 这样做的更好方法是什么?
aws-lambda - 尝试创建 SNS 客户端时,Micronaut 出现日志记录错误
重现步骤:
- mn create-app example.micronaut.complete --features aws-api-gateway-graal
- 添加依赖实现 'com.amazonaws:aws-java-sdk-sns:1.11.656'
- 修改 mn-cli 自动创建的 index() 函数
- ./sam-local.sh
- http://localhost:3000/ping
我收到以下错误,然后函数超时:
使用 requestId [21a6b1d0-7697-12b0-f4d8-d15e16954a4c] 调用失败:org.apache.commons.logging.LogFactoryjava.lang.NoClassDefFoundError:org.apache.commons.logging.LogFactory 中的 org.apache.commons.logging.LogFactory。 org.apache.commons.logging.LogFactory.(LogFactory.java:1674) 上的类 $(LogFactory.java:1021)