PUT Bucket acl

既存のバケットのACLを設定します。
Bucket作成時にACLを設定する場合、リクエストヘッダーの x-iijgio-acl を使用します。
ACLを設定するにはバケットに対してWRITE_ACP権限が必要です。

 

AllUsersグループ( http://acs.dag.iijgio.com/groups/global/AllUsers )に対してWRITE権限を付与した場合、匿名(anonymous)ユーザを含む全ての利用者が該当Bucketに対してObjectのアップロードができてしまいますのでご注意ください。

 

リクエスト情報

シンタックス

 

PUT /{bucket name}?acl HTTP/1.1
Host: s3api.iot.iij.jp
Date: {date}
Authorization: {signature string}
<AccessControlPolicy>
  <Owner>
    <ID>{owner's canonical user ID}</ID>
    <DisplayName>{owner's email address}</DisplayName>
  </Owner>
  <AccessControlList>
    <Grant>
      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
        <ID>{other account's canonical user ID}</ID>
        <DisplayName>{other account's email address}</DisplayName>
      </Grantee>
      <Permission>{Permission}</Permission>
    </Grant>
  </AccessControlList>
</AccessControlPolicy>

 

リクエストパラメータ

この操作ではリクエストパラメータは使用しません。

リクエストヘッダー
PUT Bucket と同様、リクエストヘッダーを使用して、 Access Control List (ACL)を設定することができます。
ACLを設定する方法として以下の2つが用意されています。ただし、両方を同時に指定することはできません。
Canned ACL で指定する場合


表. PUT Bucket acl リクエストヘッダー(Canned ACL)

HTTPヘッダー説明必須
x-iijgio-acl

バケットのACLを設定する

  • 型: String有効な
  • 値: private | public-read | public-read-write
  • デフォルト値: private
×

 

詳細に指定する場合

より詳細に ACL を設定する場合は以下のリクエストヘッダーを指定してください。 

表. PUT Bucket acl リクエストヘッダー(ACL詳細指定)

HTTPヘッダー説明必須
x-iijgio-grant-read

このバケットにおけるオブジェクト一覧の閲覧を許可するアカウントまたはグループのリスト

  • 型: String
  • デフォルト値: なし
×
x-iijgio-grant-write

このバケットに対してオブジェクトの作成、上書き、削除を許可するアカウントまたはグループのリスト

  • 型: String
  • デフォルト値: なし
×
x-iijgio-grant-read-acp

バケットACLの参照を許可するアカウントまたはグループのリスト

  • 型: String
  • デフォルト値: なし
×
x-iijgio-grant-write-acp

バケットACLの設定を許可するアカウントまたはグループのリスト

  • 型: String
  • デフォルト値: なし
×
x-iijgio-grant-full-control

このバケットに対して全ての権限を付加するアカウントまたはグループのリスト

  • 型: String
  • デフォルト値: なし
×

設定するアカウントまたはグループはそれぞれ type=value 形式で指定します。 type には以下のいずれかを指定できます。

  • emailAddress: アカウントのメールアドレス
  • id: アカウントの Show ID
  • url: グループを示す以下のURL

    • http://acs.dag.iijgio.com/groups/global/AllUsers

      • 匿名ユーザも含め、すべてのユーザを表すグループ

x-iijgio-grant-read ヘッダーを指定する例:

x-iijgio-grant-read: emailAddress="taro@dag.iijgio.com", emailAddress="jiro@dag.iijgio.com"

 

リクエストエレメント
 この操作では以下のリクエストエレメントを使用します。リクエストエレメントを使用する場合は、リクエストヘッダーでACLを指定することはできません。 


表. PUT Bucket acl リクエストエレメント一覧

名前説明必須
AccessControlList

Grantを含むコンテナ

  • 型:Container
  • 親:AccessControlPolicy
×
AccessControlPolicy

AccessControlList、Ownerを含むコンテナ

  • 型:Container
  • 親:なし
×
DisplayName

バケット所有者の表示名または権限付与対象者の表示名

  • 型:String
  • 親:AcessControlPolicy.Owner
    またはAcessControlPolicy.AccessControlList.Grant.Grantee
×
Grant

GranteeとPermissionを含むコンテナ

  • 型:Container
  • 子:Grantee, Permission
  • 親:AcessControlPolicy.AccessControlList
×
Grantee

権限付与の対象についての情報。DisplayName, IDを含むコンテナ

  • 型:Container
  • 子:DisplayName, ID
  • 親:AcessControlPolicy.AccessControlList.Grant
×
ID

バケット所有者のID、または権限付与対象者のID

  • 型:String
  • 親:AcessControlPolicy.Owner
    またはAcessControlPolicy.AccessControlList.Grant.Grantee
×
Owner

バケット所有者の情報。DisplayNameとIDを含むコンテナ

  • 型:Container
  • 子:DisplayName, ID
  • 親:AcessControlPolicy
×
Permission

Granteeに与える権限を指定する

  • 型:String
  • 有効な値:FULL_CONTROL | WRITE | WRITE_ACP | READ | READ_ACP
  • 親:AcessControlPolicy.AccessControlList.Grant
×

Granteeの指定は以下の方法で行うことができます。

ID
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
  <ID>ID</ID>
  <DisplayName>GranteesEmail</DisplayName>
</Grantee>

この例では、ID が有効になるため GranteesEmail は無視されます。

E-mailアドレス
 <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="iijgioCustomerByEmail">
  <EmailAddress>Grantees@email.com</EmailAddress>
</Grantee>
URI
 <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
  <URI>http://acs.dag.iijgio.com/groups/global/AllUsers</URI>
</Grantee>

 

 

レスポンス情報

 
レスポンスヘッダー

この操作では基本レスポンスヘッダーのみ返します。

 
レスポンスエレメント  
この操作はレスポンスエレメントを返しません。
エラー情報

この操作では以下のエラーを返します。

 

表. PUT Bucket acl エラーコード一覧
コードステータス内容
InvalidAccessKeyId403 Forbidden指定のアクセスキーIDを持つユーザが存在しません。
SignatureDoesNotMatch403 Forbidden指定されたリクエストのシグネチャが一致しません。
AccessDenied403 Forbiddenバケットに対するREAD_ACP権限がありません。
NoSuchBucket404 Not Found指定のバケットが存在しません。
AmbiguousGrantByEmailAddress400 Bad Request指定のメールアドレスが、複数のアカウントに関連しています。
MalformedACLError400 Bad Request指定の XML は well-formed ではない、またはこちらが提供しているスキーマに合っていません。

 

サンプル

バケットのACLを設定するサンプル

リクエスト
PUT /quotes?acl HTTP/1.1
Host: s3api.iot.iij.jp
Content-Length: 214
Date: Wed, 25 Nov 2009 12:00:00 GMT
Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
<AccessControlPolicy>
  <Owner>
    <ID>8a6925ce4adf588a4f21c32aa379004fef</ID>
    <DisplayName>BucketOwnersEmail@dag.iijgio.com</DisplayName>
  </Owner>
  <AccessControlList>
    <Grant>
      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
        <ID>8a6925ce47f21c32aa379004fef</ID>
        <DisplayName>BucketOwnersEmail@dag.iijgio.com</DisplayName>
      </Grantee>
      <Permission>FULL_CONTROL</Permission>
    </Grant>
  </AccessControlList>
</AccessControlPolicy>
レスポンス
HTTP/1.1 200 OK
x-iijgio-id-2: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo
x-iijgio-request-id: 236A8905248E5A01
Date: Wed, 01 Mar 2009 12:00:00 GMT