C#使用AwsSdkCall时Parameters字段应传入何种合法类型
解决方案
异常原因
该问题由JSII跨语言运行时的序列化约束导致:JSII无法正确序列化.NET匿名类型、自定义类实例,也无法自动转换.NET原生枚举为AWS SDK可识别的参数格式,因此会抛出运行时异常。
正确参数类型
AwsSdkCall.Parameters字段需要传入 Dictionary<string, object> 类型的实例,所有枚举类参数需显式转换为对应字符串值,示例代码如下:
using System.Collections.Generic; using Amazon.CDK.CustomResources; var sdkCall = new AwsSdkCall { Service = "SSM", Action = "putParameter", Parameters = new Dictionary<string, object> { { "Name", "/my-param" }, { "Tier", Amazon.SimpleSystemsManagement.ParameterTier.Standard.ToString() }, { "Type", Amazon.SimpleSystemsManagement.ParameterType.String.ToString() }, { "Value", "My value" } } };
注意事项
- 字典键名必须和对应AWS服务API的请求参数名完全匹配,大小写需符合AWS SDK规范
- 嵌套参数结构同样使用嵌套的
Dictionary<string, object>定义,不可直接传入AWS .NET SDK的请求类实例 - 所有非基础类型(枚举、自定义类型)都要转换为字符串、数字等基础类型后再存入字典
内容的提问来源于stack exchange,提问作者Ognjen Munjin
相关产品推荐
相关产品推荐

