PUT Object acl

既存のオブジェクトのACLを設定します。
この操作を行うユーザは、オブジェクトに対しWRITE_ACP権限を付与されていなければなりません。

 

リクエスト情報

シンタックス
PUT /{bucket name}/{object key}?acl HTTP/1.1
Host: s3api.iot.iij.jp
Date: {date}
Authorization: {authorization string}

<AccessControlPolicy>
  <Owner>
    <ID>{owner's show 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 show ID}</ID>
        <DisplayName>{other account's email address}</DisplayName>
      </Grantee>
      <Permission>{Permission}</Permission>
    </Grant>
  </AccessControlList>
</AccessControlPolicy>

 

リクエストパラメータ

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

リクエストヘッダー

この操作では基本リクエストヘッダーに加え、以下のヘッダーを使用します。
この操作は、PUT Object と同様にアカウントやグループ(匿名ユーザなど)に対して Access Control List (ACL) を設定することができます。

ACLを設定する方法として以下の2つが用意されています。ただし、両方を同時に指定することはできません。

 

Canned ACL で指定する場合

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

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

オブジェクトのACLを設定する

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

 

詳細に指定する場合

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

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

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

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

  • 型: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 Object 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を含むコンテナ

  • 型:Containe
  • r子: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 Object acl エラーコード一覧

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

 

サンプル 

既存のオブジェクトに新たなアクセス許可を追加するリクエストのサンプルです。ShowID 8a6925ce4adf588a45379004fef のアカウントに対して FULL_CONTROL 権限を与えます。

リクエスト
PUT /bucket/my-image.jpg?acl HTTP/1.1
Host: s3api.iot.iij.jp
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: IIJGIO 02236Q3V0WHVSRW0EXG2:0RQf4/cRonhpaBX5sCYVf1bNRuU=
Content-Length: 124

<AccessControlPolicy>
  <Owner>
    <ID>8a6925ce4adf588e97f21c32aa379004fef</ID>
    <DisplayName>CustomersName@dag.iijgio.com</DisplayName>
  </Owner>
  <AccessControlList>
    <Grant>
      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
        <ID>8a6925ce4adf588a45379004fef</ID>
        <DisplayName>CustomerName@dag.iijgio.com</DisplayName>
      </Grantee>
      <Permission>FULL_CONTROL</Permission>
    </Grant>
  </AccessControlList>
</AccessControlPolicy>
レスポンス
HTTP/1.1 200 OK
x-iijgio-id-2: eftixk72aD6Ap51T9AS1ed4OpIszj7UDNEHGran
x-iijgio-request-id: 318BC8BC148832E5
Date: Wed, 28 Oct 2009 22:32:00 GMT
Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
Content-Length: 0
Connection: close
Server: s3api.iot.iij.jp