繁体   English   中英

如何使用 python 为 CDK 配置 CorsRule

[英]How to configure CorsRule for CDK using python

我正在尝试找出使用 CDK(python)在 s3 存储桶上设置 cors 的正确语法。 class aws_s3.CorsRule需要 3 个参数(allowed_methods、allowed_origins、max_age=None)。 我正在尝试指定allowed_methods ,它接受方法列表,但基础是enum.Enum 那么如何创建这些方法的列表。 这是我尝试过的,但它没有通过验证。

s3.Bucket(self, "StaticSiteBucket",
        bucket_name="replaceMeWithBucketName",
        versioned=True,
        removal_policy=core.RemovalPolicy.DESTROY,
        website_index_document="index.html",
        cors=s3.CorsRule(allowed_methods=[s3.HttpMethods.DELETE],allowed_origins=["*"],max_age=3000)
        )

我唯一关注的是 cors 线:

cors=s3.CorsRule(allowed_methods=[s3.HttpMethods.DELETE],allowed_origins=["*"],max_age=3000)

尝试阅读文档就像剥洋葱。

https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_s3/HttpMethods.html#aws_cdk.aws_s3.HttpMethods

我尝试单独调用每一个,如您所见,使用s3.HttpMethods.DELETE但在尝试合成时失败。

看起来您至少忘记将传递给cors的参数包装为列表。 我同意这些文档有点像兔子洞,但是您可以看到Bucket 文档将 cors 参数指定为(Optional[List[CorsRule]])

这是我的:

from aws_cdk import core
from aws_cdk import aws_s3
from aws_cdk import aws_apigateway

aws_s3.Bucket(self,
    'my_bucket',
    bucket_name='my_bucket',
    removal_policy=core.RemovalPolicy.DESTROY,
    cors=[aws_s3.CorsRule(
        allowed_headers=["*"],
        allowed_methods=[aws_s3.HttpMethods.PUT],
        allowed_origins=["*"])
    ])

所以你的应该是:

cors=[s3.CorsRule(
    allowed_methods=[s3.HttpMethods.DELETE],
    allowed_origins=["*"],
    max_age=3000)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM