Python CDK中为EC2授予S3读写权限时Asset无grant_read_write方法如何解决
报错原因
你遇到的报错是因为AWS CDK中Asset类(对应本地资源打包上传到S3的资源对象)本身没有内置grant_read_write()方法,该方法是S3桶IBucket接口的原生方法,Asset仅封装了只读场景的grant_read()快捷方法,因此直接调用会触发类型不匹配错误。
解决方法
你可以直接调用Asset实例关联的S3桶对象的授权方法,修改对应代码即可:
... # Userdata executes script from S3 instance.user_data.add_execute_file_command( file_path=local_path ) # 替换原来的asset.grant_read_write调用,直接通过asset关联的桶授权 asset.bucket.grant_read_write(instance.role) ...
如果需要限制EC2仅能写入桶内特定路径,可添加路径前缀参数:
asset.bucket.grant_read_write(instance.role, "upload/*")
额外说明
如果后续需要写入的是其他独立创建的S3桶而非Asset对应的桶,直接调用对应桶实例的grant_read_write()方法即可,不需要通过Asset关联。
内容的提问来源于stack exchange,提问作者jjk
相关产品推荐
相关产品推荐

