我能够遵循这个例子1并让我的ec2实例从S3中读取。为了写入同一个bucket,我想将第57行2从grant_read()
更改为grant_read_write()
应该起作用。
...
# Userdata executes script from S3
instance.user_data.add_execute_file_command(
file_path=local_path
)
# asset.grant_read(instance.role)
asset.grant_read_write(instance.role)
...
然而,根据错误消息,无法访问记录的3函数。
>> 57: Pyright: Cannot access member "grant_read_write" for type "Asset"
我错过了什么?
1https://github.com/aws-samples/aws-cdk-examples/tree/master/python/ec2/instance
2https://github.com/aws-samples/aws-cdk-examples/blob/master/python/ec2/instance/app.py#L57
3https://docs.aws.amazon.com/cdk/latest/guide/permissions.html#permissions_grants
这是Asset:的文档
资产表示本地文件或目录,它自动上传到S3,然后可以在CDK应用程序中被引用。
没有提供grant_read_write方法,因为它毫无意义。您链接的文档不适用于此处。
资产只是一个Zip文件,它将被上传到引导的CDK s3存储桶,然后在部署时由Cloudformation引用。
如果您有一个想要放入s3存储桶的脚本,那么您不想使用任何形式的资产,因为它是一个zip文件。一旦bucket已经存在,您更适合使用boto3命令来上传它,或者将其作为codePipeline的一部分来创建带有CDK的bucket,然后管道中的下一步将其上传。
read_ write在这种情况下用于CCD_。