WriteOnlyProperty removed before calling a Delete handler - Contract tests failure due to language specific plugin
还没有人认领这个 Issue。
评估
调研方向
首先阅读 issue 中描述的 contract test 流程,以及其中链接的 CloudFormation 资源类型契约文档,尤其要关注删除要求。然后跟踪此 Java 插件中剥离 writeOnlyProperties 的位置,以及验证删除请求的位置。完成的标准是:删除处理程序能够接收所需的 write-only 属性,或者能够适当地避免必需属性验证,并且 contract_create_delete 测试通过。
由索引模型根据 Issue 内容生成。
描述
Hi,
My resource has a property "SchemaHandlerPackage", which is both a required property and a writeOnlyProperty. I am running contract_create_delete on my resource. The create handler is invoked and returns success after creating the resource. I return all required properties and the primary ID in the resourceModel after creating the resource.
My create handler returns IN_PROGRESS two times because it takes sometime to create the resource. For these two calls, I see the "SchemaHandlerPackage" in the response(because I return it in the intermediate response as well), something like this(in rpdk.log):
[2020-10-19T19:46:46Z] DEBUG - Received response
{
'status': 'IN_PROGRESS',
'callbackContext': {removed the values here},
'callbackDelaySeconds': 5,
'resourceModel': {
'Arn': 'arn:aws:cloudformation:us-west-2:336098619110:type/resource/Organization-Service-Resource17/00000033',
'SchemaHandlerPackage': 's3: //cloudformationsampleresourcetype/organization-service-resource17.zip',
'TypeName': 'Organization::Service::Resource17'
}
}
But when the handler returns success, the "SchemaHandlerPackage" is disappeared from the response, even though I set it in the code:
[2020-10-19T19:47:32Z] DEBUG - Received response{
'status': 'SUCCESS',
'callbackDelaySeconds': 0,
'resourceModel': {
'Arn': 'arn:aws:cloudformation:us-west-2:336098619110:type/resource/Organization-Service-Resource17/00000033',
'Description': 'Anexampleresourceschemademonstratingsomebasicconstructsandvalidationrules.',
'IsDefaultVersion': False,
'LastUpdated': '2020-10-19T19: 46: 50.047Z',
'ProvisioningType': 'FULLY_MUTABLE',
'Schema': {},
'SourceUrl': 'https: //github.com/aws-cloudformation/aws-cloudformation-rpdk.git',
'TimeCreated': '2020-10-19T19: 46: 50.047Z',
'TypeName': 'Organization::Service::Resource17',
'VersionId': '00000033',
'Visibility': 'PRIVATE'
}
}
I later found out that the writeOnlyProperties are removed before framing the request to the delete handler. By doing this, the writeOnlyProperty, which is also a required property is getting removed, hence the delete handler fails due to a validation error, which results in that contract test failure.
[2020-10-19T19:48:07Z] DEBUG - Received response
{'status': 'FAILED', 'errorCode': 'InvalidRequest', 'message': 'Model validation failed (#: required key [SchemaHandlerPackage] not found)', 'callbackDelaySeconds': 0}
[2020-10-19T19:48:08Z] DEBUG - Caught exit recommendation
Solution: Is the "required property validation" necessary for a delete handler? Checking for a Primary Id should be enough for a delete handler as per https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-test-contract.html#resource-type-test-contract-delete Or you can remove a writeOnlyProperty only if it's not a required property.
Thanks,
Uma
- 主要语言
- Java
- 星标
- 30
- 派生
- 48
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
aws-cloudformation/cloudformation-cli-java-plugin 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 25/100
aws-cloudformation/cloudformation-cli-java-plugin#415 · 1 条评论 ·
-
难度 4/5 3-5 天 新手友好度 42/100
-
难度 5/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 20/100
-
injectCredentialsAndInvokeV2 method in proxy class doesn't support API's like PutObject from S3. 未关闭
难度 5/5 一周以上 新手友好度 25/100
查看 aws-cloudformation/cloudformation-cli-java-plugin 的全部 Issue
相似的 Issue
-
certification
难度 1/5 1 小时以内 新手友好度 80/100
-
难度 2/5 1-3 小时 新手友好度 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's 未关闭bug ecr
难度 2/5 1-3 小时 新手友好度 75/100
-
Needs: Triage Type: Feature request
难度 2/5 1-3 小时 新手友好度 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
难度 2/5 1-3 小时 新手友好度 65/100
github/copilot-sdk#2760 ·