Este tópico descreve como gerenciar as listas de controle de acesso (ACLs) de objetos usando o OSS SDK for Python 2.0.
Observações de uso
O código de exemplo neste tópico usa o ID da região
cn-hangzhou, correspondente à região China (Hangzhou). Por padrão, o acesso aos recursos de um bucket ocorre via endpoint público. Para acessar os recursos do bucket a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para mais informações sobre as regiões e endpoints compatíveis com o OSS, consulte Regiões e endpoints.Para definir as permissões de acesso de um objeto, é necessária a permissão
oss:PutObjectAcl. Para obter essas permissões, é necessária a permissãooss:GetObjectAcl. Para mais detalhes, consulte Conceder políticas personalizadas a um usuário RAM.
Método
Configure a ACL de um objeto
put_object_acl(request: PutObjectAclRequest, **kwargs) → PutObjectAclResult
Consulte a ACL de um objeto
get_object_acl(request: GetObjectAclRequest, **kwargs) → GetObjectAclResult
Parâmetros da solicitação
|
Nome do parâmetro |
Tipo |
Descrição |
|
request |
PutObjectAclRequest |
Os parâmetros da solicitação. Para mais informações, consulte PutObjectAclRequest |
|
GetObjectAclRequest |
Os parâmetros da solicitação. Para mais informações, consulte GetObjectAclRequest |
Parâmetros de resposta
|
Tipo |
Descrição |
|
PutObjectAclResult |
O valor de retorno. Para mais informações, consulte PutObjectAclResult |
|
GetObjectAclResult |
O valor de retorno. Para mais informações, consulte GetObjectAclResult |
Para a definição completa do método de configuração da ACL de um arquivo, consulte put_object_acl.
Para a definição completa do método de obtenção da ACL de um arquivo, consulte get_object_acl.
Tipos de ACL
A tabela a seguir descreve as ACLs disponíveis para configuração em um objeto:
|
ACL |
Descrição |
Valor da ACL |
|
Herdar do bucket |
Os arquivos herdam as permissões de acesso do bucket. |
default |
|
Privado |
Somente o proprietário do arquivo e usuários autorizados podem ler e gravar no arquivo. Outros usuários não têm acesso. |
private |
|
Leitura pública |
Apenas o proprietário e usuários autorizados podem ler e gravar no arquivo. Demais usuários podem somente ler o arquivo. Use esta permissão com cautela. |
public-read |
|
Leitura e escrita públicas |
Todos os usuários podem ler e gravar no arquivo. Use esta permissão com cautela. |
public-read-write |
A ACL de um objeto tem precedência sobre a ACL do bucket que o contém. Por exemplo, se a ACL de um bucket for privada, mas a de um objeto dentro dele estiver definida como leitura e escrita públicas, todos os usuários terão permissão para ler e gravar nesse objeto. Quando a ACL de um objeto não é configurada explicitamente, ela assume automaticamente a mesma ACL do bucket onde está armazenado.
Código de exemplo
Veja abaixo o código de exemplo para configurar e obter a ACL de um objeto.
import argparse
import alibabacloud_oss_v2 as oss
# Create a command-line argument parser.
parser = argparse.ArgumentParser(description="put object acl sample")
# Add required parameters: region, bucket name, object key, and access control list (ACL).
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--key', help='The name of the object.', required=True)
parser.add_argument('--acl', help='Specify the access permission ACL for the object.', required=True)
def main():
# Parse command-line arguments.
args = parser.parse_args()
# Load access credential information from environment variables.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Use the default configurations of the SDK.
cfg = oss.config.load_default()
# Set the credential provider.
cfg.credentials_provider = credentials_provider
# Set the region provided by the user.
cfg.region = args.region
# If an endpoint is provided, set the endpoint in the configuration.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Create an OSS client.
client = oss.Client(cfg)
# Set the ACL of the object.
result = client.put_object_acl(oss.PutObjectAclRequest(
bucket=args.bucket, # The bucket name.
key=args.key, # The object key.
acl=args.acl, # The new ACL value.
))
# Print the output information after setting the ACL.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' version id: {result.version_id},'
)
# Obtain and print the current ACL settings of the object.
result = client.get_object_acl(oss.GetObjectAclRequest(
bucket=args.bucket,
key=args.key,
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' acl: {result.acl},'
f' version id: {result.version_id},'
)
# Call the main function when this script is run directly.
if __name__ == "__main__":
main()
Referências
Para acessar o código de exemplo completo sobre como definir a ACL de um arquivo, consulte put_object_acl.py.
Para acessar o código de exemplo completo sobre como obter a ACL de um arquivo, consulte get_object_acl.py.