Amazon S3 バケットに特定のファイルタイプのみがアップロードされるようにする方法を教えてください。

最終更新日: 2021 年 7 月 22 日

特定のファイルタイプのみを Amazon Simple Storage Service (Amazon S3) バケットに保存する必要があります。バケットがそのようなファイルタイプのみを受け入れるようにアップロードを制限する方法を教えてください。

解決方法

次のことを実行するステートメントをバケットポリシーに追加します。

  • 必要なファイルタイプの拡張子を持つオブジェクトに対してのみ s3:PutObject アクションを許可します。
  • 必要なファイルタイプの拡張子を持たないオブジェクトに対する s3:PutObject アクションを明示的に拒否します。
    注: この明示的な拒否ステートメントにより、Amazon S3 リソースへのフルアクセス権を持つユーザーに対してファイルタイプ要件が適用されます。

例えば、次のバケットポリシーでは、exampleuser への s3:PutObject アクションが、.jpg.png、または .gif のファイル拡張子を持つオブジェクトに対してのみ許可されます。

警告: このバケットポリシーの例には、明示的な拒否ステートメントが含まれています。ユーザーが指定された条件を満たしていない場合、バケットポリシーを入力したユーザーでも、バケットへのアクセスが拒否されることがあります。そのため、バケットポリシーを保存する前に、慎重に確認する必要があります。誤ってバケットをロックした場合は、「誤って全ユーザーの Amazon S3 バケットへのアクセスを拒否してしまいました。」をご参照ください。アクセスを再取得するにはどうすればよいですか? をご参照ください。

{
  "Version": "2012-10-17",
  "Id": "Policy1464968545158",
  "Statement": [
    {
      "Sid": "Stmt1464968483619",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/exampleuser"
      },
      "Action": "s3:PutObject",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
      ]
    },
    {
      "Sid": "Stmt1464968483619",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "NotResource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
      ]
    }
  ]
}

注意:

  • 最初の Principal 値については、アップロードのアクセス許可を付与するユーザーの Amazon リソースネーム (ARN) を列挙します。
  • Resource 値および NotResource 値については、必ず DOC-EXAMPLE-BUCKET を自身のバケットの名前で置き換えます。
  • バケットポリシーでリソースを指定すると、バケットポリシーの評価では大文字と小文字が区別されます。NotResources3:PutObject アクションを拒否するバケットポリシー "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg" では、"my_image.jpg" をアップロードできます。ただし、"my_image.JPG" をアップロードしようとすると、Amazon S3 はアクセス拒否エラーを返します。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?