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 s3 如何使用AWSSDK以编程方式启用s3 bucket默认加密?_Amazon S3 - Fatal编程技术网

Amazon s3 如何使用AWSSDK以编程方式启用s3 bucket默认加密?

Amazon s3 如何使用AWSSDK以编程方式启用s3 bucket默认加密?,amazon-s3,Amazon S3,我试图以编程方式为s3 Bucket启用默认加密。以下操作不起作用,也没有错误。有人知道原因吗 private async Task<PutBucketEncryptionResponse> EnableServerSideEncriptionAsync(string bucketName) { return await S3Client.PutBucketEncryptionAsync(new PutBucketEncryptionReque

我试图以编程方式为s3 Bucket启用默认加密。以下操作不起作用,也没有错误。有人知道原因吗

        private async Task<PutBucketEncryptionResponse> EnableServerSideEncriptionAsync(string bucketName)
    {
        return await S3Client.PutBucketEncryptionAsync(new PutBucketEncryptionRequest
        {
            BucketName = bucketName,
            ServerSideEncryptionConfiguration = new ServerSideEncryptionConfiguration()
            {
                ServerSideEncryptionRules = new List<ServerSideEncryptionRule>()
                {
                    new ServerSideEncryptionRule()
                    {
                        ServerSideEncryptionByDefault = new ServerSideEncryptionByDefault()
                        {
                            ServerSideEncryptionAlgorithm = ServerSideEncryptionMethod.AES256
                        }

                    }
                }
            }
        });
    }
private async Task EnableServerSideEncriptionAsync(字符串bucketName)
{
返回等待S3Client.PutbucketEncryptionSync(新的PutBucketEncryptionRequest
{
BucketName=BucketName,
ServerSideEncryptionConfiguration=新的ServerSideEncryptionConfiguration()
{
ServerSideEncryptionRules=新列表()
{
新ServerSideEncryptionRule()
{
ServerSideEncryptionByDefault=新的ServerSideEncryptionByDefault()
{
ServerSideEncryptionAlgorithm=ServerSideEncryptionMethod.AES256
}
}
}
}
});
}
我尝试使用,看看会发生什么

我创建了一个新桶,然后运行:

aws s3api put-bucket-encryption --bucket my-bucket --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'
然后我转到AmazonS3控制台中的bucket,单击属性选项卡,然后显示默认加密框:AES-256


最后,这是一个权限问题。我没有权限查看默认加密的状态。具有权限的用户可以看到默认加密已启用

感谢John Rotenstein抽出时间为这个问题找到解决方案

希望aws控制台显示“拒绝访问”的消息 显示错误默认加密的功能被禁用


晚安,一小时前我也遇到了同样的问题,也许我找到了解决办法! 代码:

private async void EncryptBucket(字符串bucketName)
{
var encryptResquest=新的PutBucketEncryptionRequest
{
BucketName=BucketName,
ServerSideEncryptionConfiguration=新的ServerSideEncryptionConfiguration()
{
ServerSideEncryptionRules=新列表()
{
新ServerSideEncryptionRule()
{
ServerSideEncryptionByDefault=新的ServerSideEncryptionByDefault()
{
ServerSideEncryptionAlgorithm=ServerSideEncryptionMethod.AWSKMS,
ServerSideEncryptionKeyManagementServiceKeyId=“arn:aws:kms:us-west-2:*插入您的帐户id**:alias/aws/s3”
}
}
}
}
};

你说的“不工作”是什么意思?上面说“为存储桶设置默认加密”。您如何检查结果?我正在aws控制台中检查。Bucket属性。我希望在执行我的代码后启用默认加密。我错了吗?非常感谢John Rotenstein。不幸的是,我需要通过lambda函数和c#code来执行这些操作。您看到我的代码有任何问题吗?如果它与我的
s3api
调用,则它应该执行相同的操作。也许您可以尝试强制执行错误,例如输入错误的Bucket名称,以确认它正在执行正确的操作。我的C#代码与您的命令匹配,如果我传递无效的Bucket名称,则会出现错误“指定的Bucket不存在”。当我传递有效的bucket名称时,我得到如下响应。{“ResponseMetadata”:{“RequestId”:“ECEB6BECEB6BECEB6B”,“Metadata”:{“x-amz-id-2”:“sflluybhirg4pwoovgrjgoluybhirg4pwoovgrjgoluybhirg4pwoovgrjgoluybhirg4pwoovgrjgo/A=”},“ContentLength”:0,“HttpStatusCode”:200}会有时间延迟吗?我在几个小时后检查了。明天仍然不会再检查。看起来你做的一切都很好(尽管可能尝试同步而不是异步?)。请尝试获取上图所示的消息。不幸的是,AWSSDK中没有同步方法。但是当我使用wait.Hello.调用时,虽然此代码可能会解决问题,但如何以及为什么解决此问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,您是在回答我的问题为将来的读者解答这个问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
private async void EncryptBucket(string bucketName)
{
    var encryptResquest = new PutBucketEncryptionRequest
    {
        BucketName = bucketName,
        ServerSideEncryptionConfiguration = new ServerSideEncryptionConfiguration()
        {
            ServerSideEncryptionRules = new List<ServerSideEncryptionRule>()
            {
                new ServerSideEncryptionRule()
                {
                    ServerSideEncryptionByDefault = new ServerSideEncryptionByDefault()
                    {
                       ServerSideEncryptionAlgorithm = ServerSideEncryptionMethod.AWSKMS,
                       ServerSideEncryptionKeyManagementServiceKeyId = "arn:aws:kms:us-west-2:**insert your account id**:alias/aws/s3"
                    }
                }
            }
        }
    };
#!/bin/bash

for bucket_name in $(aws s3api list-buckets --query "Buckets[].Name" --output text);
do
        if (aws s3api get-bucket-encryption --bucket ${bucket_name})
        then
                echo "already encrypted"
        else
                echo "doing encrption"
                aws s3api put-bucket-encryption  --bucket ${bucket_name} --server-side-encryption-configuration  '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'
                echo "done encrption"
        fi
done