【问题标题】:Is it possible to add NotificationConfiguration to an existing S3 buckets using CFT?是否可以使用 CFT 将 NotificationConfiguration 添加到现有的 S3 存储桶?
【发布时间】:2018-03-09 07:42:43
【问题描述】:

我还是 AWS 服务的新手。

我想使用 CloudFormation 模板 (CFT) 在现有 S3 存储桶上添加 Lambda 触发器。这可能吗?

以下 CFT 正在尝试创建新的 S3 存储桶并在其上添加事件通知。

    S3BUCKET_NOTIFCATION = Bucket(
        "S3Bucket",
        BucketName=s3_bucket("confidential", Ref(ENV)),
        NotificationConfiguration=NotificationConfiguration(
            LambdaConfigurations=[
                LambdaConfigurations(
                    Event="s3:ObjectCreated:*",
                    Filter=Filter(
                        S3Key=S3Key(
                            Rules=[Rules(Name="prefix", Value=Ref(inputKeyPrefix)),
                                   Rules(Name="suffix", Value=".json")]
                        )
                    ),
                    Function=Ref(cost_function)
                )
            ]
        )
    )

是否可以将NotificationConfiguration 添加到现有存储桶中?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation


    【解决方案1】:

    我也无法将NotificationConfiguration 添加到现有存储桶中。当你尝试时,你会得到错误CREATE_FAILED. Reason: S3_BUCKET already exists

    ServerFault question from 2013 详细说明不允许修改预先存在的存储桶。它似乎仍然是正确的。

    【讨论】:

      【解决方案2】:

      正如其他人所指出的,由于各种原因,这仍然是不允许的。

      选项 1) 推荐

      恕我直言,这里的理想方法是首先导入由 IaC/CloudFormation 管理的现有云资源(在本例中为 S3)。然后,在导入资源后,您可以将 NotificationConfiguration 添加到 CloudFormation 模板。这种方法允许您管理现有资源,这些资源最初可能是手动配置的,以便通过 IaC/Cfn 进行管理。

      选项 2) 你的要求

      如果您想通过 CloudFormation 将 NotificationConfiguration 添加到现有 S3 存储桶,解决方法是使用

      创建了一个 Lambda 支持的自定义资源...自定义资源 触发一个 Lambda 函数,该函数会触发 PutBucketNotification 用于向您的 S3 存储桶添加通知配置的 API。

      详情here

      注意:请考虑选项 2) 的限制。其中一些记录在引用的链接中。

      【讨论】:

        猜你喜欢
        • 2017-11-24
        • 2018-09-13
        • 2021-03-25
        • 2018-01-04
        • 2011-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        相关资源
        最近更新 更多