AWS Config可以在启用对象锁定的情况下写入S3存储桶吗?

时间:2019-09-11 08:01:11

标签: amazon-web-services amazon-s3

我已经设置了AWS Config [1]以将配置项传递到S3存储桶。当S3存储桶未启用对象锁定[2]时,一切工作正常。但是,当该存储桶确实启用了对象锁定后,AWS Config无法创建其交付渠道,并显示以下消息,错误提示

  

错误:创建交付渠道失败:InsufficientDeliveryPolicyException:针对s3存储桶的交付策略不足:oss-devex-tf-module-aws-config-managed-bucket,如果s3键前缀为'config-test,则无法写入存储桶'。

我已经搜索了此异常,它通常与权限有关。在进行故障排除时,我已经为AWS Config分配了一个角色,该角色对S3存储桶具有完全权限(即,存储桶和对象上的s3:*都比文档[3]中描述的要多),在存储桶上没有设置KMS客户主密钥,我什至为了测试它甚至禁用了静态加密。

由于审核和合规性要求,我想使用对象锁定,但是在AWS Config文档中找不到任何引用。

编辑: 我已经编写了一个Terraform模块[4]来设置AWS Config。该模块中有几个示例可以很好地发挥作用,但前提是在S3存储桶上未启用对象锁定的情况下。

[1]-https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html

[2]-https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html

[3]-https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-policy.html

[4]-https://gitlab.com/open-source-devex/terraform-modules/aws/config-managed-rules

1 个答案:

答案 0 :(得分:0)

为了重现您的情况,我做了以下事情:

  • 创建了一个激活了版本控制和对象锁定功能的Amazon S3存储桶
  • 修改了已经与AWS Config一起使用的现有IAM角色,以包括新存储桶
  • 修改了AWS Config以写入新存储桶(因为我已经使Config与另一个存储桶一起运行)

然后我看到Config在存储桶中创建了一个cordova-plugin-compat@1.2.0对象。

一段时间后,出现具有此路径的对象:

cordova build android

因此,启用对象锁定似乎并不会影响AWS Config使用存储桶的能力。

您应检查AWS Config使用的IAM角色,以确认它具有所需存储桶的适当权限。

我使用的IAM角色(我在现有设置中一直徘徊,并且刚刚添加了新的存储桶名称)包含:

  • INVoiceShortcutCenter.shared.getVoiceShortcut(with: uuid) { (invoiceShortcut, error) in //invoiceShortcut returned is always nil } 托管策略
  • ConfigWritabilityCheckFile可能是在某个时候自动创建的,其中包含:
AWSLogs/123456789012/Config/ap-southeast-2/2019/9/17/ConfigSnapshot/123456789012_Config_ap-southeast-2_ConfigSnapshot_20190917T224217Z_ea973cd9-25ff-4cbe-97ca-84ef150a1981.json.gz
  • 此外,它对许多服务都有“只读”政策(同样,不确定我为什么拥有此服务的历史!)