我已经设置了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
答案 0 :(得分:0)
为了重现您的情况,我做了以下事情:
然后我看到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