Amazon Simple Storage Service (Amazon S3) バケットの一部のオブジェクトをパブリックに読み取り可能にしたいのですが、同じバケット内の他のオブジェクトのアクセス許可を変更したくありません。その方法を教えてください。

パブリック読み取りアクセス許可は次のいずれかの方法で有効にできます。

  • Amazon S3 コンソールを使用してオブジェクトのアクセスコントロールリスト (ACL) を更新する
  • AWS コマンドラインインターフェイス (AWS CLI) を使用してオブジェクトの ACL を更新する
  • 指定されたオブジェクトタグへのパブリック読み取りアクセス許可を付与するバケットポリシーを使用する
  • 指定されたプレフィックスへのパブリック読み取りアクセス許可を付与するバケットポリシーを使用する

Amazon S3 コンソールを使用してオブジェクトの ACL を更新する

複数のオブジェクトを同時に公開するには、以下のステップに従います。

  1. Amazon S3 コンソールを開きます。
  2. バケットの一覧から、更新するオブジェクトを含むバケットを選択します。
  3. オブジェクトを含むフォルダに移動します。
  4. オブジェクト一覧から、公開するオブジェクトをすべて選択します。
  5. [アクション] を選択してから、[公開する] を選択します。
  6. [公開する] ダイアログボックスで、オブジェクトの一覧が正しいことを確認します。
  7. [公開する] を選択します。

個別のオブジェクトを公開するには、以下のステップに従います。

  1. Amazon S3 コンソールから、更新するオブジェクトを含むバケットを選択します。
  2. オブジェクトを含むフォルダに移動します。
  3. オブジェクト一覧から、オブジェクトの名前を選択します。
  4. [Routes (ルート)] ビューを選択します。
  5. [パブリックアクセス] で、[全員] をクリックします。
  6. [全員] ダイアログボックスの [オブジェクトへのアクセス] で、[オブジェクトの読み取り] を選択します。
  7. [Save] を選択します。

AWS CLI を使用してオブジェクトの ACL を更新する

Amazon S3 に保存済みのオブジェクトの場合、次のコマンドを実行してパブリック読み取りアクセスについてその ACL を更新できます。

aws s3api put-object-acl --bucket bucket-name --key my_object --acl public-read

または、次のコマンドを実行して、AWS アカウントの所有者にオブジェクトの完全コントロールを付与し、その他には読み取り専用アクセスを許可します。

aws s3api put-object-acl --bucket bucket-name --key my_object --grant-full-control emailaddress=accountowneremail@emaildomain.com --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers

指定されたオブジェクトタグへのパブリック読み取りアクセス許可を付与するバケットポリシーを使用する

重要: 開始する前に、必ず S3 オブジェクトのタグ付けの料金表を参照してください。

最初に、指定されたタグを持つオブジェクトへのパブリック読み取りアクセス許可を付与するバケットポリシーを追加します。たとえば、次のポリシーでは、キーと値のペア public=yes でタグ付けされたオブジェクトへのパブリック読み取りアクセスを許可します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucketname/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/public": "yes"
                }
            }
        }
    ]
}

次に、パブリックに読み取り可能にするオブジェクトにタグを追加します。Amazon S3 コンソールを使用して、オブジェクトタグを追加できます。または、AWS CLI を使用できます。

オブジェクトに既存のタグがあるかどうか確認するには、次の AWS CLI コマンドを実行します。

aws s3api get-object-tagging --bucket bucketname --key my_object

既存のタグがないオブジェクトにタグを追加するには、次のコマンドを実行します。

警告: このコマンドは、既存のオブジェクトタグを上書きします。

aws s3api put-object-tagging --bucket bucketname --key my_object --tagging 'TagSet={Key=public,Value=yes}'

既存のタグがあるオブジェクトにタグを追加するには、次のコマンドを実行します。必ず、新しいオブジェクトタグと、保持する既存のタグを含めます。

aws s3api put-object-tagging --bucket bucketname --key my_object --tagging 'TagSet=[{Key=public,Value=n},{Key=exampletag1,Value=one},{Key=exampletag2,Value=two}]'

オブジェクトタグの追加後に、次のコマンドを実行してすべてのオブジェクトのタグを確認します。

aws s3api get-object-tagging --bucket bucketname --key my_object

指定されたプレフィックスへのパブリック読み取りアクセス許可を付与するバケットポリシーを使用する

指定されたオブジェクトプレフィックスへのパブリック読み取りアクセス許可を付与するには、次のようなバケットポリシーを追加します。

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/publicprefix/*"]
    }
  ]
}

次に、パブリック読み取りアクセス権限のあるプレフィックスにオブジェクトをコピーします。次のようなコマンドを実行して、オブジェクトをプレフィックスにコピーします。

aws s3 cp s3://examplebucket/object s3://examplebucket/publicprefix/object

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 12 月 26 日