Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS配置是否可以在启用对象锁定的情况下写入S3存储桶?_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services AWS配置是否可以在启用对象锁定的情况下写入S3存储桶?

Amazon web services AWS配置是否可以在启用对象锁定的情况下写入S3存储桶?,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我已经设置了AWS Config[1]以将配置项传递到S3存储桶。当S3存储桶没有启用对象锁定[2]时,一切正常。但是,当该bucket确实启用了对象锁定时,AWS Config将无法创建其传递通道,并且会出现以下错误消息 错误:创建传递通道失败:未充分传递策略异常:对s3存储桶的传递策略不足:oss-devex tf模块aws config受管存储桶,无法写入存储桶,前提是s3密钥前缀为“config test” 我搜索了这个异常,它通常与权限有关。在进行故障排除时,我为AWS Config分

我已经设置了AWS Config[1]以将配置项传递到S3存储桶。当S3存储桶没有启用对象锁定[2]时,一切正常。但是,当该bucket确实启用了对象锁定时,AWS Config将无法创建其传递通道,并且会出现以下错误消息

错误:创建传递通道失败:未充分传递策略异常:对s3存储桶的传递策略不足:oss-devex tf模块aws config受管存储桶,无法写入存储桶,前提是s3密钥前缀为“config test”

我搜索了这个异常,它通常与权限有关。在进行故障排除时,我为AWS Config分配了一个角色,该角色对S3 bucket(即,
S3:
对bucket和对象都有完全权限,这比文档[3]中描述的要多),我没有在bucket上设置KMS Customer Master Key,我甚至在rest中禁用加密只是为了测试它

出于审核和法规遵从性要求,我想使用对象锁定,但在AWS配置文档中找不到任何引用

编辑: 我已经编写了一个terraform模块[4]来设置AWS配置。该模块中有几个示例运行良好,但只有在S3 bucket上未启用对象锁定的情况下才能运行

[1] -

[2] -

[3] -


[4] -

为了再现您的情况,我做了以下操作:

  • 创建了一个启用版本控制和对象锁定的AmazonS3存储桶
  • 修改了已在使用AWS配置的现有IAM角色,以包括新的bucket
  • 修改了AWS配置以写入新的bucket(因为我已经让配置与另一个bucket一起运行)
然后我看到Config在bucket中创建了一个
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
因此,启用对象锁定似乎不会影响AWS配置使用bucket的能力

您应该检查AWS Config正在使用的IAM角色,以确认它对所需bucket具有适当的权限

我使用的IAM角色(我在现有设置中挂起,刚刚添加了新的bucket名称)包含:

  • awsconfigroule
    托管策略
  • config-role\u AWSCOnfigdDeliveryPermissions\u ap-southeast-2
    可能在某个时候自动创建,其中包含:
  • 另外,它对很多服务都有“只读”的政策(同样,我也不清楚我为什么会有这种服务!)

您是否尝试将输出发送到未激活对象锁定的存储桶?我怀疑您的问题可能与对象锁定有关,而不是与对象锁定有关。基本上,您需要向目标Bucket添加一个Bucket策略。是的,当对象锁定被禁用时,它工作得很好。我已经编辑了这个问题,并进行了澄清。谢谢,我对此有点困惑。创建bucket时,首先需要启用对象锁定。然后,可以锁定和解锁单个对象。我很惊讶,仅仅在bucket级别激活对象锁定就会导致问题。它不应影响写入日志文件的能力。我建议再看一看。对象锁定确实需要在创建bucket时启用。当我没有启用它时(在创建时),AWS配置可以创建它的传递通道并将日志推送到bucket。当我在创建bucket时启用对象锁定时,AWS配置无法设置其传递通道。谢谢你的链接。我确实对AWS文档进行了广泛的审查,但没有发现对我解决这个问题有任何帮助。我会将你发布的链接添加到问题中。谢谢,你是通过AWS控制台做这些事情的吗?我这样问是因为控制台在后台做了一些事情,我想把它们移植到我的terraform代码中。您能粘贴您使用的角色配置吗?是的,它是通过控制台完成的。上面添加了角色信息。我无法用terraform模块复制此信息。我创建了两个bucket(有对象锁定和没有对象锁定)。首先,启用AWS Config在不锁定对象的情况下写入bucket(使用与John完全相同的角色策略),这很好(
ConfigWritabilityCheckFile
写入bucket)。然后,在第二次terraform运行时,我将AWS配置使用的bucket切换为启用对象锁定的bucket,这会产生与我以前看到的完全相同的错误(
InsufficientDeliveryPolicyException:对s3 bucket的传递策略不足…
)。我还试图通过AWS控制台切换正在工作的AWS配置设置的存储桶,但遇到了类似的错误。有人说:AWS配置没有足够的权限将配置信息发送到指定的S3存储桶。更新角色或bucket权限并重试。接下来,我通过AWS控制台尝试了相同的设置,让它创建所有内容(S3 bucket、角色等)。然后我创建了一个启用对象锁定的新bucket,并从控制台为AWS配置创建的bucket复制了所有其他设置。在AWS配置中切换存储桶在控制台上产生了相同的错误。我确实注意到,通过控制台,使用对象锁定创建的bucket处于None模式(而我至少需要治理模式)。我试着在两种模式下切换铲斗,但都不起作用。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject*"
            ],
            "Resource": [
                "arn:aws:s3:::stack-lock/AWSLogs/123456789012/*"
            ],
            "Condition": {
                "StringLike": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}