在python-cdk中授予对S3的写访问权限



我能够遵循这个例子1并让我的ec2实例从S3中读取。为了写入同一个bucket,我想将第57行2grant_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_。

最新更新