Amazon S3 バケットポリシーを更新しようとすると「Invalid principal in policy」というエラーが表示されるのはなぜですか?

最終更新日: 2020 年 11 月 4 日

コンソールを使用して Amazon Simple Storage Service (Amazon S3) バケットのバケットポリシーを追加または編集しようとしています。その際、「Error:Invalid principal in policy」というエラーメッセージが表示されます。 どうすれば解決できますか?

解決方法

「Error: Invalid principal in policy」が表示されるのは、ユーザーのバケットポリシーの Principal の値が無効であるときです。このエラーを解決するには、次の点を確認します。

  • バケットポリシーが、Principal エレメントでサポートされる値を使用していること。
  • Principal 値が正しくフォーマットされていること。
  • プリンシパルが AWS Identity and Access Management (IAM) ユーザーまたはロールである場合は、そのユーザーまたはロールが削除されていないことを確認します。
  • バケットが有効な AWS リージョンにあること。

バケットポリシーが、Principal エレメントでサポートされる値を使用していること

バケットポリシーの Principal エレメントを確認します。サポートされている値のいずれかを使用していることをチェックしてください。

警告: "Action:" "Allow" とともに使用すると、"*" Principal 値は、認証済みおよび匿名の両方のすべてのユーザーにアクセス権を付与します。バケットポリシーでこの組み合わせを使用する前に、コンテンツがこのレベルのアクセスをサポートしていることを確認してください。

Principal 値が正しくフォーマットされていること

ポリシーの Principal エレメントが正しくフォーマットされているか確認します。Principal がユーザー 1 名である場合は、エレメントはこのフォーマットを使用する必要があります。

"Principal": {
    "AWS": "arn:aws:iam::111111111111:user/user-name1"
  }

Principal がユーザー 2 名以上であるが、すべてのユーザーでない場合は、エレメントはこのフォーマットを使用する必要があります。

"Principal": {
                "AWS": [
                  "arn:aws:iam::111111111111:user/user-name1",
                  "arn:aws:iam::111111111111:user/user-name2"
                ]
            }

Principal がすべてのユーザーである場合は、エレメントはこのフォーマットを使用する必要があります。

{
  "Principal": "*"
}

IAM ユーザーまたはロールが削除されていないこと

バケットポリシーで IAM ユーザーまたはロールを Principal として使用している場合は、これらの IAM ID が削除されていないことを確認します。削除された IAM ARN を含むバケットポリシーを編集して保存しようとすると、「Invalid principal in policy」というエラーが表示されます。

バケットが有効な AWS リージョンにあること

バケットがデフォルトで無効になっている AWS リージョンにある場合は、リージョンを有効にします。バケットポリシーで IAM ユーザーまたはロールを使用できるようにするには、リージョンを有効にする必要があります。


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


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