我有以下几点:
const accessLogsBucket: Bucket = new Bucket(this, 'LogsBucket', {
bucketName: `logs-${account}-${region}`,
versioned: true,
encryption: BucketEncryption.S3_MANAGED,
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
accessControl: BucketAccessControl.LOG_DELIVERY_WRITE,
removalPolicy: RemovalPolicy.RETAIN,
});添加一个S3存储桶,我想在其中添加一个策略,以便其他亚马逊网络服务账户能够向其写入。例如,我喜欢添加此策略:
{
"Version": "2008-10-17",
"Id": "PolicyForCombinedBucket",
"Statement": [
{
"Sid": "Set permissions for objects",
"Effect": "Allow",
"Principal": {
"AWS": ["{PayerAccountA}","{PayerAccountB}"]
},
"Action": [
"s3:ReplicateObject",
"s3:ReplicateDelete"
],
"Resource": "arn:aws:s3:::{BucketName}/*"
}
]
}所以我试着:
accessLogsBucket.addToResourcePolicy(
new PolicyStatement({
effect: Effect.ALLOW,
actions: [
"s3:ReplicateObject",
"s3:ReplicateDelete"
],
principals: [new AnyPrincipal()],
resources: [
accessLogsBucket.arnForObjects("*")
]
})
)我如何才能做到这一点?
发布于 2021-10-06 23:25:06
好吧,你已经很接近了。但我认为你有一些错误的行动,也许是政策的倒退。
跨账号访问S3存储桶请参考this link,您可以在CDK中复制这些策略(或类似策略)。另外,由于您设置了block公网访问权限,因此您的S3 bucket需要在一个私有网络中,该私有网络可以通过接入点和私有网络共享的方式交叉访问另一个账户中的私有网络。
https://stackoverflow.com/questions/69468714
复制相似问题