スキップしてコンテンツを表示

OpenSearch Serverless クラスターまたはダッシュボードに接続する際、403 または 401 エラーが発生する場合のトラブルシューティング方法を教えてください。

所要時間2分
0

Amazon OpenSearch Serverless クラスターに対して OpenSearch API コマンドを実行したり、ダッシュボードにアクセスしようとしたりする際、403 または 401 エラーが発生します。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

403 Forbidden エラー

403 Forbidden エラーメッセージは通常、AWS Identity and Access Management (IAM) ID で正しいアクセス許可が欠けているか、リクエストの署名が正しくない場合に発生します。

クライアントで詳細ログ記録を有効にしたり、IAM コンソールの [ネットワーク] タブを選択したりする際、"x-aoss-response-hint': 'X01:gw-helper-deny」というエラーメッセージが表示されることがあります。

OpenSearch Dashboards と OpenSearch Serverless データプレーン API へのアクセスでは、IAM ID のアクセス許可ポリシーにアクション aoss:DashboardsAccessAll および aoss:APIAccessAll を含めてください。ポリシーの例については、「OpenSearch API 操作を使用する」を参照してください。

OpenSearch Serverless データプレーン API へのアクセスにおいて、リクエストの署名が誤っている場合にも 403 Forbidden エラーが発生する可能性があります。IAM アクセス許可が適切であることを確認した後、クライアントと OpenSearch API がどのように通信しているかをレビューします。

コードのシンプルなバージョンを記述する方法については、「Amazon OpenSearch Serverless コレクションにデータを取り込む」を参照してください。

curl を使用して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスからエンドポイントをテストします。

レコードをインデックスに取り込む curl コマンドの例

curl -XPOST \
    —user "$AWS_ACCESS_KEY_ID":"$AWS_SECRET_ACCESS_KEY" \
    —aws-sigv4 "aws:amz:us-east-1:aoss" \
    —header "x-amz-content-sha256: $REQUEST_PAYLOAD_SHA_HASH" \
    —header "x-amz-security-token: $AWS_SESSION_TOKEN" \
    "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/movies-index/_doc" \
    -H "Content-Type: application/json" -d '{"title": "Shawshank Redemption"}'

注: アクセスキー ID、シークレットキー、セッショントークンの例は、実際の値に置き換えます。これらの値を取得するには、AWS CLI コマンド get-session-token を実行します。

ペイロードを送信する場合は、次のコマンドを実行し、ヘッダーの一部としてペイロードの Secure Hash Algorithm 256-bit (SHA-256) を生成します。

echo -n '{"title": "Shawshank Redemption"}' | shasum -a 256

GitHub のウェブサイトにある awscurl を使用してもかまいません。awscurl は EC2 インスタンスプロファイルなどのデフォルトの認証情報を使用するため、ペイロードをヘッダーとしてハッシュする必要はありません。

awscurl リクエストの例

awscurl --service aoss --region us-east-1 -XPOST \
    "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/movies-index/_doc" \
    -H "Content-Type: application/json" -d '{"title": "Shawshank Redemption"}'
awscurl --service aoss --region us-east-1 -XGET \
    "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/_cat/indices"

注: us-east-1 を実際の AWS リージョンに、例に記載されたエンドポイントを実際のエンドポイントに置き換えます。

詳細ログ記録を使用し、上記のヘッダーがサービスに送信されるリクエストに含まれていることを確認します。誤った署名は、ヘッダー値が誤っている場合に発生します。詳細ログ記録を使用しても、収集エンドポイント、リージョン、およびサービスが正しいことを確認できます。

その他の 403 エラー

実行するアクションによっては、他の 403 エラーメッセージが表示される場合があります。

インデックス固有の取り込み操作では、「Authorization failure for the following indices: [index/collectionname/indexname]」という形式のエラーメッセージが表示されることがあります。

検索リクエストでは、「all shards failed」、「Bad Authorization」などのエラーメッセージが表示されることがあります。

インデックス固有ではない操作では、「User does not have permissions for the requested resource」に類似したエラーメッセージが表示されることがあります。

これらのエラーを解決するには、コレクションのデータアクセスポリシーに、コレクションとインデックスリソースに対する正しいアクセス許可が含まれていることを確認してください。また、ポリシーの Principal セクションに正しい IAM ID が含まれていることを確認してください。

データアクセスポリシーの構文に関する詳細については、「ポリシーの構文」を参照してください。

401 unauthorized エラー

401 エラーメッセージは通常、ネットワークポリシーが OpenSearch Serverless API またはダッシュボードへのアクセスを拒否した場合に発生します。

クライアントで詳細ログ記録を有効にしたり、ブラウザで開発者コンソールの [ネットワーク] タブを閲覧したりする際、「x-aoss-response-hint': 'X01:network-policy-deny」というエラーメッセージが表示されることがあります。

パブリックインターネットから OpenSearch Serverless API とダッシュボードにアクセスするには、ネットワークポリシーでパブリックアクセスを有効にします。

JSON 形式のネットワークポリシー例

[
  {
    "Rules": [
      {
        "Resource": [
          "collection/collectionname"
        ],
        "ResourceType": "dashboard"
      },
      {
        "Resource": [
          "collection/collectionname"
        ],
        "ResourceType": "collection"
      }
    ],
    "AllowFromPublic": true
  }
]

注: collectionname は、実際のコレクション名に置き換えます。

API とダッシュボードへのアクセスをプライベートにするには、OpenSearch Serverless 用のクライアント VPC に VPC エンドポイントを作成します。

JSON 形式のネットワークポリシー例

[
  {
    "Rules": [
      {
        "Resource": [
          "collection/collectionname"
        ],
        "ResourceType": "dashboard"
      },
      {
        "Resource": [
          "collection/collectionname"
        ],
        "ResourceType": "collection"
      }
    ],
    "AllowFromPublic": false,
    "SourceVPCEs": [
      "vpce-0c9xxxxxxxxxxa680"
    ]
  }
]

注: collectionname は、実際のコレクション名に置き換えます。

ネットワークポリシーのその他の例については、「Amazon OpenSearch Serverless に対するネットワークアクセス」を参照してください。

別の VPC から OpenSearch Serverless ドメインにアクセスするには、VPC に OpenSearch Serverless VPC エンドポイントを作成します。詳細については、「インターフェイスエンドポイント (AWS PrivateLink) を使用して Amazon OpenSearch Serverless にアクセスする」を参照してください。

注: クライアントに VPC の OpenSearch Serverless API エンドポイントを呼び出させることもできます。ダッシュボードには、パブリックインターネットにアクセスするブラウザからアクセスできます。

社内ネットワークからダッシュボードにプライベートにアクセスするには、インバウンド DNS リゾルバーエンドポイントを使用します。DNS クエリを行うと、正しいプライベート IP アドレスを返します。詳細については、「VPC エンドポイントを使用して Amazon OpenSearch Serverless コレクションにアクセスする」を参照してください。

関連情報

OpenSearch Serverless ダッシュボードにアクセスしてコレクションを閲覧する際のトラブルシューティング方法を教えてください

AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ