为何AWS IoT自定义证书提供者的Lambda未被CreateCertificateFromCsr调用?
问题:自定义AWS IoT证书提供者未触发Lambda
我已创建AWS IoT证书提供者,配置如下:
{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:eu-west-1:XXXXX:certificateprovider/my-certificate-provider", "lambdaFunctionArn": "arn:aws:lambda:eu-west-1:XXXXX:function:custom-certificate-provider", "accountDefaultForOperations": [ "CreateCertificateFromCsr" ], "creationDate": "2024-03-19T07:10:20.261000+01:00", "lastModifiedDate": "2024-03-19T07:10:20.261000+01:00" }
同时创建了IoT CA证书:
{ "certificates": [ { "certificateArn": "arn:aws:iot:eu-west-1:XXXXX:cacert/YYYY", "certificateId": "YYYY", "status": "ACTIVE", "creationDate": "2024-03-19T07:58:23.270000+01:00" } ] }
按此配置,是否应该支持CreateCertificateFromCsr API或create-certificate-from-csr CLI命令?目前调用这些方法时,仍然使用Amazon内置的签发机制,自定义证书提供者关联的Lambda未被触发。
核心结论
你的配置理论上应该支持通过自定义证书提供者处理CreateCertificateFromCsr操作,但当前未触发Lambda的原因是:调用API/CLI时未显式指定使用自定义提供者,默认仍会走Amazon内置签发流程。
关键说明
即使将自定义证书提供者设置为CreateCertificateFromCsr操作的账号默认,AWS IoT的CreateCertificateFromCsr API/CLI不会自动切换到自定义提供者——必须显式指定证书提供者的ARN或名称,才会触发关联的Lambda。
正确调用方式
- CLI命令:添加
--certificate-provider参数指定自定义提供者名称或ARN:
aws iot create-certificate-from-csr \ --certificate-signing-request file://your-csr.pem \ --certificate-provider my-certificate-provider \ --set-as-active
- API调用:请求中包含
certificateProvider字段:
{ "certificateSigningRequest": "你的CSR内容", "certificateProvider": "my-certificate-provider", "setAsActive": true }
额外验证项
- 确认Lambda函数拥有
iot:CreateCertificateFromCsr等必要权限,且IoT服务已被授权调用该Lambda(需在Lambda资源策略中配置允许IoT触发)。 - 确认CA证书已与自定义证书提供者正确关联(如果Lambda逻辑需要使用该CA签发证书)。
内容的提问来源于stack exchange,提问作者wlek
相关产品推荐
相关产品推荐

