すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSS SDK for PHPを使用してバケットのACLを管理する

最終更新日:Nov 07, 2024

バケットは、Object Storage Service (OSS) に保存されているオブジェクトのコンテナです。 OSS内のすべてのオブジェクトはバケットに保存されます。 このトピックでは、バケットのアクセス制御リスト (ACL) を設定およびクエリする方法について説明します。

使用上の注意

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョン、エンドポイント、オープンポート」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。

  • バケットのACLを設定するには、oss:PutBucketAcl権限が必要です。 バケットのACLを照会するには、oss:GetBucketAcl権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

バケットのACLの設定

次の表に、バケットACLを示します。

ACL

説明

移動方法

プライベート

バケット内のオブジェクトに対する読み取りおよび書き込み権限を持つのは、バケット所有者と許可されたユーザーのみです。 他のユーザーはバケット内のオブジェクトにアクセスできません。

OssClient::OSS_ACL_TYPE_PRIVATE

公開読み取り

バケット内のオブジェクトに対する読み取りおよび書き込み権限を持つのは、バケット所有者と許可されたユーザーのみです。 他のユーザーには、バケット内のオブジェクトに対する読み取り権限のみがあります。 バケットACLをこの値に設定する場合は注意してください。

OssClient::OSS_ACL_TYPE_PUBLIC_READ

パブリック読み取り /書き込み

すべてのユーザーは、バケット内のオブジェクトに対する読み取りおよび書き込み権限を持っています。 バケットACLをこの値に設定する場合は注意してください。

OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE

次のサンプルコードは、バケットのACLを設定する方法の例を示しています。

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
$provider = new EnvironmentVariableCredentialsProvider();
// In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the name of the bucket. 
$bucket= "yourBucketName";
// Set the ACL of the bucket to private. 
$acl = OssClient::OSS_ACL_TYPE_PRIVATE;
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->putBucketAcl($bucket, $acl);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");

バケットのACLの照会

次のサンプルコードは、バケットのACLを照会する方法の例を示しています。

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
$provider = new EnvironmentVariableCredentialsProvider();
// In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the name of the bucket. 
$bucket= "yourBucketName";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // Query the ACL of the bucket. 
    $res = $ossClient->getBucketAcl($bucket);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
print('acl: ' . $res);

関連ドキュメント

  • バケットのACLを管理するために使用される完全なサンプルコードについては、GitHubをご覧ください。

  • バケットのACLを設定するために呼び出すことができるAPI操作の詳細については、「PutBucketAcl」をご参照ください。

  • バケットのACLを照会するために呼び出すAPI操作の詳細については、「GetBucketAcl」をご参照ください。