web-dev-qa-db-ja.com

AWS IAMポリシーを適用してから有効になるまで、どれくらい待つ必要がありますか?

プログラムでAWS IAMユーザーポリシーを追加および削除していますが、それらのポリシーを適用すると一貫性のない結果が得られます。

たとえば、これは成功する場合としない場合があります(Java 1.6.6 SDK)を使用しています):

  1. 特定のバケットから読み取ることができるユーザーから始めます
  2. ユーザーポリシーをクリアします(ポリシーをリストし、各ポリシーに対して「deleteUserPolicy」を呼び出します)
  3. ユーザーにユーザーポリシーがなくなるまで待ちます(空のセットが返されるまで "listUserPolicies"を呼び出します)
  4. バケットからの読み取りを試みます(これは失敗するはずです)

#3と#4の間にブレークポイントを入れて数秒待機すると、ユーザーはバケットから読み取ることができません。ブレークポイントを削除すると、ユーザーはバケットから読み取ることができますが、これは間違っています。

(これは、Iaddポリシーを追加してからリソースにアクセスするときにも矛盾します)

ポリシーの変更がIAMシステムだけでなく、コンポーネント(S3、SQSなど)に影響を与えた時期を知りたいのですが。これからレシートまたは確認を取得する方法はありますか?それとも、一定の時間待つ必要があるのでしょうか?

ポリシー適用の内部に関するドキュメントはありますか?

(FYI https://forums.aws.Amazon.com/thread.jspa?threadID=140383&tstart= から質問をコピーしました)

43
Ed Norris

「ほぼすぐ」というフレーズは、 IAM FAQ で5回使用されており、もちろんある程度主観的です。

AWSはグローバルに分散されたシステムであるため、変更を伝達する必要があり、システム全体が可用性とパーティションの許容度を優先するように設計されているようです に対して 即時一貫性。

あなたがそれを検討したかどうかはわかりませんが、フローのステップ4で実際にパス、フェイル、パス、パス、フェイル、フェイル、フェイルのシーケンスが表示される可能性の範囲内です失敗...バケットもバケット内のオブジェクトも、実際には単一の場所で単一のものではないため、S3のさまざまなアクションのモデル 混合整合性 によって証明されます。上書きと削除は最終的に一貫性がありますが、バケットまたはオブジェクトに「効果がある」または「ない」というポリシーの概念は、ポリシーの適用自体がほぼ確実であるため、完全に意味のある概念ではありません、分散イベント。

そのようなポリシーの適用を確認するには、AWSが(少なくとも間接的に)そのポリシーの複製されたコピーを持つすべてのエンティティに問い合わせて、現在のバージョンがあるかどうかを確認する機能を公開する必要があります... S3のような大規模なシステムでは控えめに言っても扱いにくい。これは驚異的な 2兆個のオブジェクトを超えており、110万リクエスト/秒を超えるピーク負荷に対応 です。

このフォーラム投稿 に対するAWSの公式の回答は、詳細情報を提供します。

IAMエンティティに加えた変更はすぐにIAM APIに反映されますが、情報がグローバルに反映されるまでにかなりの時間がかかる場合があります。ほとんどの場合、変更は1分以内に反映されます。ネットワークの状態により遅延が増加する場合があり、一部のサービスでは、時間がかかる特定の非資格情報がキャッシュされ、有効期限が切れて交換される場合があります。

その間に何をすべきかについての付随する答えは、「再試行」でした。

ほとんどの場合、変更はすぐに反映されるため、わずかな初期遅延の後、再試行ループをお勧めします。スリープすると、ほとんどの場合、コードの待機時間が長すぎます。まれに例外が発生するのに十分な長さではありません。

レプリケーションシステムのパフォーマンスを積極的に監視します。ただし、S3と同様に、特定の上限ではなく、結果整合性のみを保証します。

48

私はここで科学的な答えははるかに少ないです...思っていたよりも時間がかかっていたのに、物事がうまくいかないと考え続けました。

昨夜、インラインポリシーを追加して、ホストがシステムマネージャーからパラメーターを取得できるようにしました。変更してから数分(おそらく5分程度)、CLIコマンドがまだ失敗していたため、機能していないと思いました。その後、彼らは働き始めました。したがって、それはかなり大きな遅延でした。

ちょうど今、そのポリシーを削除し、ホストがアクセスできなくなるまでに2〜3分かかりました(これをグーグルで検索し、他のページを読むのに十分です)。

一般的に、物事は私にとっても非常にきびきびしていますが、何かがうまくいくはずであると確信しているのにうまくいかない場合は、自分自身に感謝して10分待ちます。残念ながら、これにより、IAMの変更後の自動化が思ったよりも難しくなります!