如何使用 aws cdk 创建 s3 子目录?
how do you create s3 subdirectories using aws cdk?
如果我想创建一个布局如下的桶:
bucket/
├─ subdir-1/
│ ├─ subsubdir-1/
├─ subdir-2/
├─ subdir-3/
我如何使用 cdk 执行此操作?甚至是 yml cf 模板?
如评论中所述,您不需要创建directories/template。当您使用 SDK/CLI 上传对象时,它会自动创建与上传对象时使用的密钥匹配的 folder/structure。您可以通过 CLI/SDK 创建空目录,但我认为 aws-cdk 不会这样做,因为它不应该管理 S3 的内容。
如果您真的想为存储桶维护特定布局,您可以使用存储桶策略在 SDK/CLI 将您的对象放入 S3 时仅允许特定目录。此政策可以添加到 aws-cdk(参考:aws-cdk-s3-docs-addPolicy)。策略示例如下。
{
"Sid": "Layout",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject*",
"NotResource": [
"arn:aws:s3:::{BUCKET_NAME}/subdir-1/*",
"arn:aws:s3:::{BUCKET_NAME}/subdir-1/subdir-1/*",
"arn:aws:s3:::{BUCKET_NAME}/subdir-2/*",
"arn:aws:s3:::{BUCKET_NAME}/subdir-3/*",
]
}
有关 s3 存储桶策略的更多详细信息:https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html
如果我想创建一个布局如下的桶:
bucket/
├─ subdir-1/
│ ├─ subsubdir-1/
├─ subdir-2/
├─ subdir-3/
我如何使用 cdk 执行此操作?甚至是 yml cf 模板?
如评论中所述,您不需要创建directories/template。当您使用 SDK/CLI 上传对象时,它会自动创建与上传对象时使用的密钥匹配的 folder/structure。您可以通过 CLI/SDK 创建空目录,但我认为 aws-cdk 不会这样做,因为它不应该管理 S3 的内容。
如果您真的想为存储桶维护特定布局,您可以使用存储桶策略在 SDK/CLI 将您的对象放入 S3 时仅允许特定目录。此政策可以添加到 aws-cdk(参考:aws-cdk-s3-docs-addPolicy)。策略示例如下。
{
"Sid": "Layout",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject*",
"NotResource": [
"arn:aws:s3:::{BUCKET_NAME}/subdir-1/*",
"arn:aws:s3:::{BUCKET_NAME}/subdir-1/subdir-1/*",
"arn:aws:s3:::{BUCKET_NAME}/subdir-2/*",
"arn:aws:s3:::{BUCKET_NAME}/subdir-3/*",
]
}
有关 s3 存储桶策略的更多详细信息:https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html