Skip to content

Commit 456b1b6

Browse files
zhuxiaolong37huiguangjun
authored andcommitted
add bucket encryption
1 parent 8877f1e commit 456b1b6

File tree

11 files changed

+867
-1
lines changed

11 files changed

+867
-1
lines changed

alibabacloud_oss_v2/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from .models.bucket_archive_direct_read import *
2222
from .models.bucket_cname import *
2323
from .models.bucket_cors import *
24+
from .models.bucket_encryption import *
2425

2526
from .config import Config
2627
from .client import Client

alibabacloud_oss_v2/client.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,3 +1186,45 @@ def option_object(self, request: models.OptionObjectRequest, **kwargs
11861186
"""
11871187
return operations.option_object(self._client, request, **kwargs)
11881188

1189+
1190+
# bucket_encryption
1191+
def put_bucket_encryption(self, request: models.PutBucketEncryptionRequest, **kwargs
1192+
) -> models.PutBucketEncryptionResult:
1193+
"""
1194+
Configures encryption rules for a bucket.
1195+
1196+
Args:
1197+
request (PutBucketEncryptionRequest): Request parameters for PutBucketEncryption operation.
1198+
1199+
Returns:
1200+
PutBucketEncryptionResult: Response result for PutBucketEncryption operation.
1201+
"""
1202+
return operations.put_bucket_encryption(self._client, request, **kwargs)
1203+
1204+
1205+
def get_bucket_encryption(self, request: models.GetBucketEncryptionRequest, **kwargs
1206+
) -> models.GetBucketEncryptionResult:
1207+
"""
1208+
Queries the encryption rules configured for a bucket.
1209+
1210+
Args:
1211+
request (GetBucketEncryptionRequest): Request parameters for GetBucketEncryption operation.
1212+
1213+
Returns:
1214+
GetBucketEncryptionResult: Response result for GetBucketEncryption operation.
1215+
"""
1216+
return operations.get_bucket_encryption(self._client, request, **kwargs)
1217+
1218+
1219+
def delete_bucket_encryption(self, request: models.DeleteBucketEncryptionRequest, **kwargs
1220+
) -> models.DeleteBucketEncryptionResult:
1221+
"""
1222+
Deletes encryption rules for a bucket.
1223+
1224+
Args:
1225+
request (DeleteBucketEncryptionRequest): Request parameters for DeleteBucketEncryption operation.
1226+
1227+
Returns:
1228+
DeleteBucketEncryptionResult: Response result for DeleteBucketEncryption operation.
1229+
"""
1230+
return operations.delete_bucket_encryption(self._client, request, **kwargs)

alibabacloud_oss_v2/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
from .bucket_archive_direct_read import *
1010
from .bucket_cname import *
1111
from .bucket_cors import *
12+
from .bucket_encryption import *
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
from typing import Optional, Any
2+
from .. import serde
3+
4+
5+
class ApplyServerSideEncryptionByDefault(serde.Model):
6+
"""
7+
The container that stores the default server-side encryption method.
8+
"""
9+
10+
_attribute_map = {
11+
'kms_master_key_id': {'tag': 'xml', 'rename': 'KMSMasterKeyID', 'type': 'str'},
12+
'kms_data_encryption': {'tag': 'xml', 'rename': 'KMSDataEncryption', 'type': 'str'},
13+
'sse_algorithm': {'tag': 'xml', 'rename': 'SSEAlgorithm', 'type': 'str'},
14+
}
15+
16+
_xml_map = {
17+
'name': 'ApplyServerSideEncryptionByDefault'
18+
}
19+
20+
def __init__(
21+
self,
22+
kms_master_key_id: Optional[str] = None,
23+
kms_data_encryption: Optional[str] = None,
24+
sse_algorithm: Optional[str] = None,
25+
**kwargs: Any
26+
) -> None:
27+
"""
28+
kms_master_key_id (str, optional): The CMK ID that is specified when SSEAlgorithm is set to KMS and a specified CMK is used for encryption. In other cases, leave this parameter empty.
29+
kms_data_encryption (str, optional): The algorithm that is used to encrypt objects. If this parameter is not specified, objects are encrypted by using AES256. This parameter is valid only when SSEAlgorithm is set to KMS. Valid value: SM4.
30+
sse_algorithm (str, optional): The default server-side encryption method. Valid values: KMS, AES256, and SM4. You are charged when you call API operations to encrypt or decrypt data by using CMKs managed by KMS. For more information, see [Billing of KMS](~~52608~~). If the default server-side encryption method is configured for the destination bucket and ReplicaCMKID is configured in the CRR rule:* If objects in the source bucket are not encrypted, they are encrypted by using the default encryption method of the destination bucket after they are replicated.* If objects in the source bucket are encrypted by using SSE-KMS or SSE-OSS, they are encrypted by using the same method after they are replicated.For more information, see [Use data replication with server-side encryption](~~177216~~).
31+
"""
32+
super().__init__(**kwargs)
33+
self.kms_master_key_id = kms_master_key_id
34+
self.kms_data_encryption = kms_data_encryption
35+
self.sse_algorithm = sse_algorithm
36+
37+
38+
class ServerSideEncryptionRule(serde.Model):
39+
"""
40+
The container that stores server-side encryption rules.
41+
"""
42+
43+
_attribute_map = {
44+
'apply_server_side_encryption_by_default': {'tag': 'xml', 'rename': 'ApplyServerSideEncryptionByDefault', 'type': 'ApplyServerSideEncryptionByDefault'},
45+
}
46+
47+
_xml_map = {
48+
'name': 'ServerSideEncryptionRule'
49+
}
50+
51+
_dependency_map = {
52+
'ApplyServerSideEncryptionByDefault': {'new': lambda: ApplyServerSideEncryptionByDefault()},
53+
}
54+
55+
def __init__(
56+
self,
57+
apply_server_side_encryption_by_default: Optional[ApplyServerSideEncryptionByDefault] = None,
58+
**kwargs: Any
59+
) -> None:
60+
"""
61+
apply_server_side_encryption_by_default (ApplyServerSideEncryptionByDefault, optional): The container that stores the default server-side encryption method.
62+
"""
63+
super().__init__(**kwargs)
64+
self.apply_server_side_encryption_by_default = apply_server_side_encryption_by_default
65+
66+
67+
68+
69+
class PutBucketEncryptionRequest(serde.RequestModel):
70+
"""
71+
The request for the PutBucketEncryption operation.
72+
"""
73+
74+
_attribute_map = {
75+
'bucket': {'tag': 'input', 'position': 'host', 'rename': 'bucket', 'type': 'str', 'required': True},
76+
'server_side_encryption_rule': {'tag': 'input', 'position': 'body', 'rename': 'ServerSideEncryptionRule', 'type': 'xml'},
77+
}
78+
79+
def __init__(
80+
self,
81+
bucket: str = None,
82+
server_side_encryption_rule: Optional[ServerSideEncryptionRule] = None,
83+
**kwargs: Any
84+
) -> None:
85+
"""
86+
bucket (str, required): The name of the bucket.
87+
server_side_encryption_rule (ServerSideEncryptionRule, optional): The request body schema.
88+
"""
89+
super().__init__(**kwargs)
90+
self.bucket = bucket
91+
self.server_side_encryption_rule = server_side_encryption_rule
92+
93+
94+
class PutBucketEncryptionResult(serde.ResultModel):
95+
"""
96+
The request for the PutBucketEncryption operation.
97+
"""
98+
99+
class GetBucketEncryptionRequest(serde.RequestModel):
100+
"""
101+
The request for the GetBucketEncryption operation.
102+
"""
103+
104+
_attribute_map = {
105+
'bucket': {'tag': 'input', 'position': 'host', 'rename': 'bucket', 'type': 'str', 'required': True},
106+
}
107+
108+
def __init__(
109+
self,
110+
bucket: str = None,
111+
**kwargs: Any
112+
) -> None:
113+
"""
114+
bucket (str, required): The name of the bucket.
115+
"""
116+
super().__init__(**kwargs)
117+
self.bucket = bucket
118+
119+
120+
class GetBucketEncryptionResult(serde.ResultModel):
121+
"""
122+
The request for the GetBucketEncryption operation.
123+
"""
124+
125+
_attribute_map = {
126+
'server_side_encryption_rule': {'tag': 'output', 'position': 'body', 'rename': 'ServerSideEncryptionRule', 'type': 'ServerSideEncryptionRule,xml'},
127+
}
128+
129+
_dependency_map = {
130+
'ServerSideEncryptionRule': {'new': lambda: ServerSideEncryptionRule()},
131+
}
132+
133+
def __init__(
134+
self,
135+
server_side_encryption_rule: Optional[ServerSideEncryptionRule] = None,
136+
**kwargs: Any
137+
) -> None:
138+
"""
139+
server_side_encryption_rule (ServerSideEncryptionRule, optional): The container that stores server-side encryption rules.
140+
"""
141+
super().__init__(**kwargs)
142+
self.server_side_encryption_rule = server_side_encryption_rule
143+
144+
class DeleteBucketEncryptionRequest(serde.RequestModel):
145+
"""
146+
The request for the DeleteBucketEncryption operation.
147+
"""
148+
149+
_attribute_map = {
150+
'bucket': {'tag': 'input', 'position': 'host', 'rename': 'bucket', 'type': 'str', 'required': True},
151+
}
152+
153+
def __init__(
154+
self,
155+
bucket: str = None,
156+
**kwargs: Any
157+
) -> None:
158+
"""
159+
bucket (str, required): The name of the bucket.
160+
"""
161+
super().__init__(**kwargs)
162+
self.bucket = bucket
163+
164+
165+
class DeleteBucketEncryptionResult(serde.ResultModel):
166+
"""
167+
The request for the DeleteBucketEncryption operation.
168+
"""

alibabacloud_oss_v2/operations/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
from .bucket_access_monitor import *
88
from .bucket_archive_direct_read import *
99
from .bucket_cname import *
10-
from .bucket_cors import *
10+
from .bucket_cors import *
11+
from .bucket_encryption import *
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# pylint: disable=line-too-long
2+
3+
from ..types import OperationInput, CaseInsensitiveDict
4+
from .. import serde
5+
from .. import serde_utils
6+
from .. import models
7+
from .._client import _SyncClientImpl
8+
9+
10+
def put_bucket_encryption(client: _SyncClientImpl, request: models.PutBucketEncryptionRequest, **kwargs) -> models.PutBucketEncryptionResult:
11+
"""
12+
put_bucket_encryption synchronously
13+
14+
Args:
15+
client (_SyncClientImpl): A agent that sends the request.
16+
request (PutBucketEncryptionRequest): The request for the PutBucketEncryption operation.
17+
18+
Returns:
19+
PutBucketEncryptionResult: The result for the PutBucketEncryption operation.
20+
"""
21+
22+
op_input = serde.serialize_input(
23+
request=request,
24+
op_input=OperationInput(
25+
op_name='PutBucketEncryption',
26+
method='PUT',
27+
headers=CaseInsensitiveDict({
28+
'Content-Type': 'application/xml',
29+
}),
30+
parameters={
31+
'encryption': '',
32+
},
33+
bucket=request.bucket,
34+
op_metadata={'sub-resource': ['encryption']},
35+
),
36+
custom_serializer=[
37+
serde_utils.add_content_md5
38+
]
39+
)
40+
41+
op_output = client.invoke_operation(op_input, **kwargs)
42+
43+
return serde.deserialize_output(
44+
result=models.PutBucketEncryptionResult(),
45+
op_output=op_output,
46+
custom_deserializer=[
47+
serde.deserialize_output_xmlbody
48+
],
49+
)
50+
51+
def get_bucket_encryption(client: _SyncClientImpl, request: models.GetBucketEncryptionRequest, **kwargs) -> models.GetBucketEncryptionResult:
52+
"""
53+
get_bucket_encryption synchronously
54+
55+
Args:
56+
client (_SyncClientImpl): A agent that sends the request.
57+
request (GetBucketEncryptionRequest): The request for the GetBucketEncryption operation.
58+
59+
Returns:
60+
GetBucketEncryptionResult: The result for the GetBucketEncryption operation.
61+
"""
62+
63+
op_input = serde.serialize_input(
64+
request=request,
65+
op_input=OperationInput(
66+
op_name='GetBucketEncryption',
67+
method='GET',
68+
headers=CaseInsensitiveDict({
69+
'Content-Type': 'application/xml',
70+
}),
71+
parameters={
72+
'encryption': '',
73+
},
74+
bucket=request.bucket,
75+
op_metadata={'sub-resource': ['encryption']},
76+
),
77+
custom_serializer=[
78+
serde_utils.add_content_md5
79+
]
80+
)
81+
82+
op_output = client.invoke_operation(op_input, **kwargs)
83+
84+
return serde.deserialize_output(
85+
result=models.GetBucketEncryptionResult(),
86+
op_output=op_output,
87+
custom_deserializer=[
88+
serde.deserialize_output_xmlbody
89+
],
90+
)
91+
92+
def delete_bucket_encryption(client: _SyncClientImpl, request: models.DeleteBucketEncryptionRequest, **kwargs) -> models.DeleteBucketEncryptionResult:
93+
"""
94+
delete_bucket_encryption synchronously
95+
96+
Args:
97+
client (_SyncClientImpl): A agent that sends the request.
98+
request (DeleteBucketEncryptionRequest): The request for the DeleteBucketEncryption operation.
99+
100+
Returns:
101+
DeleteBucketEncryptionResult: The result for the DeleteBucketEncryption operation.
102+
"""
103+
104+
op_input = serde.serialize_input(
105+
request=request,
106+
op_input=OperationInput(
107+
op_name='DeleteBucketEncryption',
108+
method='DELETE',
109+
headers=CaseInsensitiveDict({
110+
'Content-Type': 'application/xml',
111+
}),
112+
parameters={
113+
'encryption': '',
114+
},
115+
bucket=request.bucket,
116+
op_metadata={'sub-resource': ['encryption']},
117+
),
118+
custom_serializer=[
119+
serde_utils.add_content_md5
120+
]
121+
)
122+
123+
op_output = client.invoke_operation(op_input, **kwargs)
124+
125+
return serde.deserialize_output(
126+
result=models.DeleteBucketEncryptionResult(),
127+
op_output=op_output,
128+
custom_deserializer=[
129+
serde.deserialize_output_xmlbody
130+
],
131+
)

0 commit comments

Comments
 (0)